RISC-V MCU中文社区

【分享】 国密系列算法简介及SM4算法原理介绍

发表于 全国大学生集成电路创新创业大赛 2023-05-24 22:36:46
0
1988
3

报名编号:CICC2353

称团队名:不划水队

所选杯赛:芯来RISC-V


一、 国密系列算法简介

国家商用密码算法(简称国密/商密算法),是由我国国家密码管理局制定并公布的密码算法标准。其分类1所示:


                      图1 国家商用密码算法分类


就各种商用密码的用途而言,如下所示:

非对称加密算法:SM2算法可用于电子认证服务;SM9算法可用于各种互联网新兴应用。

  • 对称加密算法:SM1算法未公布,以IP核的形式存在于芯片中,可用于电子政务、电子商务及国民经济等领域;SM4算法可用于无线局域网产品;SM7算法可用于身份识别、票务、支付与通卡类业务。ZUC算法可用于移动通信网络。
  • 密码杂凑算法:SM3算法可用于数字签名和认证、消息认证码生成等。
  • 国际密码算法的安全性难以保证,而国产密码算法实现了密码算法的自主可控,对于保障我国的国家安全具有重要意义。目前,我国大力推广国密算法的应用,并涌现出一系列国家商用密码应用的优秀案例。
  • 本文将对SM4算法的原理进行介绍,以便在后续分享中分析AESSM4算法的共同特点和可重构方法。


二、 SM4算法原理

2所示为128位输入、128位密钥和128位输出的SM4算法流程图,共有32轮操作。SM4在每轮操作中对明文处理使用了Feistel结构(分组密码中的一种对称结构)其中密钥扩展部分也使用了Feistel结构,所以对数据和密钥的处理流程极为相似下面对SM4加密过程进行阐述:

对于密钥扩展部分,采用固定参数FK对128位原始密钥进行异或,然后将结果分为K0、K1、K2和K3四个32位数据。用32位固定参数Rcon对K0、K1和K2进行异或,然后将结果分成4个8位数据,分别输入到4个S盒中。将4个S盒的4个结果合并为一个32位数据,循环左移13位和23位。将原始和偏移后的数据与K3进行异或,得到下一轮的K0。

与密钥扩展部分相似,对于Feistel功能部分,将128位块划分为32位数据,即X0,X1,X2,X3。首先将X0、X1和X2与一个32位的轮密钥K0进行异或,得到一个32位的结果,将其分成8位的数据,输入到S盒中进行替换。将S的四个结果合并成一个32位的输出数据,分别循环左移2、10、18和24位,得到四个32位数据。将4个数据与原始数据进行异或操作,得到一个结果,完成Feistel操作。最后将X3与32位Feistel结果进行异或,得到下一轮X0。

对于解密过程,与加密过程的唯一区别在于解密过程中轮密钥按相反顺序使S盒不取逆)



三、 参考资料

《科普一下SM系列国密算法》-山西省国家密码管理局

http://www.sxgmj.gov.cn/f/view-8-5bb335e08eb6426c96e875792c57888c.html

《信息安全技术 SM4分组密码算法-国家标准全文公开系统

https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7803DE42D3BC5E80B0C3E5D8E873D56A

“首届全国商用密码应用优秀案例”授牌仪式在成都举行》-中国工业互联网研究院

https://www.china-aii.com/newsinfo/5703282.html


往期分享贴链接:

【1】蜂鸟E203协处理器EAI指令及接口_全国大学生集成电路创新创业大赛_RISC-V论坛讨论_RISC-V MCU中文社区 (rvmcu.com)

【2】加密算法的应用_全国大学生集成电路创新创业大赛_RISC-V论坛讨论_RISC-V MCU中文社区 (rvmcu.com)





喜欢3
用户评论
wenxin_yang

wenxin_yang 实名认证

人是铁 饭是钢

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板