图解密码技术-第三章知识点总结(对称密码)
第三章:对称密码(共享密钥密码)
1.比特序列密码:0和1排列而成的比特序列。编码:比特序列的操作称为编码。
2.XOR(异或):运算符号为 ⨁ \bigoplus ⨁,与加法运算相似,但是不需要进位。
比特序列之间的XOR运算。
由于两个相同的数进行XOR运算的结果一定为0,因此如果将A ⨁ \bigoplus ⨁B的结果再与B进行 XOR运算,则结果会变回A。也就是两个公式中的B会相互抵消。
∙ \bullet ∙ 将明文A用密钥B进行加密、得到密文A ⨁ \bigoplus ⨁B
∙ \bullet ∙ 将密文A ⨁ \bigoplus ⨁B用密钥B进行解密,得到明文A
3.一次性密码本:一次性密码本在理论上无法被破译,就算得到了与明文一致的字符串,但是也无法证明得到的是正确的明文。是无条件安全的。原理是将明文与一串随机的比特序列进行XOR运算
对称密码算法:
DES(Data Encryption Standard)
DES是一种将64比特的明文加密成64比特的密文的对称密码算法。密钥长度为56比特,但是每隔7比特会设置一个用于错误检查的比特,所有总体长度64比特。被美国及其其他国家的政府和银行等广泛使用。
分组密码:DES以64比特明文为一个单位进行加密,这个单位称为分组。以分组为单位进行的处理的密码算法称为分组密码。
DES结构:又称Feistel网络,加密的各个步骤为round(轮),整个加密过程就是进行若干次轮的循环,加密和解密可以用完全相同的结构来实现。DES是一种16轮循环的Feistel网络。
一轮具体计算:
(1)将输入的数据等分为左右两个部分。
(2)将输入的右侧直接发送到输出的右侧。
(3)将输入的右侧发送到轮函数
(4)轮函数根据右侧数据和子密钥,计算出一串看上去是随机的比特序列。
(5)将上一步得到的比特序列与左侧数据进行XOR运算,并将结果作为加密后的左侧。
每轮都使用不同的子密钥。轮函数的作用,根据右边和子密钥生成对左侧进行加密的比特序列,是密码系统的核心。
∙ \bullet ∙ 加密时无论使用任何函数作为轮函数都可以正确解密。
∙ \bullet ∙ 加密和解密可以用完全相同的结构来实现。
差分分析、线性分析
差分分析:是针对分组密码的分析方法。思路是改变一部分明文并分析密文如何随之改变,通过分析密文的改变中产生的偏差,获得破译密码的线索。
线性分析:思路是将明文和密文的一些对应比特进行XOR并计算其结果为零的概率。
三重DES
将DES重复三次所得到的一种算法,称为TDES、3DES。
三重DES的加密机制:加密 解密 加密。如果所有密钥都使用相同的比特序列,则其结果与普通的DES是等价的。
Rijndael——新一代的标准密码算法AES
AES(Advanced Encryption Standard)选拔出的分组密码算法。
Rijndael分组长度和密钥长度:32比特、128-256比特范围内。AES标准中,分组长度固定为128比特,密钥长度只有128、192和256比特三种。
加密和解密:
Rijndael多轮构成,每一轮分为SubBytes(逐字节替换)、ShiftRows(平移行)、MixColumns(混合列)和AddRoundKey(与轮函数进行XOR)共4个步骤。使用SPN结构。
设输入分组为128比特,也就是16字节。
(1)SubBytes逐字节替换:以每个字节的值(0-255的任意值)为索引,从一张拥有256个值的替换表中查找对应值的处理。
(2)ShiftRows平移行:以4字节为单位的行,按章一定规则向左平移,且每一行平移的字节数是不同的。
(3)MixColumns混合列:对一个4字节的值进行比特运算,将其变为另外一个4字节值。
(5)AddRoundKey与轮函数进行XOR:将MixColumns的输出与轮函数进行XOR,即进行AddRoundKey处理。
Rijndael解密过程是按照相反的顺序进行的。