现代密码学:第30讲 SM4算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
现代密码学第三十讲SM4算法信息与软件工程学院
第三十讲SM4算法
SM4术语说明
SM4轮函数
SM4密钥扩展
SM4概况
•SM4分组密码算法是国家密码管理局于2006年1月6日公布的无线局域网产品使用的密码算法,是国内官方公布的第一个商用密码算法。
•SM4是一个分组密码算法,分组长度和密钥长度均为128比特。
加密算法与密钥扩展算法都采用32轮非线性迭代结构。
•它的解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。
SM4算法的术语说明
•
表示e-比特的向量集,中的元素称为字节,中的元素称为字
•S 盒是一个固定的8比特输入8比特输出的置换,记为•SM4中的采用了两个基本运算:,32比特异或;,32比特
循环左移i 位。
82
Z 322
Z (.)
Sbox ⊕i <<<e Z 2
SM4算法的术语说明(续)
•SM4算法的加密密钥长度为128比特,表示为,
其中,为字。
•轮密钥为,
,为字。
轮密钥由加密密钥通过密钥扩展算法生成。
•
为系统参数,
•为固定参数,用于密钥扩展算法。
)
,,,(3210MK MK MK MK MK =i MK 3,2,1,0=i ),,,(3110rk rk rk i rk ),,,(3210FK FK FK FK FK =),,,(3110CK CK CK CK =
第三十讲SM4算法
SM4术语说明
SM4轮函数
SM4密钥扩展
SM4加密算法整体结构
SM4 的轮函数
•设输入为,轮密钥为,则轮
函数为:
•其中称为合成置换,是一个由非线性变换和一个线性变换复合而成的可逆变换,即
4322
321)(),,,(Z X X X X i i i i ∈+++32
2Z rk i ∈322
322:Z Z T →(.))
((.)τL T =i 4123123(,,,,)(),0,1,
,31
i i i i i i i i i i X F X X X X rk X T X X X rk i +++++++==⊕⊕⊕⊕=
X i X i+1X i+2
X i+3
rk i
a 0a 1a 2a 3
b 0b 1b 2b 3
s
s
s
s
B<<<2B<<<10B<<<18
B<<<24
C
X i+4
A τ
B
函数T
L
SM4的S盒
y
0123456789a b c d e f
x 0d690e9fe cc e13d b716b614c228fb2c05 12b679a762a be04c3aa44132649860699 29c4250f491ef987a33540b43ed cf ac62 3e4b31c a9c908e89580df94fa758f3f a6 44707a7fc f37317ba83593c19e6854f a8 5686b81b27164da8b F8eb0f4b70569d35 61e240e5e6358d1a225227c3b01217887 7d40046579f d327524c3602e7a0c4c89e 8ea bf8a d240c738b5a3f7f2ce f96115a1 9e0ae5d a49b341a55ad933230f58c b1e3 a1d f6e22e8266ca60c02923ab0d534e6f b d5db3745de fd8e2f03ff6a726d6c5b51 c8d1b af92bb dd bc7f11d95c411f105a d8 d0a c13188a5cd7b bd2d74d012b8e5b4b0 e8969974a0c96777e65b9f109c56e c684 f18f07d ec3a dc4d2079ee5f3e D7cb3948
SM4的S 盒说明
•非线性变换τ中所使用的S 盒是一个具有很好密码学特性的、由8比特输入产生8比特输出的置换
•在设计原理上,SMS4比AES 的S 盒设计多了一个仿射变换
•即•SMS4有很高的灵活性,所采用的S 盒可以灵活地被替换,以应对突发性的安全威胁。
算法的32轮迭代采用串行处理,这与AES 中每轮使用代换和混淆并行地处理整个分组有很大不同。
B B Ax A y ++=-1
)(
SM4的加密算法和解密算法
•设明文输入为,密文为,轮密钥为。
加密变换为:
•SM4算法的解密变换和加密变换结构相同,不同的仅是轮密钥的使用顺序。
•加密时轮密钥的使用顺序为,•解密时轮密钥的使用顺序为。
4322
3210)
(),,,(Z X X X X ∈43223210)(),,,(Z Y Y Y Y ∈322Z rk i ∈i 4123123(,,,,)(),0,1,,31
i i i i i i i i i i X F X X X X rk X T X X X rk i +++++++==⊕⊕⊕⊕=),,,(),,,(323334353210X X X X Y Y Y Y =)
,,,(3110rk rk rk ),,,(03031rk rk rk
SM4解密的合理性
4012331012331353433323131343332313433323131
(,,,,)
()
()
()()Y F Y Y Y Y rk Y T Y Y Y rk X T X X X rk X T X X X rk T X X X rk X ==⊕⊕⊕⊕=⊕⊕⊕⊕=⊕⊕⊕⊕⊕⊕⊕⊕=)
,,,(),,,(323334353210X X X X Y Y Y Y =i 4123123(,,,,)(),0,1,,31
i i i i i i i i i i X F X X X X rk X T X X X rk i +++++++==⊕⊕⊕⊕=353134333231()
X X T X X X rk =⊕⊕⊕⊕
第三十讲SM4算法
SM4术语说明
SM4轮函数
SM4密钥扩展
SM4的密钥扩展算法
•设加密密钥,其中为字。
•轮密钥为。
•轮密钥的生成方法具体为:),,,(3210MK MK MK MK MK =i MK )
,,,(3110rk rk rk )
,,,(),,,(332211003210FK MK FK MK FK MK FK MK K K K K ⊕⊕⊕⊕=)
(3214i i i i i i i CK K K K T K K rk ⊕⊕⊕'⊕==++++
SM4的密钥扩展算法(续)
)
,,,(),,,(332211003210FK MK FK MK FK MK FK MK K K K K ⊕⊕⊕⊕=MK 0
MK 1MK 1MK 1
K 0K 1K 2K 3
FK 1FK 2FK 3FK 0
K i+4K i K i+1K i+2
K i+3
ck i a 0a 1a 2a 3b 0b 1b 2b 3
s s s s B<<<13B<<<23
C
A
τB rk i )
(3214i i i i i i i CK K K K T K K rk ⊕⊕⊕'⊕==++++函数T。