当前位置:首页 > 嵌入式 > 嵌入式教程

摘 要: 根据椭圆曲线密码体制的几种关键算法,采用Modelsim仿真工具设计相应的算法模块。然后将各模块代码通过System Generator生成对应的系统模块,再将这些模块搭建成完整的ECC系统。最后对整个ECC系统进行仿真,实验数据进一步验证了该设计的正确性。
关键词: System Generator; 椭圆曲线; 有限域

椭圆曲线密码系统(ECC)与其他公钥加密系统相比,因其密钥长度短、安全强度高等诸多优点,被公认为最有前途的公钥密码体系,受到人们的普遍关注和研究[1-4]。
在国内外有关ECC的研究方面,主要集中在 ECC的时间复杂度和空间复杂度上[2-4]。参考文献[2]研究模逆和标乘的快速算法,参考文献[3]针对KP算法将改进的Booth算法嵌入传统算法,极大地降低了迭代次数和有限域运算量。参考文献[4]将所有的模运算全转化为模乘运算和模加运算,并改进了LSD乘法器,利用该单元进行模运算,从而其硬件实现了具有面积小、速度快等优点。目前国内的密码技术还是落后于国外,特别是在生活应用中,国内的企业基本上是引用国外的密码技术进行二次开发。如果要将实现的椭圆曲线密码系统应用到实际中,则需要通过系统集成芯片设计(SOC),将FPGA上实现的椭圆曲线密码系统集成实用性的加密芯片。一旦设计过程中所需的资源和条件不够完善,将导致加密芯片的制作难以实现。为此,本文借助Xilinx公司提供的强大的系统级硬件仿真工具System Generator[5],研究并设计ECC加解密系统。
1 椭圆曲线密码体制
由于最终是要在硬件上实现椭圆曲线密码体制[6],所以本文选择的有限域是特征为2的GF(2n),选择的椭圆曲线方程如式(1)所示。
 

可见椭圆曲线密码体制涉及到GF(2n)上的模加运算、模乘运算、求逆运算,还有椭圆曲线的KP点乘运算,下面对几个主要算法进行分析。
1.1 GF(2n)域上的模乘运算
模乘模块是整个设计中最关键的模块,模乘的过程包括多项式相乘和取模两个过程。传统的乘法器是将两个m位操作数相乘,然后对其进行f(x)求模。这样的缺点就是需要一个2m位的寄存器来存储中间结果,势必会浪费资源。本文采用全串行移位相加法来实现模乘运算[6]。该算法只有简单的移位和“异或”运算,但是需要大量的移位运算,如果A、B具有m位,则需要进行m-1次移位运算,这是比较耗时的。但是本文使用的FPGA工作在61.44 MHz时钟下,m一般取值在200左右,因此全串行移位相加法大概需要的是ns级的时间,而且全串行移位算法也是最节省资源的算法。通过Modelsim仿真该模块,得到图1所示结果。其中, clk是系统时钟61.44 MHz;reset是系统复位信号;en是使能端口;din是乘数输入端口,低位在前;dout是输出结果;rdy是输出结果有效指示。

1.2 GF(2n)域上的模逆运算
  对于GF(2n)域上的模逆运算,当今最有效的算法就是扩展欧几里德算法和基于费马定理的模逆算法。扩展欧几里德算法用时会比基于费马定理的模逆算法用时短很多,但是相应地是以牺牲硬件资源为代价,在后面的点乘算法和最后的椭圆曲线密码体制的实现耗用资源很大。扩展欧几里德算法还要去另外设计一个多项式模块,而基于费马定理的模逆算法只需要反复调用先前做好的模乘模块就行,再加上本文用的FPGA时钟频率本身就高,因此本文选择费马定理来做模逆算法。通过Modelsim仿真该模块,得到图2所示结果。其中,clk是系统时钟61.44 MHz;reset是系统复位信号;en是模逆使能;din是输入数据;a_inv是输出结果;rdy是输出结果有效指示。

选取参数:
K=157E51751D89C66CBDF44596BF7F653876A18C4B12
40B85A;
x=36B3DAF8A23206F9C4F299D7B21A9C369137F2C84
AE1AA0D;
y=7658E73433B3F95E332932E70EA245CA2418EA0EF9
8018FB;
b=2E45EF571F00786F67B0081B9495A3D95462F5DE0A
A185EC;
f=800000000000000000000000000000000000000000000
201。
仿真结果:
Cx=34EEC5768673E71B8CDC139FB8EB4ACD9989FAA
E1EC9EF1D;
Cy=779097F490A2DA7A6B09A9518733B4817D5C21947
547D2A1。
2 System Generator搭建ECC加密系统
System Generator是业内领先的高级系统级FPGA开发工具。其作用是借助FPGA设计高性能DSP系统并和Simulink实现无缝链接,快速建模并自动生成代码[5]。System Generator最大的特点就是可利用Simulink建模和仿真环境来实现FPGA设计,无需了解和使用RTL级硬件语言,让DSP设计者能够发挥基于FPGA的DSP的最大性能和灵活性,并缩短整个设计周期。前文用FPGA实现了ECC的各个关键模块,下面用先前生成的各个模块代码通过System Generator的黑盒子生成各自相应的模块。再将这些模块搭建成完整的ECC模块,以便在Matlab工作空间中输入相应的参数、明文和相应的使能端口就可以实现加密;输入相应的参数、密文和相应的使能端口就可以实现解密。但是本文所涉及的参数较大,输入的过程很耗费时间,因此本文将参数都固定在一个ROM中间,只要控制相应的使能信号,就可以达到一个加解密的模拟过程。
2.1数据输入模块的搭建
本文中的端口有使能端口和参数端口,其中,使能端口是1 bit的,就可以用计数器来实现。对于191个bit位的参数,可先将其分解成6组的32 bit系数, 存在如图4所示的ROM中,只要改变ROM中的值就可以控制输入参数的值,改变3个常数模块就可以控制参数输入的时刻。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭