APP下载

一种基于SRAM密钥存储方案的低功耗AES加密解密器

2022-09-21孙海燕谷子茜

电子测试 2022年17期
关键词:解密低功耗寄存器

孙海燕,谷子茜

(北方工业大学,北京,100091)

0 引言

美国国家标准技术研究所(NIST)在2001年发布了高级加密标准(Advanced Encryption Standard,AES)。AES是一种迭代分组加密算法,具有安全性能高、加密效率高等优点,广泛应用于现代社会的信息安全加密中。目前国内外大量文献研究了AES的安全性能和实现紧凑AES的方案,随着AES广泛应用于可穿戴设备、消费电子、移动通讯终端等需要低功耗的场景,对其低功耗的研究也越来越受到关注。

国内外对AES算法的低功耗、小面积等的研究主要集中在对S-盒的研究上,其主要的实现方案有:查找表(Look-up table,LUT)方案[1]、基于有限域GF(28)上实现的运算方案[2-6]、专用硬件加密的解码-置换-编码(Decode Switching Encode, DSE)方案[7]等;以及通过改变数据路径位宽[5,8]来减小AES的面积。少有论文从密钥扩展的角度来优化以提升综合性能。

本文在AES-128加解密算法中的三种常用链接算法(ECB、CBC、CTR)[9]的使用条件下,提出了采用40x32 SRAM对密钥进行存储的方案,以使其在使用同一密钥对一个明文块加密或对一个密文块解密的计算过程中,无需重复进行密钥扩展,既提升了运算速度,又能有效降低功耗。此方案适用于含ECB/CBC/CTR链接算法的AES加密和解密运算中。

1 ECB/CBC/CTR链接算法

电子密码本(ECB)模式是最简单的加密/解密模式。每次加密/解密时,首先输入密钥,然后使用相同的密钥加密一整个明文块。每个明文块/密文块可以分成若干个128位的明文/密文分组,依次输入进行数据加密/解密。其加密/解密过程可以用公式(1)表示。

其中K为密钥,j为加密/解密的数据块序数,Cj为第j块的密文,Pj为第j块的明文,Enc表示加密运算,Dec表示解密运算。

密码块链接(CBC)模式的加密/解密过程可以用公式(2)表示。

其中,IV为初始向量值,IV与明文/密文分组长度一致。CBC链接算法与ECB的不同之处在于其在每一次加密之前或解密之后需要与向量值进行异或操作,提升了AES数据块加密/解密的安全性。

计数器模式(CTR)也是常用的提高安全性的链接算法。其加密/解密过程可以用公式(3)表示。

其中,T为含计数器的IV值。与CBC模式不同的是,CTR模式的初始向量的低32位作为计数器,每完成一次加密/解密运算,计数器的值加一,其高96位的值保持不变;且该链接算法只需用到加密算法,加密或解密后的值与IV值进行异或即可得到密文/明文。

AES-128的每次加密/解密运算包括10次轮变换运算和10次密钥扩展运算,其变换形式为矩阵变换。加密运算的每轮变换过程依次为:字节替换、行移位、列混淆、轮密钥加;解密运算的每轮变换过程依次为:逆列混淆、逆行移位、逆字节替换、轮密钥加。其中,第一轮运算之前会进行一次轮密钥加运算,最后一轮运算不会进行列混淆/逆列混淆运算[9]。本文的设计中,由于后续采用改进的32bit数据路径的AES轮变换运算,为便于进行分时复用,将解密运算模块采用了另一种等效的运算方式——解密的过程依次为:逆字节替换、逆行移位、逆列混淆、轮密钥加。并在第1至9轮的轮密钥加运算中,将密钥进行逆列混淆运算后再用于轮密钥加运算,详细过程及原理如文献[9]中第六章所阐述。

2 AES的低功耗设计

2.1 40x32 SRAM密钥存储模块的设计

由第二节可知,在ECB/CBC/CTR的链接算法中,对一个数据块进行加密或解密时使用的是给定的同一个密钥,若每次加密/解密均进行密钥扩展,则会产生不必要的能量消耗,并且降低运算速度。因此,本设计的AES加密解密器,对加密和解密的密钥扩展模块通过分时复用的方式进行了结合使用。在一个数据块的加密/解密过程中,进行第一次加密/解密之前完成密钥扩展,并将密钥存储起来。后续的加密/解密可直接取用密钥,从而省去了后续的每次加密/解密中的密钥扩展过程,减少了能量消耗并提升了整个数据块加解密的运算速度。

每一组密钥均有128位的位宽,而完成一次AES加密/解密运算一共需要(包括初始密钥在内)的11组密钥。若用寄存器来存储密钥,则至少需要1280个寄存器用于存储扩展之后的密钥,每个寄存器上时钟的翻转都会产生动态功耗,寄存器数量较大会导致功耗较高,因此可以采用SRAM来代替寄存器用于存储密钥。

由于SRAM IP核的结构限制,最小应选择32字的SRAM,若采用32x128的SRAM会导致大量的资源浪费,因此本文设计了采用40x32的SRAM,不仅可以充分利用SRAM的资源,而且其面积更小。更重要的是,其所需的线更少,因而寄生电容更小,功耗也就相对更低。40x32 SRAM在加密/解密时对密钥的写入和读取过程如图1所示。

图1 采用40x32 SRAM的密钥存储和读取过程

其中,aes_key3、aes_key2、aes_key1、aes_key0为输入的初始密钥,数据位宽为32,存储于密钥寄存器中,故不需要占用SRAM的空间;key_cnt为密钥扩展的轮数,每一轮扩展的密钥分4次依次写入至SRAM中;round_cnt为加密/解密的轮数,加密时按加密轮数以0~39的地址顺序取出密钥用于轮密钥加模块的运算,解密时按解密轮数以39~0的地址顺序取出密钥,密钥经逆列混淆运算后用于轮密钥加运算。

2.2 采用32bit数据路径的轮变换结构

本设计由于选用了40x32 SRAM,每次读取的密钥为32bit,故本设计采用32bit数据路径进行加密/解密更为合适,读取的密钥可直接用于加解密运算。本文参考文献[8]提出的32bit数据路径实现的AES并对其进行了优化,设计了加密和解密两种模式分时复用的AES运算模块。密钥扩展模块仍然采用40x32 SRAM来存储密钥,如图2所示。

图2 采用32bit数据路径的加解密轮变换结构

状态寄存器由16个8位的寄存器组成,也称为“状态矩阵”,这些寄存器又被进一步分为4个4级移位寄存器。在本设计中,基于行移位的原理,在加密中,通过选择状态矩阵第[127:120]、[87:80]、[47:40]、[7:0]位(解密中选择[127:120]、[23:16]、[47:40]、[71:64]位)作为每次移位后的输出,输出后直接进行S-盒运算,然后依次进行列混淆运算和轮密钥加运算。这种方式彻底消除了行移位操作,从而可以节省面积和降低功耗。

同时,本设计的密钥扩展模块与轮变换模块共用了1个S-盒,整个设计只采用了4个S盒和1个列混淆,可以大大地节省面积;本设计的S-盒采用了文献[7]提出的解码-交换-编码方案实现的S-盒,有效降低了S-盒的功耗,并通过对AES中的大量寄存器采用时钟门控技术,大大降低了AES的整体功耗。

3 实现结果与结论

对不同方案实现的AES加密解密器,使用Verilog硬件描述语言编写RTL代码,通过Modelsim平台仿真验证其功能,采用Synopsys Design Compiler综合工具,SMIC 55nm工艺库,选用ss工艺角,电压1.08V,温度125℃,将RTL代码转换成网表文件并生成SDC文件,通过IC Compiler进行布局布线,生成带有时钟树的.output.v网表文件,经过PrimeTime对其进行时序约束并生成SDF文件,在testbench中添加该SDF文件,并通过VCS对.output.v网表文件进行后端仿真,生成FSDB文件,查看FSDB文件的波形是否正确并选取一段相同的运算过程,生成相应的SAIF文件,通过PrimeTime PX工具对该SAIF文件进行功耗分析。在50MHz频率下的面积和功耗分析结果如表1所示。

表1 分析结果

性能分析的结果显示,优化后的AES加密解密器的面积为24880μm2,在50MHz的频率下,加密器的功耗为197uW,解密器的功耗为199uW;优化后的AES加密解密器的面积比未优化的AES降低了46.4%,加密运算时的功耗降低了42.4%,解密运算时的功耗降低了37.8%。由此可知,改进的AES的面积和功耗均大幅度降低。

将本文的AES与其它一些论文的AES的综合性能进行了比较,结果如表2所示。

表2 比较结果

与采用其它设计的文献[8,10-12]相比,虽然工艺的改进可以有效降低功耗,但是本文提出的方案仍然明显低于其它论文的功耗。

4 总结

本文针对ECB、CBC、CTR链接算法采用同一密钥对一个数据块进行加解密的情况,提出了采用40x32 SRAM对扩展后的密钥进行存储的方案,并采用32bit的数据路径实现了改进的AES运算模块。改进后的AES相比未改进的AES,功耗和面积均大幅度降低。与其它文献中设计的低功耗AES方法相比,本文的设计也具有更低的功耗。

猜你喜欢

解密低功耗寄存器
解密“热胀冷缩”
一种高速低功耗比较器设计
解密“一包三改”
Lite寄存器模型的设计与实现
炫词解密
分簇结构向量寄存器分配策略研究*
解密“大调解”
ADI推出三款超低功耗多通道ADC
IDT针对下一代无线通信推出低功耗IQ调制器
低功耗加权cache替换策略