It's our wits that make us men.

2019/4/30 《图解密码技术》第三章

Posted on By LuLu

图解密码技术(第三章)

  • DES data encryption standard,分组密码 block cipher,模式mode,轮round,子密钥 subkey,
  • 选择明文攻击CPA chosen plaintext attack

DES

  • 之前DES被用于美国和其他国家的政府银行等,但由于DES的密文可以在短时间内被破译,因此除了用它来解密之前的密文之外,不再使用DES了

加密和解密

DES是一种将64比特的明文加密成64比特的密文的对称密码算法,它的密钥长度是56比特。密钥的规格是64比特,但是每隔7比特会设置一个用于错误检查的比特,因此实际上是56比特。

DES是以64比特的明文为一个单位来进行加密的,这64个比特的单位称作分组,以分组为单位进行处理的密码算法称作分组密码。

img

DES的结构(Feistel网络)

DES的基本结构是由Horst Feistel设计的,因此也成为Feistel网络、Feistel结构或者Feistel密码。

在Feistel网络中,加密的各个步骤称为轮,整个加密过程就是进行若干次的轮的循环。DES是一种16轮循环的Feistel网络。

img

  • 图示介绍
    • 子密钥是本轮加密所使用的密钥,每一轮都需要使用一个不同的子密钥
    • 轮函数的作用是根据右侧和子密钥生成对左侧进行加密的比特序列,它是密码系统的核心,将轮函数的输出与左侧进行XOR运算,其结果就是加密后的左侧
  • 计算步骤
    1. 将输入的数据分成左右两个部分
    2. 将输入的右侧直接发送到输出的右侧
    3. 将输入的右侧发送给轮函数
    4. 轮函数根据右侧数据和子密钥,计算出一串看上去是随机的比特序列
    5. 将上一步得到的比特序列与左侧数据进行XOR运算,并将结果作为加密后的左侧

img

  • Feistel网络的解密操作只要按照相反的顺序来使用子密钥就可以完成了,而Feistel网络本身的结构,在加密和解密时都是完全相同的。
  • Feistel的性质:
    • Feistel网络的轮数可以任意增加
    • 加密时无论使用任何函数作为轮函数都可以正确解密,无需考虑是否存在反函数
    • 加密和解密可以用完全相同的结构来实现。没有进行处理 的右半部分,是解密过程中必需的信息

差分分析与线性分析

  • 差分分析思路:改变一部分明文并分析密文如何随之改变
  • 线性分析思路:将明文和密文的一些对应比特进行XOR并计算其结果为零的概率

  • 差分分析和线性分析前提:假设密码破译者可以选择任意明文并得到其加密的结果,这种攻击方式称为选择明文攻击