嵌入式系统芯片中SM2算法软硬件协同设计与实现
方案,并采用统一建模语言SystemC对硬件模块进行周期精确级建模。通过模块级与系统级两层验证比较软硬件模块执行周期数,得出最佳性能划分方式。最后结合算法控制流程图(CFG)与数据流程图(DFG)将ESL模型转化为寄存器传输级(RTL)模型进行逻辑综合与比较,得出在180nm CMOS工艺,50MHz频率下,当算法性能最佳时,点乘模块执行时间为20ms,门数83000,功耗约2.23mW。实验结果表明所提系统级架构分析对基于椭圆曲线类加密芯片在性能、面积与功耗的评估优势明显且适用性强,基于此算法的嵌入式系统芯片(SoC)可根据性能与资源限制选择合适的结构并加以应用。
关键词:SM2算法;SystemC;软硬件划分;电子系统级;周期精确
中图分类号: TP302.1 文献标志码:A
Abstract:Concerning the problem that the development cycle of existing elliptic curve algorithm system level design is long and the performanceoverhead indicators are not clear, a method of Hardware/Software (HW/SW) codesign based on Electronic System Level (ESL) was proposed. This method presented several HW/SW partitions by analyzing the theories and implementations of SM2 algorithm, and generated cycleaccurate models for HW modules with SystemC. Module and system verification were proposed to compare the executing cycle counts of HW/SW modules to obtain the best partition. Finally, the ESL models were converted to Rigister Transfer Level (RTL) models according to the CFG (Control Flow Graph) and DFG (Data Flow Graph) to perform logic synthesis and comparison. In the condition of 50MHz,180nm CMOS technology, when getting best performance,the execute time of pointmultiply was 20ms, with 83000 gates and the power consuption was 2.23mW. The experimental result shows that the system analysis is conducive to performance and resources evaluation, and has high applicability in encryption chip based on elliptic curve algorithm. The embedded SoC (System on Chip) based on this algorithm can choose appropriate architecture based on performance and resource constraints.
Key words: SM2 algorithm; SystemC; hardware/software partition; Electronic System Level (ESL); cycleaccurate
0 引言
随着移动支付终端、智能卡、无线通信等嵌入式设备的普及,数据的安全性也面临越来越大的挑战。作为密码类嵌入式系统的核心部件,算法模块的性能、功耗、开发周期等要求在系统设计中越来越重要。SM2算法是国家密码管理局于2010年12月发布的椭圆曲线公钥密码算法,并要求对现有基于RSA算法的电子认证系统、密钥管理系统等进行升级改造,因安全性高而被广泛应用于加密芯片中。由于SM2算法复杂度高、执行周期长,以及密码类嵌入式系统对性能开销要求严格,使得基于该算法的系统芯片(System on a Chip, SoC)需要在设计初期对算法模块进行软硬件划分,根据不同的需求选择合适的划分方式以平衡性能和开销。目前基于SM2算法的SoC芯片中,主要采用基于指令集的协处理器以及基于总线协议的外设IP(Intellectual Property)作为硬件加速模块,前者更高效,后者简单、易实现,但两种实现方式依然涉及对算法模块本身的软硬件划分。
基于软件的实现方式灵活性高,成本低,但对于嵌入式RISC(Reduced Instruction Set Computer)微处理器,当终端设备对运算速度有较高的要求时,其运行效率难以达到所需运算能力。采用专用集成电路的实现方式能显著提高算法整体运行效率,缺点是增加了芯片的面积和成本。文献[1]分析了二元扩域椭圆曲线实现过程及软硬件协同设计思想,但是没有提出具体划分方式,文献[2-3]提出基于椭圆曲线的协处理器设计,能快速实现点乘运算,但是缺少对算法实现的软硬件划分。文献[4]主要涉及对椭圆曲线算法指令集设计以及基于指令集的相关模块的性能、时间和存储开销比较,对算法模块的架构分析与性能表征不足。文献[5]提出椭圆曲线算法SoC架构,但没有对不同架构下性能与资源的具体分析和比较。
本文主要工作包括:首先提出所设计的SoC系统整体结构,分析SM2算法加解密实现原理,提出不同的软硬件划分方式;然后基于上述划分方式,使用SystemC语言对SM2算法硬件实现部分进行周期精确级建模;接着通过模块级与系统级仿真,将软件实现的执行周期与硬件模块执行周期数相比较,得到最佳性能的划分方式;同时将寄存器传输级(Rigister Transfer Level, RTL)模型在180nm 互补金属氧化物半导体(Complementary Metal Oxide Semiconductor, CMOS)工艺下进行实现,通过比较面积和功耗得到性能和资源的平衡。实验结果表明对基于椭圆曲线算法的嵌入式SoC芯片或专用集成电路设计,用户可根据实际芯片对性能、功耗与面积的要求,结合文中所提出的几种软硬件划分方式与分析,选择合适的结构加以应用。
1 系统结构分析
1.1 基于CortexM0的SoC设计
文献[5]提出的SoC架构中,采用32位 RISC处理器C310S处理器作为控制核心,所有外设包括杂凑部件均通过系统总线互联。文献[6]研究了基于8051微控制器的160位椭圆曲线算法模运算层软硬件协同设计。在本文系统中,采用ARM CortexM0作为主控制器,SM2算法硬件部分作为系统外设连接到总线,并通过总线控制器与主处理器及其他模块进行通信,其他模块主要包括外部存储器设备、顶层控制逻辑、随机数发生器等。对于杂凑部件与密钥扩展部分已经在SM2算法软硬件划分中完成,系统如图1所示。
软硬件划分是系统级设计的关键,通过协同设计与验证,对复杂系统架构进行探索和优化,同时结合现有成本,对速度、面积、功耗进行平衡。图中SW(Software)包括系统固件、应用程序及算法软件实现部分,存储于非易失性只读存储器FLASH中。SM2 Accelerate作为算法的硬件加速器,包括算法硬件实现模块(Hardware,HW),以及与总线接口进行通信的控制模块SM2 Control,控制模块不仅实现加速模块与主控制器之间的数据的存储与读取,同时从随机数发生器RANDOM读取用于生成点乘运算所需的随机数k。随机数发生器根据SM2算法协议规定,需要采用国家密码管理局批准的随机数发生器,由于占用资源多,将其作为一个单独的硬件模块实现,这样不仅能有效增加运算性能,同时提高了系统的安全性。CortexM0处理器是整个系统的控制核心。SRAM用于保存程序运行的中间结果。
1.2 SM2加解密协议与软硬件划分
根据SM2公钥加密算法标准[7],消息发送者A和消息接收者B,对于加密,用户B产生公钥Pb,用户A利用Pb 根据加密流程对要发送的消息M进行加密,输出密文C并发送给用户B。对于解密,用户B需要利用自己的私钥结合解密流程从密文C中获取原始消息M。算法采用的椭圆曲线方程为:y2=x3+ax+b,通过指定a、b系数,确定了唯一的标准曲线。同时,为了将曲线映射为加解密算法,SM2标准还确定了其他参数供算法程序使用。
椭圆曲线密码学算法的密钥长度是可变的,SM2标准规定使用256位,这对算法的性能优化要求更高。SM2属于计算密集型算法,且具有很好的层次性,其实现结构从底层到顶层可分为:
1)模运算层:模加、模减、模乘、模逆;
2)点运算层:点加、倍点;
3)多倍点运算层:点乘Q=[k]P;
4)应用层:加解密、密钥交换、数字签名等。
其中点运算通过调用模运算实现,多倍点运算则通过多次调用点加和倍点运算实现。每一级运算根据其复杂度的不同来选择用软件或者硬件实现,不适当的划分方式会使得计算周期长且资源开销大。
本文主要对素域256位SM2加解密应用进行系统级软硬件划分,划分的主要目的在于平衡算法的整体性能与开销。
这里将性能转化为对算法模块执行周期数的比较,包括两点内容:第一点是算法模块本身的执行时间,第二点是模块在算法实现过程中的被调用的次数。
T(total)=∑ n1i=0u1+∑ n2i=0u2+∑ n3i=0u3+…+u
其中:T(total)为整个算法运行周期数; u1,u2,u3,…为硬件子模块的运行时间; n1,n2,n3,…为各个模块在整个算法应用中与软件控制流程的通信次数; u为顶层软件流程执行时间。开销主要包括算法在实现过程中所占芯片面积以及功耗。
根据上述描述,需要分别对SM2加解密算法四个层次进行建模仿真。除了全部使用软件实现以及全部使用硬件实现,可以得出的划分方式如表1。
表1所示的划分方式中,对硬件部分采用周期精确级建模,软件运行于ARM处理器,综合比较软硬件执行周期数即可得出最佳性能的划分方式。对细化后的RTL模型进行实现,则可比较各模块的面积功耗开销。
2 系统建模与分析
2.1 基于ESL的周期精确级建模
系统建模时不同的模型对系统性能比较以及后期实现有很大影响。基于电子系统级(Electronic System Level, ESL)的设计与验证方法能从系统级到时序级对芯片整体架构进行软硬件划分和仿真,包括高层次建模、系统集成、架构探索、高级综合等[8],设计者可以通过增强不同抽象层次之间的移植性,实现各阶段测试平台的复用,达到快速收敛的目的,克服了传统基于C/C++系统设计方法在架构探索、硬件建模及系统验证方面的时间长、模型不准确等局限性[9]。把高层次建模语言细化为寄存器传输级模型可以采用高层次综合技术,或者手动转化。由电子设计自动化(Electronic Design Automation, EDA)综合出的RTL代码虽然包含控制通路和数据通路,但代码可读性依然不高,出现错误难以调试。相比手动转化C模型与ESL模型,后者只需定义合适的状态机并结合原有的数据/控制流程图,即可得到对应RTL模型,过程简单快速。因此基于周期精确的ESL模型更利于硬件实现。
文献[10-11]均证明了基于ESL的协同验证方式快速高效。文献[11]提出一种基于SystemC周期精确级模型的椭圆曲线SoC软硬件协同设计,但其主要集中在椭圆曲线底层模运算,缺少对算法不同层次架构的划分与建模,同时没有对底层实现的分析,因而无法全面评估算法性能与开销。
本文的设计采用SystemC语言,通过添加对算法时序信息的描述,结合上述软硬件划分架构,对SM2算法底层到顶层各个模块进行周期精确级建模,首先描绘出SM2算法不同层次各个模块的控制流程图(Control Flow Graph, CFG)和数据流程图(Data Flow Graph, DFG),并将其转化为统一建模语言(Unified Modeling Language, UML)状态图,最后用SystemC进行描述。进行模型细化时,通过定义状态机,结合CFG与DFG,将ESL模型转化为RTL,通过仿真比较两者的执行周期可以得出所建立模型的精确性,并对RTL模型进行逻辑综合,进而评估算法的资源开销。
2.2 硬件模型
对于素数域256位点乘运算,运算数据为应用程序写的点P(x,y)和随机数发生器生成的随机数k,完成运算Q=[k]P。点乘运算是通过多次调用点加和倍点运算完成,次数为密钥长度。而最底层的模加、减等运算是最基本的运算部件,上层运算可以通过对底层模块的调用完成, 如图2所示。
对算法的顶层建模时,除了需要考虑底层模运算的实现,还需要对中间过程进行详细的设计。椭圆曲线上的点有多种坐标表示方式,我们的设计在仿射坐标下,同时考虑到非互逆不相同点相加(P≠±Q)与倍点(P=Q)规则,兼顾实现过程的简单易用,设计了表2所示的几个模块。
通过对这3个中间模块与底层模运算模块的调用及传参,即可实现不同规则下的点运算。图3所示为点乘运算控制流程。
SM2算法除了核心点乘运算模块,对于应用层加解密流程,主要用到三类辅助函数,分别是杂凑函数、密钥派生函数和随机数发生器函数。杂凑函数用于将一个比特串映射为一个固定长度比特串的函数,与其他椭圆曲线加解密应用不同的是,协议规定杂凑函数使用国密SM3算法,其安全性与SHA256相当,但高于SD5、SHA224等[12];辅助函数虽不是算法执行的核心部件,但其运算强弱也会影响加解密算法的安全性。本文主要对SM3算法采用相同的建模方式,比较其软硬件架构对算法性能的影响。
2.3 基于TomMath库的软件设计
软件设计包括了算法模块的设计以及流程控制,它的作用一方面作为参考模型,用来验证硬件模型的正确性; 另一方面通过比较软硬件执行周期数,得出合理的划分方式。实验使用TomMath库对算法模块进行实现,有别于SUN公司提供的基于OpenSSL实现方式的是,TomMath库编译后可以直接运行在ARM处理器。该库包含了一系列模运算,通过其自带的数据类型以及函数调用可以很方便地实现算法底层到顶层各个模块。
对于算法应用层的流程控制,则主要包括:1)初始化输入数据,传递参数;2)算法辅助函数的实现,包括密钥扩展函数、杂凑函数等;3)输出结果,对结果进行分析。本实验采用ARM内核IP,所以通过添加存储器等外设,即可让软件编译后直接运行在内核上,通过在线仿真与调试得到与相应模块的运行效率,过程简单,结果准确。
3 实验结果分析
在验证过程中,ESL与RTL模型的仿真均采用Linux环境下VCS(Verilog Compile Simulator)仿真器,主要包括系统级仿真与模块级仿真。模块级仿真主要针对256位素域模运算与点运算,将结果与软件运算的结果进行比较可以得知模型的正确性,同时,重点通过比较两者的执行周期数判断模块性能。
3.1 性能比较
不同的参数使得算法的运算时间不同,特别是模n的选取,会使得软件运算结果有很大不同。实验采用SM2标准加密算法推荐使用素数域256位参数的椭圆曲线,在计算软硬件执行周期过程中,通过改变最高4位的值,循环计算并取平均值,得到更加精确的结果。以模乘运算为例,分别取n的最高4位为0(252), 1(253), 3(254), 7(255), f(256),对应横坐标输入也是同样的变化,其结果如图4、图5所示。
由此可以得出用软件与硬件实现256位模乘平均需要周期数分别为42293与536。对于算法其他模块的执行周期数如表3所示。
根据以上数据,可以得出对于256位素域模运算,采用硬件实现模加减要相对软件的加速比为100.7,模乘加速比为80,而模逆由于运算复杂度高,硬件模块加速比能达到500。对于点加和倍点运算,硬件加速比为10。
根据第2章的分析,在进行软硬件划分时除了要考虑模块本身的执行周期,还需要考虑软硬件之间的通信次数。由于顶层点乘模块会多次调用点加与倍点运算,次数为密钥长度256,所以综合模块运算时间与调用次数,硬件实现点乘相较于软件实现所需周期数,其倍数能提高500倍,性能得到大幅度提高。对于应用层杂凑部件SM3,本文实验中软件实现该模块需要周期数28900,由于模块较小,在整个流程中只调用一次,为了减小面积及功耗,增加应用的灵活性,选择用软件实现。
在时钟频率为50MHz下对加解密进行整体评估,用软件完成一次加密算法超过10s。若采用点乘部分作为硬件加速模块,点乘时间为20ms,完成一次加密需40ms,对应解密运算由于比加密少计算一次点乘,所需时间为加密时间的一半。因此针对以上不同的划分方式以及相应的仿真结果,可以得出采用结构3,即硬件实现点乘及其以下运算模块,其他模块采用软件实现可使得算法性能最佳。
3.2 算法实现与资源开销比较
根据2.1节所述,将ESL模型转化成对应RTL状态机时,通过比较,其周期数相似度达95%以上,证明了该ESL模型的准确性。
算法硬件加速模块在提升运算性能的同时也导致芯片面积和功耗增加。对经转化得到的RTL模型,在Design Compiler和GSMC 180nm CMOS工艺,1.62V供电条件下,通过编写相应约束文件进行逻辑综合,得到不同模块面积和功耗如表4所示。
表4数据显示点加和倍点运算占用芯片大部分面积,分别是模运算的7倍、12倍,两者功耗和则占模块总功耗94%。因此对于成本受限或功耗要求严格的系统,可选择在牺牲相关性能的情况下,采用结构1与结构2结合,硬件实现模运算,同时对点加和倍点进行划分,采用软件或者软硬结合的方式实现。
4 结语
本文基于椭圆曲线算法实现原理,对集成于ARM处理器的SM2算法提出几种软硬件划分方式,通过电子系统级设计与统一建模语言对其进行周期精确级建模与仿真,快速有效地评估不同架构下的运行效率,同时将所得ESL模型转化为寄存器传输级模型,比较不同结构的面积和功耗,进而判断性能与资源开销的平衡。对于采用基于椭圆曲线加解密、密钥交换等算法的嵌入式SoC芯片开发的用户,可以在本文的分析基础上,用户可以结合自己实际需求,选择合适的架构并予以实现。
未来可进一步关注算法硬件加速模块VLSI实现架构的优化,并将软硬件集成到处理器内核对多种应用进行验证。为了将其封装为通用IP,还需考虑不同架构下的通用性及可配置性。
参考文献:
[1] ALSOMANI T F, KHAN E A, QAMARULISLAM A M, et al. Hardware/Software codesign implementation of elliptic curve ccryptosystems[J].Information Technology Journal,2009,8(4):403-410.
[2] TAN F. Highspeed coprocessor implementation of ECC algorithm[D].Xi’an: Xidian University, 2009. (谈飞洋.高速ECC算法协处理器设计[D]. 西安:西安电子科技大学,2009.)
[3] ZHOU F, SHI Z, GUO W, et al. High parallel configurable elliptic curve cryptographic processor over GF(p) field[J]. Computer Engineering,2012,38(16):142-144. (周发旺,史再蜂,郭炜,等. 高并行可配置的GF(p)域ECC处理器[J]. 计算机工程,2012,38(16):142-144.)
[4] XU J, WANG Z, YAN Y. HW/SW codesign of ECC ASIP[J]. Computer Engineering and Design, 2012,33(3):916-920.(徐劲松, 王志新, 严迎建. ECC专用指令处理器软硬件协同设计[J].计算机工程与设计, 2012, 33(3): 916-920.)
[5] ZHANG L, CHEN J, HUANG Y, et al. Research and design of elliptic curve cryptosystem SoC[J]. Journal of Huazhong University of Science and Technology: Natural Science Edition, 2008,36(11):52-55.(张丽娜,陈建华,黄尹,等. 椭圆曲线密码SoC的研究与设计[J]. 华中科技大学学报:自然科学版,2008,36(11):52-55.)
[6] SAKIYAMA K, BATINA L, PRENEEL B. HW/SW codesign for publickey cryptosystems on the 8051 microcontroller[J]. Computers and Electrical Engineering,2007,33(5/6):324-332.
[7] State Cryptography Administration. Public key cryptographic algorithm SM2 based on elliptic curve[EB/OL]. [2010-12-10]. http:///.(国家密码管理局. SM2椭圆曲线公钥密码算法总则[EB/OL].[2010-12-10]. http:///.)
[8] YOU Y. SoC design based on ESL design methodology[J]. China Integrated Circuit, 2011(9): 29-35.(游余新.基于ESL设计方法学的SoC设计[J].中国集成电路, 2011(9): 29-35.)
[9] LI H. CHEN X. Electronic system level design based on SystemC[M].Beijing: Science Press, 2010:9-11.(李挥,陈曦.SystemC电子系统级设计[M].北京: 科学出版社,2010:9-11.)
[10] HAU Y W, KHALILHANI M. SystemCbased HW/SW cosimulation platform for SystemonChip (SoC) design space exploration[J]. International Journal of Information and Communication Technology, 2009,2(1/2):108-119.
[11] HAU Y W, KHALILHANI M, MARSONO M N. SystemCbased hardware/software codesign of elliptic curve cryptographic system for network mutual authentication[J]. Malaysian Journal of Computer Science, 2011, 24(2):111-130.
[12] SUN R, CAI C, ZHOU Z, et al. The comparision between digital signature based on SM2 and ECDSA[J]. Network Security Technology and Application, 2013(2):60-62.(孙荣燕,蔡昌曙,周洲,等.国密SM2数字签名算法与ECDSA算法对比分析研究[J].网络安全技术与应用, 2013(2):60-62.)
推荐访问: 软硬件 协同 算法 嵌入式系统 芯片