报名编号:CICC2353
称团队名:不划水队
所选杯赛:芯来RISC-V杯
一、 国密系列算法简介
国家商用密码算法(简称国密/商密算法),是由我国国家密码管理局制定并公布的密码算法标准。其分类1所示:
图1 国家商用密码算法分类
就各种商用密码的用途而言,如下所示:
非对称加密算法:SM2算法可用于电子认证服务;SM9算法可用于各种互联网新兴应用。
二、 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)