多引擎并行CBC模式的SM4算法的芯片级实现

樊凌雁 1 周 盟 1 骆建军 1 刘海銮 2

1 (杭州电子科技大学微电子研究中心 杭州 310018) 2 (杭州华澜微电子股份有限公司 杭州 311215) (fanlingyan@hdu.edu.cn)

Fig. 1 Architecture of SATA solid state disk
图1 SATA固态硬盘架构

NAND技术和固态存储控制技术的飞速发展,引爆了硬盘存储的产业革命.新一代固态硬盘存储技术凭借启动快、寿命长、读写快、无噪音、体积小、重量轻、抗震动、耗能低等绝对优势,在互联网、计算机、航天、医疗、交通、工业控制等各个领域得到了广泛应用 [1] .数据信息的爆炸式增长对于信息的海量数据的高速、安全存储提出了更高的要求.英国《金融时报》网站2015年2月17日报道,总部驻莫斯科的网络安全公司卡巴斯基实验室表示,该公司已在30个国家所用的电脑中发现了多种设计精密的黑客木马,存储在电脑的信息存在被偷窃的可能.

SM4算法是中国首个官方发布的分组对称密码算法,它在2012年3月被国家密码管理局批准为行业标准 [2] ,近些年涌现出很多研究成果 [3-6] .因此,将具有自主知识产权的密码学理论成果与自主研发的固态存储技术相结合,研发性能高、安全性高的集成电路芯片,对中国的信息安全有极其重大的意义.

SM4算法常见的加密模式有加密块链模式(cipher block chaining, CBC)、电子密码本模式(electronic codebook, ECB)等 [7] ,其中CBC模式由于存在从输出端到输入端的反馈路径,从而拥有更高的安全性 [8] ,是当前固态硬盘采用最多的分组加密方式.但是,因为CBC模式的反馈路径,使得数据之间有了关联性,导致无法使用流水线技术 [9] 来提高电路的吞吐率.此外,另一种常用的提高吞吐率的方法是轮函数合并技术,该方法是在1个周期内,同时进行 n ( n 是32的因子)个轮函数运算.这种处理方式在时钟主频不限制时,在同一工艺条件下,以2倍的面积获得10%的性能提升,其提升效果不是那么明显,如表1所示:

Table 1 Comparison of SM4 Wheel Functions Combination
表1 SM4轮函数合并性能对比

nFrequency∕MHzThroughput∕GbpsArea∕gate12501.00846421421.14159654771.2331071

本文采用乒乓(PING-PONG)技术,提出了一种多引擎同步工作的方式,通过增强加解密引擎的并行性,从而提高SM4算法CBC模式在65 nm工艺下的吞吐率,满足SATAⅢ接口的速率要求.

1 SM4多引擎加解密方案

本文设计的SM4加解密引擎不仅支持CBC模式,并且运行带宽不影响SATAⅢ固态硬盘的性能,也就是在加解密的情况下保证了足够的带宽.

1 . 1 SATA固态硬盘架构

按照自顶而下的设计方法,本文的固态硬盘架构设计如图1所示,将SATA固态硬盘划分为多个子模块,分别为:1)SATA PHY模块;2)SATA Core模块;3)DRAM控制器模块;4)Flash控制器模块;5)多引擎加解密安全模块;6)CPU模块,包含系统CPU模块和FTL(flash translation layer)算法CPU模块.

多引擎加解安全密模块置于SATA Core模块和DRAM控制器模块之间,其中SATA Core模块包含链路层、传输层、应用层.其中,链路层负责链路状态管理,数据包的发送和接收,完成8 B 10 B编解码、加扰 解扰、封包 解包、CRC校验,负责接口电源管理;传输层负责帧信息结构(frame information structure, FIS)打包和解包,完成如直接内存存取(direct memory access, DMA)传输、程序输入输出模型(programming input output model, PIO)传输、原生命令队列(native command queuing, NCQ)传输等数据命令交互功能,对数据传输进行流量控制;应用层主要负责应用处理,譬如AHCI协议的支持、ATA命令处理.

而DRAM控制器模块主要分为DRAM PHY和DRAM Core.DRAM PHY主要负责和DRAM芯片的接口通信;DRAM Core主要是完成DDR协议处理和多数据存取通道的仲裁管理,比较常见的接口为AXI接口.

1 . 2 多引擎加解密安全模块设计

本文在图1所示的固态硬盘架构上,单引擎采用全循环迭代方法 [10] (即 n =1的轮函数合并技术),并在此基础上设计了多引擎加解密安全模块来扩展带宽,其设计如图2所示:

Fig. 2 Architecture of multi-engine encryption and decryption security module
图2 多引擎加解密安全模块框架

多引擎加解密安全模块置于SATA端和DRAM端之间,它主要由输入输出接口、4个SM4加解密引擎、输入输出缓存模块组成.

为了提高固态硬盘的数据传输速率和加解密引擎的数据处理速率,本文提出了一种乒乓技术.将输入缓存和输出缓存分别置于SATA端和DRAM端,它们都由2个容量为2 Kb的FIFO组成.当进行数据传输时,一个FIFO接受来自主机数据,而另一个FIFO同时进行数据加解密,这样避免了只有单个FIFO被占用的等待时间,从而将传输速度提升1倍.

此外,对多个加解密引擎的合理调度和控制是实现高效并行密码处理的关键.本文采用输入与输出相分离的结构,将每个FIFO均分为4个Sector,每个Sector对应1个加密引擎,用于数据缓存.数据传输流程如图3所示:

Fig. 3 Data transmission flow
图3 数据传输流程

以写流程为例:

1) SATA Core接收主机数据,通过输入数据流接口AXI,往SFIFO的FIFO0送2 Kb数据即填满SFIFO的FIFO0,多引擎加解密安全模块启动加密,同时将Sector1,Sector2,Sector3,Sector4开头的128 b数据分别传输给4个SM4引擎,传输完成后,接着传输下一个128 b直至传输完1个Sector的数据.

2) 对FIFO0中的数据加密的同时,SATA Core继续接收主机数据放到SFIFO的FIFO1中.当SM4加密引擎完成1个128 b数据加密后,就填入到DFIFO的FIFO0对应的Sector中,当SM4完成所有2 Kb数据加密后即填满DFIFO的FIFO0,DFIFO就把FIFO0中的数据通过输出数据流接口AXI送入DRAM.

3) 多引擎加解密安全模块检查SFIFO的FIFO1是否为满以及DFIFO的FIFO1是否为空,如果同时满足,则开始进行FIFO1的加密,否则继续等待.FIFO0和FIFO1一直乒乓式地交替运行下去,直到所有数据完成.

数据乒乓技术的意义在于无损实现数据加密,一组数据在加密的同时,另外一组数据进入FIFO.这组数据加密完成,下一组数据进入加密过程,这样就节省了等待时间.

1 . 3 状态机设计

为了完成多个加密引擎的流水控制和流量控制,本文设计状态机来自动控制.加解密安全模块的状态迁移如图4所示:

Fig. 4 State migration of encryption and decryption security module
图4 加解密安全模块状态迁移

1) IDLE状态.该状态是空闲状态、状态复位状态.

2) KEY_RUN状态.该状态是密钥扩展状态,为了提高运行速度,并节省存储轮密钥的寄存器,密钥采用同步扩展的方法,但是在解密时需要使用最后1个轮密钥作为起始密钥,所以在初始化的时候,固件设置密钥扩展命令,使得SM4引擎进行密钥扩展,并将最后1个轮密钥记录并保存.每个SM4引擎都需要进行密钥扩展,在更换密钥的时候也需要重新进行密钥扩展.

3) KEY_DONE状态.密钥扩展完成,固件可以清除 key_running 信号,状态机回到空闲状态.

4) CHECK_FIFO_READY.固件启动加解密安全模块后,状态机开始跳转到数据等待,加密和解密只是方向不同.加密时,SFIFO的明文数据作为源数据,DFIFO存储加密后的密文数据并将数据送给DRAM;解密时,DFIFO的密文数据作为源数据,SFIFO存储解密后的明文数据并将数据返回给主机.此外,只有在源数据FIFO准备好2 Kb数据(不满2 Kb的,填充其他数据)以及目标FIFO为空时,加解密引擎开始启动.

5) SM4_ENGINE0_READY.SM4引擎在运行时,会置busy状态,此时状态不跳转,等 sm 4 _core 0 _busy 为低,数据已经准备好,产生1个 sm 4 _core 0 _load ,开始进行加解密.状态机转换到SM4_ENGINE1_RUN状态.

6) SM4_ENGINE1_READY. sm 4 _core 1 _busy 为高,此时状态不跳转,等 sm 4 _core 1 _busy 为低,数据已经准备好,产生1个 sm 4 _core 1 _load ,状态机转换到SM4_ENGINE2_RUN状态.

7) SM4_ENGINE2_READY. sm 4 _core 2 _busy 为高,此时状态不跳转,等 sm 4 _core 2 _busy 为低,数据已经准备好,产生1个 sm 4 _core 2 _load ,状态机转换到SM4_ENGINE3_RUN状态.

8) SM4_ENGINE3_READY.SM4引擎在运行时会置busy状态,此时状态不跳转,等 sm 4 _core 0 _busy 为低,数据已经准备好,产生1个 sm 4 _core 0 _load ,开始进行加解密.如果这是最后1组数据,则跳转到WAIT_WDONE,否者,状态机环回到SM4_ENGINE0_RUN状态.

9) WAIT_WDONE状态.等待所有的引擎完成加解密动作,并把数据写入到目标FIFO中.如果是加密,则等待DFIFO数据写入到DRAM;如果是解密,则等待SFIFO数据送给主机.

10) DONE状态.数据加解密完成,返回完成状态给CPU,CPU清除 security_running 信号后,状态机回到空闲状态.

2 验证和测试

2 . 1 功能仿真平台

SM4加解密引擎设计使用硬件描述语言Verilog HDL实现,测试平台采用基于UVM(universal verification methodology)验证技术的芯片SoC设计仿真平台.为了验证整个固态硬盘,建立起一套包括SATAⅢ主机虚拟原型、NAND Flash存储器虚拟原型、DRAM虚拟原型以及基于AHB接口的CPU虚拟原型在内的完整的仿真设计平台,这里的虚拟原型指的是总线功能模型(bus function model, BFM).此外还增加了计分板模块,对传输变量实时监测以及硬件错误及时提示.SATA固态硬盘验证设计平台结构如图5所示:

Fig. 5 Structure of SATA solid state disk verification
platform
图5 SATA固态硬盘验证平台结构

2 . 2 SM4功能仿真

SM4功能仿真采用SM4标准手册第5章的加密实例为参考.

1) 加密密钥.01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10.

2) 数据明文.01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10.

3) 数据密文.68 1e df 34 d2 06 96 5e 86 b3 e9 4f 53 6e 42 46.

2.2.1 密钥扩展仿真

如图6所示,设置 key_running =1,输入用户密钥( usr_key )的值为:01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10.然后给出1个 text_ld 脉冲,使加密引擎开始进行密钥扩张计算,在32个时钟周期后, done 信号产生1个脉冲,表示 key 展开运算结束,并把最后的轮密钥输出.可以看出,最后的4轮密钥也就是 rk [31], rk [30], rk [29], rk [28]的值为:91 24 a0 12 01 cf 72 e5 62 29 34 96 42 8d 36 54,符合标准手册示例的值.

Fig. 6 Waveform of key expansion simulation
图6 密钥扩展仿真波形

Fig. 7 Waveform of encryption simulation
图7 加密仿真波形

2.2.2 加密仿真

如图7所示,设置 key_running =0,输入 usr_key 值为:01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10.输入明文值为:01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10.在32个时钟周期后, done 信号产生1个脉冲,表示1个分组加密完成,加密结果从 text_out 端口输出,只有 done 为高电平时有效,从仿真可以看出,加密结果是:

68 1e df 34 d2 06 96 5e 86 b3 e9 4f 53 6e 42 46.

2.2.3 解密仿真

如图8所示,设置 key_running =0,输入 usr_key 值为:01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10.输入密文值为:68 1e df 34 d2 06 96 5e 86 b3 e9 4f 53 6e 42 46.在32个时钟周期后, done 信号产生1个脉冲,表示1个分组解密完成,解密结果从 text_out 端口输出,只有 done 为高电平时有效,从仿真可以看出,加密结果是:

01 23 45 67 89 ab cd ef fe dc ba 98 76 54 32 10.

Fig. 8 Waveform of decryption simulation
图8 解密仿真波形

2 . 3 性能分析

为了分析多引擎加解密的整体性能,本文采用SMIC 65 nm工艺对多引擎加解密模块进行了综合,然后与参考文献中SM4实现的性能进行对比,如表2所示:

Table 2 Comparison with SM4 Implementation in References
表2 与参考文献中SM4实现的性能比较

ReferencesEnginesFrequency∕MHzThroughput∕GbpsRef [11]141770.782.83Ref [12]142000.401.60Ref [13]133000.752.25Our Paper142501.004.00

对采用多引擎加解密安全模块的SATAⅢ固态硬盘进行实际读写性能测试,如表3所示:

Table 3 Read and Write Speed Test
表3 读写速度测试

Capacity∕GBSequential Velocity∕MBpsRandom Velocity∕MBpsReadWriteReadWrite116528.8443.594.06193.4

从表2可以看出,本文设计的多引擎同步工作方式,时钟频率可以达到250 MHz,可以实现更高的吞吐率4 Gbps.经过实际测试,如表3所示,该加密固态硬盘的连续读速度可以达到528.8 MBps,连续写速度可以达到443.5 MBps,基本匹配SATAⅢ接口的速率要求.

3 结束语

本文主要研究了SM4算法CBC模式在固态硬盘中的实现,为了满足SATAⅢ型接口固态硬盘的加密并且不损失速率的要求,提出了一种多引擎同步工作的方式.该方法结合乒乓技术,提出了多任务并行机制,与同类设计相比,在相同情况具有更高的吞吐率.对于固态硬盘加密来说,主要包括数据加密和身份认证两部分,参考TCG OPAL的标准规范,设计身份认证模块,是下一步研究的重点.

参考文献

[1]Tian Hongliang, Zhang Yong, Xu Xinhui, et al. Trusted SSD: New foundation for big data security[J]. Chinese Journal of Computers, 2016, 39(1): 154-168 (in Chinese)(田洪亮, 张勇, 许信辉, 等. 可信固态硬盘: 大数据安全的新基础[J]. 计算机学报, 2016, 39(1): 154-168)

[2]State Cryptography Administration. State Cryptography Administration proclamation (23)[OL]. [2017-02-12]. http: www.oscca.gov.cn News 201204 News_1228.htm (in Chinese)(国家密码管理局. 国家密码管理局公告(23号)[OL]. [2017-02-12]. http: www.oscca.gov.cn News 201204 News_1228.htm)

[3]Du Zhibo, Wu Zhen, Wang Min, et al. Multi-point joint power analysis attack against SM4[J]. Journal of Computer Research and Development, 2016, 53(10): 2224-2229 (in Chinese)(杜之波, 吴震, 王敏, 等. SM4密码算法的多点联合能量分析攻击[J]. 计算机研究与发展, 2016, 53(10): 2224-2229)

[4]Du Zhibo, Wu Zhen, Wang Min, et al. Improved chosen-plaintext power analysis attack against SM4 at the round-output[J]. Journal on Communications, 2015, 36(10): 85-91 (in Chinese)(杜之波, 吴震, 王敏, 等. 针对SM4轮输出的改进型选择明文功耗分析攻击[J]. 通信学报, 2015, 36(10): 85-91)

[5]Zhu Kunsong, Zhang Lichao, Dai Zibin, et al. Design and implementation of low-cost SM4 for consumer electronic product[C OL] Proc of Int Conf on Consumer Electronics (ICCE’16). Piscataway, NJ: IEEE, 2016 [2017-02-12]. https: ieeexplore.ieee.org document 7849741

[6]Wang Chuanfu, Ding Qun. SM4 key scheme algorithm based on chaotic system[J]. Acta Physica Sinica, 2017, 66(2): 80-88 (in Chinese)(王传福, 丁群. 基于混沌系统的SM4密钥扩展算法[J]. 物理学报, 2017, 66(2): 80-88)

[7]Wen Fengtong, Wu Wenling, Wen Qiaoyan. Improved CBC mode of operation and its security analysis[J]. Journal on Communications, 2007, 28(3): 52-56 (in Chinese)(温凤桐, 吴文玲, 温巧燕. 改进的CBC模式及其安全性分析[J]. 通信学报, 2007, 28(3): 52-56)

[8]Fu Tianshu, Li Shuguo. A high-throughput ASIC implemen-tation of SM4 algorithm in CBC mode[J]. Microelectronics & Computer, 2016, 33(10): 13-18 (in Chinese)(符天枢, 李树国. SM4算法CBC模式的高吞吐率ASIC实现[J]. 微电子学与计算机, 2016, 33(10): 13-18)

[9]Li Dawei, Zhao Xuxin, Wu Men. Pipelined high-speed implementation of SMS4[J]. Chinese Journal of Electron Devices, 2007, 30(2): 590-592 (in Chinese)(李大为, 赵旭鑫, 武萌. SMS4密码算法的高速流水线实现[J]. 电子器件, 2007, 30(2): 590-592)

[10]Cheng Hai, Ding Qun, Du Hui, et al. Study of SMS4 based on of FPGA realization[J]. Chinese Journal of Scientific Instrument, 2011, 31(12): 2845-28 (in Chinese)(程海, 丁群, 杜辉, 等. 基于FPGA实现的SMS4算法研究[J]. 仪器仪表学报, 2011, 31(12): 2845-2849)

[11]Li Xiaonan, Xu Yan, Dai Zibin. Research of parallelism of SMS4 algorithm in CBC mode[J]. Computer Engineering and Design, 2013, 34(4): 1226-1231 (in Chinese)(李校南, 徐岩, 戴紫彬. CBC模式下SMS4算法并行化研究[J]. 计算机工程与设计, 2013, 34(4): 1226-1231)

[12]Li Junwei, Dai Zibin, Nan Longmei, et al. Research and design of parallel processing technology for multi-engines

cipher SoC[J]. Computer Engineering and Design, 2014, 35(7): 2312-2316 (in Chinese)(李军伟, 戴紫彬, 南龙梅, 等. 多引擎密码SoC并行处理技术研究与设计[J]. 计算机工程与设计, 2014, 35(7): 2312-2316)

[13]Smyth N, Mcloone M, Mccanny J V. WLAN security processor[J]. IEEE Trans on Circuits and Systems, 2006, 53(7): 1506-1520

Fan Lingyan , born in 1979. PhD. Lecturer in Microelectronics Research Institute of Hangzhou Dianzi University. Her main research interests include intelligent information processing and flash-memory storage systems.

Zhou Meng , born in 1993. MSc candidate. His main research interest is SSD technique.

Luo Jianjun , born in 1970. PhD. Professor in Hangzhou Dianzi University. Director of Microelectronics Research Institute (MERI) of Hangzhou Dianzi University. His main research interests include integrated circuit design and developing digital storage & data security systems.

Liu Hailuan , born in 1983. MSc. Senior IC engineer. His main research interests include ASIC design in storage field as well as flash and security algorithms.

IC Design with Multiple Engines Running CBC Mode SM4 Algorithm

Fan Lingyan 1 , Zhou Meng 1 , Luo Jianjun 1 , and Liu Hailuan 2

1 ( Microelectronics Research Institute , Hangzhou Dianzi University , Hangzhou 310018) 2 ( HangzhouSage Microelectronics Corporation Hangzhou 311215)

Abstract With the advantages of fast speed, small size, light weight, strong shock resistance and low power consumption, solid state drive (SSD) becomes the new generation of computer hard disk storage products.Hard disk information security is not only related to personal privacy, corporate password, but also related to national security.In order to solve the information security problems of solid state drive, a hardware circuit implementing the SM4 algorithm is presented, which is promulgated by China’s State Cryptography Administration Office of Security Commercial Code Administration.This method can encrypt data that is stored in a drive, and improve security of stored data.To obtain the high speed data stream of the SSD, SM4 algorithm in cipher block chaining(CBC)mode had to be designed to run at the matched speed with data throughput.A circuit structure with multiple SM4 engines operating in parallel is proposed, which is beneficial for the SM4 feedback loop delay, pipelining technology and combination of wheel function under 65 nm standard-cell process. After the verification done by FPGA, the circuit has been implemented with 65 nm semiconductor process.The evaluation results show that its sequential read speed is 528.8 MBps and its sequential write speed is 443.5 MBps, which meets to SATAⅢ’s interface’s performance.

Key words solid state drive; SM4 algorithm; cipher block chaining (CBC) mode; multiple engines; SATAⅢ interface

固态硬盘凭借速度快、体积小、重量轻、抗震性强、功耗低等优势,成为新一代电脑硬盘存储产品代表.硬盘信息安全不仅关系到个人隐私、企业密码,更是关系到国家安全.针对固态硬盘的信息安全问题,采用全硬件加密的方式实现国家商用密码管理局颁布的SM4算法,在固态硬盘中实现数据的加密存储,提升了存储数据安全.为了保证电脑硬盘速度不受到加 解密算法的影响,必须解决高速数据流和SM4算法模块的同步加 解密的速度匹配问题.提出了一种多引擎同步工作的方式实现CBC(cipher block chaining)模式的SM4算法,解决了SM4算法在CBC加密模式下存在反馈路径,流水线技术和轮函数合并技术难以在65 nm工艺下提高吞吐率的问题.通过FPGA验证,并在国内某半导体生产线65 nm工艺上流片实现,结果表明:在250 MHz时钟频率下,4个引擎并行的连续读速度为528.8 MBps,连续写速度为443.5 MBps,满足电脑硬盘SATAⅢ型接口的速率要求.

关键词 固态硬盘;SM4算法;CBC模式;多引擎;SATAⅢ接口

中图法分类号 TP302.2

收稿日期 2017-03-14;

修回日期: 2018-01-04

基金项目 国家自然科学基金项目(61702149,U1709220);浙江省自然科学基金项目(LY16F010013)

This work was supported by the National Natural Science Foundation of China (61702149, U1709220) and the Natural Science Foundation of Zhejiang Province of China (LY16F010013).