对称加密技术(下)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
F ( X i1 , X i , X i1 , X i2, rki1 ) X i1 T ( X i X i1 X i2 rki1 ) 得到第一轮的X4输出状态为:27 fa d3 45。
(3)按照(1)(2)步骤计算,能够求出每轮的 轮密钥和后32位的输出状态:
rk[ 0] = f12186f9 X[ 4] = 27fad345
2020/3/7
Ch3(2)-对称加密技术
16
• (1)第一轮轮密钥rk0的计算过程如下: • ①首先,将加密密钥按字分为四组 ,按照
公式:
(K0 , K1, K2 , K3 ) ( 0 FK0 ,1 FK1, 2 FK2 , 3 FK3 )
计算出:
K0=1010 0010 1001 0010 1111 1111 1010 0001 K1=1101 1111 0000 0001 1111 1110 1011 1111 K2=1001 1001 1010 0001 0010 1011 0000 1111 K3=1100 0100 0010 0100 0001 0000 1100 1100
Ch3(2)-对称加密技术
2
SMS4加密
• 加密过程: 每个分组128位明文分为4个32位的字,经 过32轮加密变换,每一轮的加密变换为: 首先循环左移,最后一个字经过轮函数F得 到。32轮的加密变换结束后,将4个字反序 变化后,得到128位密文。如图3.31所示。
2020/3/7
Ch3(2)-对称加密技术
非线性
8位输入a0 8位输入a1 8位输入a2 8位输入a3
变换
S盒 (置换)
S盒 (置换)
S盒 (置换)
S盒 (置换)
8位输出b0
8位输出b1 8位输出b2
输出字B
8位输出b3
2020/3/7
Ch3(2)-对称加密技术
9
S盒
• S盒为固定的8比特输入8比特输出的置换, 记为S(.)。见图3.34所示。S盒中的数据都 是十六进制表示的,它的置换规则是:
32 个固定参数CKi,i=0,1,2…31,其16进制表示
00070e15, 1c232a31, 383f464d, 545b6269, 70777e85, 8c939aa1, a8afb6bd, c4cbd2d9, e0e7eef5, fc030a11, 181f262d, 343b4249, 50575e65, 6c737a81, 888f969d, a4abb2b9, c0c7ced5, dce3eaf1, f8ff060d, 141b2229, 30373e45, 4c535a61, 686f767d, 848b9299, a0a7aeb5, bcc3cad1, d8dfe6ed, f4fb0209, 10171e25, 2c333a41, 484f565d, 646b7279 产生规则:CKij= (4i+j)×7(mod 256) ,i=0,1,2…31,j=0,1,…3 。
2020/3/7
Ch3(2)-对称加密技术
17
②然后,求出T‘变换的输出: 根据公式
得到A的十六进制为:82 83 cb 69 将输出结果A分为四组进入S盒,通过查表,输出B的十六 进制为:8a d2 41 22。 L' () ( 13) ( 23) =0101 0011 1011 0011 0111 1001 0101 1000 ③最后,利用公式
3
2020/3/7
Ch3(2)-对称加密技术
4
SMS4加密
• 1. 基本运算
:表示32比特异或运算
i:表示32比特循环左移i位
• 2. SMS4每轮结构
上一轮的数据 (X i1, X i , X i1, X i2 ),i=1,2…32。循环左移32位 后经过加密函数(轮函数),得左移后最后32位数据
rk[ 1] = 41662b61 X[ 5] = a18b4cb2
rk[ 2] = 5a6ab19a X[ 6] = 11c1e22a
rk[ 3] = 7ba92077 X[ 7] = cc13e2ee
rk[ 4] = 367360f4 X[ 8] = f87c5bd5
rk[ 5] = 776a0c61 X[ 9] = 33220757
• 以输入的前半字节为行号,后半字节为列 号,行列交叉点出的数据即为输出。
• 举例:若输入“ef”,则经S盒后的值为表中 第e行和第f列的值,S(ef)= 84。
2020/3/7
Ch3(2)-对称加密技术
10
2020/3/7
Ch3(2)-对称加密技术
11
(2)线性变换L • 非线性变换的输出是线性变换L的输入 • 32位输入、32位输出。 • 设输入位B,输出位C,表为:
2020/3/7
Ch3(2)-对称加密技术
19
rk[11] = 7ee55b57 X[15] = 907127fa rk[12] = 6988608c X[16] = 8b952b83 rk[13] = 30d895b7 X[17] = d42b7c59 rk[14] = 44ba14af X[18] = 2ffc5831 rk[15] = 104495a1 X[19] = f69e6888 rk[16] = d120b428 X[20] = af2432c4 rk[17] = 73b55fa3 X[21] = ed1ec85e rk[18] = cc874966 X[22] = 55a3ba22 rk[19] = 92244439 X[23] = 124b18aa rk[20] = e89e641f X[24] = 6ae7725f rk[21] = 98ca015a X[25] = f4cba1f9 rk[22] = c7159060 X[26] = 1dcdfa10 rk[23] = 99e1fd2e X[27] = 2ff60603 rk[24] = b79bd80c X[28] = eff24fdc rk[25] = 1d2115b0 X[29] = 6fe46b75 rk[26] = 0e228aeb X[30] = 893450ad rk[27] = f1780c81 X[31] = 7b938f4c rk[28] = 428d3654 X[32] = 536e4246 rk[29] = 62293496 X[33] = 86b3e94f rk[30] = 01cf72e5 X[34] = d206965e rk[31] = 9124a012 X[35] = 681edf34
• SMS4算法是国家商用密码管理办公室于 2006年1月公布的用于无线局域网产品的分 组对称密码算法,是国内官方公布的第一 个商用密码算法
• SMS4分组长度和密钥长度为128比特 • 数据处理单位:字(32位),字节(8位) • 密码算法结构:采用32轮非线性迭代结构
解密算法与加密算法相同
2020/3/7
2020/3/7
Ch3(2)-对称加密技术
20
SMS4解密
• SMS4的解密变换与加密变换结构相同,不 同的仅是轮密钥的使用顺序。
• 加密时轮密钥的使用顺序为:
(rk 0 , rk1 ,..., rk 31 )
• 解密时轮密钥的使用顺序为:
(rk 31 , rk 30 ,... rk 0 )
2020/3/7
① (K0,K1,K2,K3)=(MK0⊕FK0,MK1⊕FK1,MK2⊕FK2,MK3⊕FK3) ② For i=0,1…,30,31 Do
rki= Ki+4= Ki⊕T’(Ki+1 ⊕Ki+2 ⊕ Ki+3 ⊕ CKi) • 说明:T’ 变换与加密函数中的T 基本相同,只将其中的线
性变换L 修改为以下:L’
X i3 F ( X i1, X i , X i1,X i2, rki1 ) ,此轮输出 ( X i , X i1 X i2 , X i3 ) 作为下一轮迭代的输入 ,迭代32轮后 做反序变换,得到 密文。
SMS4每轮的结构如图3.32所示
2020/3/7
Ch3(2)-对称加密技术
5
加密函数F
2020/3/7
Ch3(2)-对称加密技术
6
• 3. 加密函数F
• 输入数据: X 0 , X 1 , X 2 , X 3 , 128位,四个32位字。 • 输入轮密钥:rk ,32位字。 • 输出数据: Y0 ,Y1 ,Y2 ,Y3 • 加密函数F为 :
F ( X i1, X i , X i1, X i2, rki1 ) X i1 T ( X i X i1 X i2 rki1 )
其中:合成置换T是一个可逆变换,由非线性变换 和线性
变换L构成。
F的计算过程:输入数据的Xi-1与合成置换T的输出做异或 运算即可 。
合成置换T如图3.33所示。
2020/3/7
Ch3(2)-对称加密技术
7
2020/3/7
Ch3(2)-对称加密技术
8
(1)非线性变换:32位字的非线性变换
输入字A
rk i K i4 K i T ' (K i1 K i2 K i3 CK i )
得到rk0=1111 0001 0010 0001 1000 0110 1111 1001, 十六进制表示为:f1 21 86 f9。
2020/3/7
Ch3(2)-对称加密技术
18
(2)根据第一轮轮密钥rk0的计算结果,将128位的 明文同样分组,利用加密函数
C=L(B) • 运算规则:
C=L(B) =B⊕(B<<<2)⊕(B<<<10)⊕(B<<<18)
⊕(B<<<24)
2020/3/7
Ch3(2)-对称加密技术
12
SMS4密钥扩展算法
• 输入加密密钥:MK=(MK0,MK1,MK2,MK3) • 输出轮密钥:rki ,i=0,1…,30,31 • 中间数据:Ki,i=0,1…,34,35 • 密钥扩展算法:
Ch3(2)-对称加密技术
21Байду номын сангаас
SMS4的安全性
• SMS4算法是由国家专业机构设计,自2006年公 布之后,SMS4分组密码引起了国内外学术界和 产业界的极大关注,先后有学者研究了SMS4对 差分故障攻击、积分攻击、不可能差分密码分析、 代数攻击、矩阵攻击、差分密码分析、线性密码 分析等分析方法的安全性。至今为止,从专业机 构对SMS4进行了密码分析来看,SMS4算法还是 安全的,虽然有学者提出21轮SMS4进行了差分 密码分析和差分能量分析攻击方面面临威胁,但 尚需经过实践检验。
rk[ 6] = b6bb89b3 X[ 10] = 77f4c297
rk[ 7] = 24763151 X[ 11] = 7a96f2eb
rk[ 8] = a520307c X[ 12] = 27dac07f
rk[ 9] = b7584dbd X[ 13] = 42dd0f19
rk[10] = c30753ed X[14] = b8a5da02
第3章 对称加密技术(2)
• 主要知识点: --对称密码模型 --密码攻击 --古典加密技术 --数据加密标准 --高级加密标准 --中国商用密码算法 -SMS4 --流密码 --分组密码工作模式 -- 随机数的产生 -- 对称密码的密钥分配
2020/3/7
Ch3(2)-对称加密技术
1
我国商用密码算法--SMS4
2020/3/7
Ch3(2)-对称加密技术
15
• 例3.11 :按照 SMS4加密算法,对一组明 文: 01 23 45 67 89 ab def fe dc ba 98 76 54 32 10 用密钥加密一次,加密密钥: 01
23 45 67 89 ab def fe dc ba 98 76 54 32 10 。其中,数据采用16进制表示。求每一 轮的轮密钥,每轮最后32位的输出状态以 及最终的密文。
L’ (B)=B⊕(B<<< 13)⊕(B<<< 23)
轮密钥rki生成方法如图3.35所示
2020/3/7
Ch3(2)-对称加密技术
13
2020/3/7
Ch3(2)-对称加密技术
14
SMS4密钥扩展算法
(1)系统参数 FK • 在密钥扩展中使用一些常数
FFKK03==((AB32B710B2A2CD6C)),。FK1=(56AA3350),FK2=(677D9197 ), (2)固定参数CK