第三章对称密码之分组密码

转:https://www.cnblogs.com/WittPeng/p/8978737.html

对称密码之分组密码

对称密码
  • 特点:加密速度快、安全性好、基于标准化··· ···
  • 应用:数据保密传输、加密存储··· ···

分组密码概述

  • 将明文消息编码表示后的二进制序列,划分为固定大小的块
  • 加密和解密是一一映射的
  • 设计应满足要求
  1. 分组足够长
  2. 密钥长度足够长
  3. 由密钥确定的置换算法足够复杂
  4. 加密和解密运算简单
  5. 一般无数据扩展
  • 理想分组密码
  • 分组密码的设计原则:扩散、混乱
  • 乘积密码体制:在密钥控制下扩散和混乱两种密码操作的多次迭代
  • 迭代结构
  1. Feistel密码
  2. SP网络
组成 S盒(代换):混乱作用,P盒(置换):扩散作用
效果 雪崩效应
设计原则
  1. 分组长度
  2. 密钥长度
  3. 轮函数F的设计原则:基本原则:非线性、可逆性、雪崩效应,性能指标:安全性、速度、灵活性
  4. 子密钥的生成方法
  5. 迭代的轮数

DES算法

  • 特点
分组长度 64位
密码体制 对称密码体制,加密和密钥使用同一密钥,仅子密钥编排顺序不同
有效密钥长度 56位(原64位的每个第8位为奇偶校验位,可忽略)
迭代结构 SP网络结构,共16轮
优点 只使用了标准的算术和逻辑运算
  • 流程

                                                                

①64位明文->②IP置换->

③分为两部分L0和R0:L0为下一轮的R1;R0和第一次置换得到的子密钥混合经过F函数得到下一轮的L1

->④置换IP-1->⑤得到64位密文

F函数:

扩展置换 8*4的矩阵 每行的头尾各补齐一位,变成8*6的矩阵
Ki子密钥的生成算法 将56位的有效的密钥压缩成48位
代换盒(S盒)

步骤说明:b1b6确定行,b2b3b4b5确定列,将48位变成32位

特点:

  1. 非线性
  2. 每一行包括所有16种四位二进制码
  3. 两个输出相差1bit,输出至少相差2bit
  4. ··· ···
置换运算(P盒)  
  • 安全性
  • 缺陷
  1. 互补性:

              

2.弱密钥:4个弱密钥,12个半弱密钥

3.迭代轮数

4.密钥长度

  • 应对方法:多重DES
    • 二重DES
    • 三重DES
  • DES的分析方法:
    • 差分分析:由明文差和密文差求系数a,当轮数低于8轮时,个人计算机几分钟即可攻破
    • 线性分析

AES算法

  • 特点介绍
    • 分组长度:128位
    • 密钥长度和对应轮数:128位10轮,192位12轮,256位14轮
    • 过程:前9轮 字节代换、行移位、列混合和轮密钥加,第10轮 字节代换、行位移和轮密钥加

       字节代换:S盒定义方法

      (1)初始化S盒,将第m行n列的元素初始化为0xmn

      (2)将S盒中的每个字节映射为它在有限域GF(28)中的逆,0x00映射为自身。AES使用Z2[x]上的不可约多项式m(x)=x8+x4+x3+x+1来构造GF(28)。求逆元素的方法是使用Z2[x]上的扩展的欧几里得算法。

       行位移:简单的左循环位移操作,第n行左移n位

       列混合 :通过矩阵相乘来实现

       轮密钥加:

         密码扩展算法:

           1.将初始密钥输入到一个4*4的矩阵中,每列的四个字节组成一个字,依次命名为w[0],w[1],w[2],w[3]

           2.扩充40个新列,构成总共44列的扩展密钥数组

               产生方式为

      其中,T的组成为:1.字循环(将一个字中的4个字节循环左移一个字节)

                                2.字节代换(使用S盒)

                                3.轮常量异或(将前两步的结果同轮常量Rcon[j]进行异或,其中j表示轮数)

    • AES的结构
      • AES结构的一个显著特征是它不是Feistel结构
      • 输入的密钥被扩展成由44个32位字节所组成的数组w[i]
      • AES结构由四个阶段组成
      • 仅仅在轮密钥加阶段使用密钥,并在算法的开始和结束都是用轮密钥加阶段
      • 每个阶段均可逆,解密算法和加密算法并不一样
      • 加密和解密过程的最后一轮只包含3个阶段,这是由AES的特定结构所决定的,而且也是密码算法可逆性所要求的
  • AES的安全性和可用性
    • AES和DES的对比
  相同 不同
DES
  1. 二者的轮函数都由3层构成,非线性结构、线性混合层、子密钥异或,只是顺序不同;
  2. AES的子密钥加对应于DES的S盒之前的子密钥异或;
  3. AES的列混合运算目的是让不同的字节相互影响,而DES中F函数的输出与左边一半数据相加也有类似的效果;
  4. AES的非线性运算是字节代换,对应于DES中唯一的非线性运算S盒;
  5. 行移位运算保证了每一行的字节不仅仅影响其他行对应的字节,而且影响其他行所有的字节,这与DES中的置换P相似
密钥长度固定56位 面向比特的运算 加密和解密运算一致
AES 密钥长度可以是128位、192位、256位 面向字节的运算

加密和解密运算不一致,加密器不能同时用做解密器

典型分组密码

国际数据加密算法(IDEA)

  • 工作原理:明文64位,密钥128位
  • 轮函数:分为8轮,每轮输入6个子密钥和4个状态块
  • 输出变换

                                                      

  • 解密过程
  • 子密钥生成

RC6

  • 加密过程
  • 解密过程
  • 密钥扩展方案

Skipjakc算法

Callmellia算法

工作模式

电子密码本(ECB)模式

  • 工作模式

  • 特点:
    • 分组数量庞大,易受统计分析攻击、分组重放攻击和代换攻击。
    • 明文或者密文出现一位的错误,只会影响一个分组,不会是错误扩散。
    • 是最快最简单的工作模式
  • 应用:数据随机且较少的情况

密码分组链接(CBC)模式

  • 工作模式

    

  • 特点
    • 克服了ECB模式的缺点
    • 虽然加密会使错误扩散,但解密的过程又进行了抵消,最后出错的仍是一个分组(密文的错误会由一组变成两组)
    • 若文档中的一个分组和他前面的一个分组和另一个文档相同,则这个分组会加密出相同的结果,所以引进了初始化向量IV,使头文件不同(IV不用加密,可以和明文一起传递)
  • 应用:大型文件的加密,是软件加密的最好选择

密码反馈(CFB)模式

  • 工作模式

其中,加密算法也能用于解密。加密是对移位寄存器的操作,不对明文加密

  • 特点
    • 面向比特流进行操作
    • 可用于同步序列密码,加密和解密可同时进行
    • 有CBC的优点
    • 对信道错误较敏感且会进行传播,但解密后会纠正。对明文只会影响一个分组,对密文的错误影响只有寄存器推出错误密文后,才能阻止扩散
    • 数据加密速率低
  • 应用:加密字符序列

输出反馈(OFB)模式

  • 工作模式

  • 特点
    • 改进了CFB,错误不会传播,但密文的错误难以发现
    • 不具有自同步的能力
    • 初始向量IV不需要保密
  • 应用:在极易出错的环境选用的模式,但需要有高速同步机制

计数器(CTR)模式

原文地址:https://www.cnblogs.com/69-year-old-comrade/p/15313727.html