APP下载

SM4分组密码算法可编程实现研究*

2018-07-09何卫国

通信技术 2018年6期
关键词:引擎密钥指令

李 军,何卫国

(成都三零嘉微电子有限公司,四川 成都 610041)

0 引 言

近年来,信息安全的重要性日益突出,要求安全系统具有灵活的自适应能力和柔性的安全服务提供能力[1]。在此背景下,成都三零嘉微电子有限公司自主研发了一款面向对称密码可编程实现的对称密码引擎SCE(Symmetric Cipher Engine)。SCE采用超长指令字结构(VeryLong Instruction Word,VLIW),适用于分组密码算法、序列密码算法和杂凑密码算法等应用。通过研究基于SCE的SM4分组密码算法的不同实现方案,探究基于SCE提高对称密码算法加解密性能的相关思路。

1 SM4密码算法介绍

SM4分组密码算法[2]是我国第一个公开的商密分组密码算法,分组长度为128 bit,密钥长度为128 bit。加密算法与密钥扩展算法都采用32轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。SM4分组密码算法的加密流程,如图1所示。

图1 SM4分组密码算法加密流程

图1中,τ变换由4个并行的S盒构成。设输入为输出则有:

L变换是一个线性变换,设输入输出则有:

rki(i=0,1,…,31)为轮密钥,长度为32 bit。

2 SCE介绍

可编程对称密码引擎SCE作为一款面向对称密码应用的协处理器,结构如图2所示,并具有以下特点。

(1)采用超长指令字结构,处理器中并列放置4个短功能单元SFU(Short Function Unit,执行32 bit运算)和1个长功能单元LFU(Long Function Unit,执行128 bit运算),每个周期可以并行执行4条短功能指令SINS(Short Instruction)或者1条长功能指令LINS(Long Instruction);

(2)片内集成了大规模的通用寄存器堆;

(3)包含了大量面向对称密码算法的专用指令,包括布尔函数指令、移位指令、模加/减指令、模乘指令、有限域乘法指令、查找表指令以及置换指令等;

(4)密码运算指令和控制指令并行执行;

(5)片内集成有专门存储密钥参数的存储器,通过数据传输指令访问。

图2 可编程对称密码引擎SCE结构

基于可编程对称密码引擎SCE,执行密码算法的流程如下:

(1)基于自定义的SCE指令集编程实现算法;

(2)将算法代码编译为二进制码;

(3)通过算法程序加载命令,将该二进制码输入引擎;

(4)通过密钥参数加载命令,将相关的主密钥和参数输入引擎;

(5)通过算法启动命令启动算法;

(6)输入待处理数据;

(7)读出加解密结果。

3 SM4密码算法的常规实现

根据如图2所示的SM4分组密码算法加密轮函数结构和SCE提供的密码运算资源,可用布尔函数指令、查表指令以及布尔函数指令,分别实现查表前的异或运算、查表运算、L变换以及与Xi的异或。此外,还需保证轮函数更新与轮函数入口地址的一致性。例如,第i轮轮函数运算完成后,Xi需被替换为Xi+1,Xi+1需被替换为Xi+2,Xi+2需被替换为 Xi+3,Xi+4需被替换为 Xi+4,i=0,1,…,31。基于以上两点考虑,SM4分组密码算法的ECB加密模式实现流程,如表1所示。根据表1,整个加密过程合计2+3×32+1=99个时钟周期,SCE工作频率为100 MHz,加密速率为129.3 Mb/s。

表1 SM4密码算法ECB加密模式常规实现指令流程

4 SM4密码算法的高速实现

由SM4分组密码算法的常规实现方式可知,它的轮运算第一个周期和第三个周期都是异或运算,而SCE在一个时钟周期内可实现12个操作数的异或运算,因此可以考虑将轮尾的L变换与下一轮轮首的异或运算合并在一个周期完成。经过优化后的算法实现方式,如表2所示。根据表2,整个加密过程共消耗了2+8×8+2=68个时钟周期,SCE工作频率为100 MHz,加密速率为188.2 Mb/s,加密性能比常规实现方式提升了45.59%。

表2 SM4密码算法ECB加密模式高速实现指令流程

序号 簇3 簇2 簇1 簇0 控制簇X4i+5⊕X4i+6 10 X4i+5更新U并异或簇1的结果即X4i+5⊕X4i+6⊕X4i+7记为A更新V H⊕(H>>>2)⊕(H>>>10)并异或簇0的结果,得到X4i+7更新S(H>>>18)⊕X4i+3⊕(H>>>24)如果计数器cnt0≤7,跳转至指令3 11 X35 X35⊕A⊕X33实际得到X34 X33——跳转到指令1加载下一个分组注:1.i表示轮函数的轮数,初始值为0,每循环执行一次,i=i+1;2.指令3~指令10为四轮加密轮结构;3.指令2中,记簇3、簇2、簇1和簇0运算结果的存储寄存器分别为U、V、S和T,为四轮加密轮结构的入口寄存器。12 输出128比特加密结果X35、X34、X33和X32

5 结 语

本文通过将SM4分组密码算法加密轮结构首尾的异或运算合并为一次异或运算,并四轮加密作为一个整体进行处理,使SM4分组密码算法在SCE上的加密性能提高了45.59%。后续将研究其他密码算法在SCE上的高速实现,一方面为SCE的使用者提供算法高速实现的思路,另一方面为SCE今后的改进指出方向。

[1] 肖玮,陈性元,包义保.可重构信息安全系统研究综述[J].电子学报,2017(05):1240-1248.XIAO Wei,CHEN Xing-yuan,BAO Yi-bao.Review on the Research of Reconfigurable Information Security System[J].Acta Electronica Sinica,2017(05):1240-1248.

[1] 国家密码管理局.GM/T 0002-2012 SM4分组密码算法[S].2012.State Cryptography Administration.GM/T 0002-2012 SM4 Block Cipher Algorithm[S].2012.

猜你喜欢

引擎密钥指令
幻中邂逅之金色密钥
幻中邂逅之金色密钥
新海珠,新引擎,新活力!
密码系统中密钥的状态与保护*
《单一形状固定循环指令G90车外圆仿真》教案设计
车坛往事4:引擎进化之屡次失败的蒸汽机车
TPM 2.0密钥迁移协议研究
蓝谷: “涉蓝”新引擎
中断与跳转操作对指令串的影响
一种基于滑窗的余度指令判别算法