第三章 分组密码

第三章 分组密码

作用

  1. 伪随机数生成器

  2. 流密码

  3. 消息认证码(MAC)和杂凑函数

  4. 消息认证技术、数据完整性机制、实体认证协议以及单钥数字签字体制的核心组成部分。

评判指标

  1. 安全性
  2. 运行速度
  3. 存储量(程序的长度、数据分组长度、高速缓存大小)
  4. 实现平台(硬、软件、芯片)
  5. 运行模式

当加密前后文本长度有变化,分为数据扩展、数据压缩的分组密码

!安全性设计原则

混淆原则

混淆原则就是将密文、明文、密钥三者之间的统计关系和代数关系变得尽可能复杂,使得敌手即使获得了密文和明文,也无法求出密钥的任何 信息;即使获得了密文和明文的统计规律,也无法求出明文

扩散原则

明文的统计规律和结构规律散射到相当长的一段统计中去。也就是说让明文中的每一位影响密文中的尽可能多的位,或者说让密文中的每一位都受到明文中的尽可能多位的影响。

分组密码算法应满足的要求

  • 分组长度n要足够
    • ​ 防止明文穷举攻击法奏效。
  • 密钥量要足够
    • ​ 尽可能消除弱密钥并使所有密钥同等地好,以防止密钥穷举攻击奏效。
  • 由密钥确定置换的算法要足够复杂:
    • ​ 充分实现明文与密钥的扩散和混淆,没有简单的关系可循,要能抗击各种已知的攻击。
  • 加密和解密运算简单:
    • ​ 易于软件和硬件高速实现。
  • 数据扩展:
    • ​ 一般无数据扩展,在采用同态置换和随机化加密技术时可引入数据扩展。
  • 差错传播尽可能地小。
    • 一个密文分组的错误尽可能少的影响其他密文分组的解密

!分组密码的工作模式

1.电码本(ECB)模式

2.密码分组链接(CBC)模式

3.密码反馈(CFB)模式

4.输出反馈(OFB)模式

  1. 计数器模式

电码本(ECB)模式

密钥相同,相同明文分组对应相同密文分组

密码分组链接(CBC)模式

先将明文分组与上一次的密文块进行按比特异或,然后再进行加密处理

明文块的统计特性得到了隐蔽、具有有限的(两步)错误传播特性、密文出现丢块和错块不影响后续密文块的解密,若从第t块起密文块正确,则第t+1个明文块就能正确求出

应用:利用CBC模式实现报文的完整性认证——认证码

密码反馈CFB(Cipher Feedback)模式

若待加密消息需按字符、字节或比特处理时,可采用CFB模式。

错误的传播:一个或多个比特错误出现在任一个r比特的密文组中会影响这个组和后继n/rl个密文组的解密。

错误恢复:CFB和CBC相似,也是自同步的,但它需有[n/r个密文组才能还原。

输出反馈OFB(Output Feedback)模式

输出反馈模式OFB模式在结构上类似于CFB模式,但其反馈的内容是DES的输出而不是密文

特点:

密钥流是独立于明文的、可以出错恢复,但丢失bit过后无法恢复了

计数器模式

利用固定密钥k对自然数序列1,2,3,…,n, …加密,将得到的密文分组序列看作密钥流序列,按加法密码的方式与明文分组逐位异或的一种方式

利用这种方式可以产生伪随机数序列,其伪随机特性远比计算机产生的随机数的性质好

分组密码设计的两种主要结构类型:SP网络和Feistel结构

SP网络( 代换-置换 Substitution-Permutation )

如果明文和密文的分组长都为n比特,则明文的每一个分组都有2n个可能的取值。不同可逆变换的个数有2n!个

密码设计中需要先定义代换集S,而后还需定义解密变换集,即逆代换网络S^-1

Feistel网络

其思想实际上是Shannon提出的利用乘积密码实现混淆和扩散思想的具体应用。

Feistel密码解密的正确性的证明

就是证明上面的这个式子

以加密和解密时的式子相等,依次证明:

容易证明这种对应关系在16轮中每轮都成立。一般地,加密过程的第i轮有:

即:解密过程是加密过程的逆序

DES算法

研发目的:要求信息作业标准化

DES是第一代公开的、完全说明细节的商业级现代算法,并被世界公认,后面跟不上时代了,遂退役

概述

  • 分组长度为64 bits
  • 密钥长度为64 bits,有8 bits奇偶校验,有效密钥长度为56 bits。
  • 算法主要包括:初始置换IP、16轮迭代的乘积变换、逆初始置换IP^-1以及16个子密钥产生器。

填充(Padding)

给定加密消息的长度是随机的,按64 bit分组时,最后一组消息长度可能不足64 bit。可以填充一些数字,通常用最后8bit来表示填充占有的字节数

DES的安全性

较为一致的看法是DES的密钥短了些。IBM最初向NBS提交的建议方案采用112 bits密钥,但公布的DES标准采用64 bits密钥。有人认为NSA故意限制DES的密钥长度。

序号、值为20的数-----值还是20,序号变化了

初始置换IP 逆初始置换IP^-1

DES的轮函数及密钥编排

虚线处详解

选择扩展运算E

原本是4列,但两边各加1列,然后每一行向前、向后拓展

S盒(选择压缩运算S)

6bit --- 4bit

S盒例题:

比如输入的6比特是101100,那我们将最高位和最低为比特拿出来构成一个数,这个数就是S盒的行号,而中间4个比特构成S盒的列号,在这里列号是2,行号是6,其输出就是第2行第6列的数2,转换为四位二进制数就是0010,注意这里的行列号都是由零开始的。

DES密钥

双重DES

使用多个密钥利用DES对明文进行多次加密。

使用多重DES可以增加密钥量,从而大大提高抵抗穷举密钥搜索攻击的能力

中间相遇攻击可以破解双重DES:

一边对头部加密,一边对尾部解密,套出相匹配的值,若两者结果相等就成了,则找到目标密钥k1k2(将所有的k1k2的可能值放进去一个个试)

3DES

称其为加密-解密-加密方案,简记为EDE(encrypt-decrypt-encrypt)。

此方案仍有足够的安全性

AES算法简介

AES指的是Advanced Encryption Standard即高级加密标准。因为DES不行了淘汰了,AES闪亮登场

  • Rijndael没有采用Feistel结构
  • AES明文分组固定为128比特。
  • 密钥长度可变,可独立指定为128、192、256比特。
  • 状态:算法中间的结果也需要分组,称之为状态
  • 种子密钥:以字节为元素的矩阵阵列描述,阵列为4行,列数Nk为密钥长度除32

S

SM4

SM4 - Dinesaw - 博客园 (cnblogs.com)

posted @ 2022-05-26 19:56  Dinesaw  阅读(286)  评论(0编辑  收藏  举报