密码学之分组密码算法
- 格式:pdf
- 大小:3.18 MB
- 文档页数:9
密码学之分组密码算法
密码学之分组密码算法
简介
分组密码算法(Block Cipher Algorithm)是将输⼊数据划分成固定长度的组进⾏加密和解密的⼀类对称密码算法。其安全性主要以来于密钥,通信双⽅使⽤相同的密钥加密和解
密。其优势有速度快,易于标准化和便于软硬件实现等特点。
下标集:
₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ⁻ ¹ ₋
DES加密算法
DES简介
于1977年公布的第⼀个被⼴泛应⽤的商⽤数据加密算法,在抵抗了⼆⼗余年的密码分析后,其安全性已⽆法得到保障。所以在1998年12⽉以后就不再使⽤DES加密算法。但是
其衍⽣的三重DES加密算法⽬前还有其应⽤场景。
加密过程
算法总览
DES加密算法就如下图所⽰。
其输⼊为64位(bit)的明⽂,使⽤56位(bit)的密钥,但是附加了8位奇偶校验位(位于8,16,...,64位)组合成64位密钥。在64位密钥的控制下,最终产⽣了64(bit)的密⽂。
在下图中
X=X₁X₂X₃...X₆₄即为输⼊明⽂,在经过初始转换IP的换位处理后,得到⼀个乱序的明⽂组,并将其分为
L₀和
R₀两部分,每部分各32位。⽽
K₁K₂...K₁₆则是⽣成由初始密钥⽣
成的轮密钥,长度有48位。
其次进⾏如下图所⽰与密钥有关的16轮迭代变换。对R₀在进⾏⼦密钥K₁控制下的f变换,其得到的结果与L₀作逐位异或后,作为下⼀轮的R₁,⽽R₀则作为下⼀轮的L₁。在经过16
轮如上步骤,最后经过逆初始置换P⁻¹处理后得到密⽂Y=Y₁Y₂Y₃...Y₆₄初始置换IP与逆初始置换IP⁻¹
IP操作是对原明⽂的位次顺序进⾏打乱,⽽逆初始置换IP⁻¹是IP操作的⼀个逆操作,其⽬的是为了撤销之前的初始置换操作。其实这两种操作对密码⽅⾯的作⽤并不⼤。
其具体操作正如表格中所⽰,在如下表格中依次填⼊该顺序位次下的bit位,最终组成新的位次顺序。如第⼀位的的内容即为原明⽂中第58位处的内容。
轮密钥的产⽣
初始密钥K在经过选择置换PC_1后同样分为两个部分
C₀和
D₀,每部分各28位(bit),该选择置换实际是在除去了奇偶校验位的置换。随后分别对
C₀和
D₀进⾏循坏移位操作
LSᵢ⽽LSᵢ
到底循坏左移⼏位,取决于i的值,i=1,2,9和16时移动⼀个位置,否则移动两位。
Kᵢ = PC_2(CᵢDᵢ),⽽⼦密钥Kᵢ则是对CᵢDᵢ进⾏固定置换PC_2后得到,置换PC_2就是真正的选择函数了。只会选出其中的48位,所以得到的⼦密钥是48位的。
在经过16轮的迭代,就可以⽣成16组⼦密钥。⾄i=16时,刚好左旋了28⽐特,所以C₀=C₁₆且D₀=D₁₆。
加密函数f
加密函数f是整个DES算法的核⼼,是其中最重要的部分,也是其安全性的主要体现。
其过程如下所⽰,第⼀个输⼊是长度为32位的⽐特串
Rᵢ₋₁,在经过位选择函数E的次序置换后,与第⼆个输⼊48位的⽐特串
Kᵢ按模2加运算得到P,即
P=Kᵢ+Rᵢ₋₁,将得到的结果写成
连续的8个6⽐特串,再对每个6⽐特串使⽤S盒输出,经S盒输出后6⽐特串变为4⽐特串,组合为32位⽐特串再经过置换运算P,就是得到的结果。
8个6⽐特串,每个⽐特串都会对应⼀个S盒,⼀共有⼋个S盒,S盒是整个DES算法中唯⼀的⾮线性部件,当然也是整个算法的安全性所在。
那么这个s盒是如何使⽤的呢,我们举个例⼦,加⼊
S₁输⼊的6⽐特串为
011001,设为
b₀b₁b₂b₃b₄b₅,所以⾏选为01(第⼀个和第六个字符b₀b₅),也就是1,列选为1100(第⼆三四五个字符
b₁b₂b₃b₄),也就是12。查找S盒中的S₁
结果为9,转换为⼆进制1001,也就得到了我们的结果。
也就是说,对于输⼊
b₀b₁b₂b₃b₄b₅,b₀b₅作为⾏值,b₁b₂b₃b₄作为列值
解密过程
DES的解密过程和加密过程⼤致相同,只不过在16次迭代中使⽤⼦密钥的次序正好相反。第⼀次就是使⽤⼦密钥K₁₆
三重DES
当DES的密钥长度已被证明已经不能满⾜当前安全的要求,但为了充分利⽤DES软硬件资源,⼈们开始对DES提出各种改进措施。⼀种简单⽅案就是使⽤多重DES。
多重DES就是使⽤多个密钥利⽤DES对明⽂进⾏多次加密。采纳较多的是三重DES。
假设k₁k₂k₃是3个长度为56bit的密钥,明⽂给定为x,则密⽂y为
y = DES₃(DES₂⁻¹(DES₁(x)))
加⼊密⽂为y,解密出x为
x = DES₁⁻¹(DES₂(DES₃⁻¹(y)))