当前位置:首页 > 工业控制 > 电子设计自动化

摘 要: 点乘算法是椭圆曲线密码体制中决定速度和硬件资源的关键部分。在深入分析混合结构乘法器并在FPGA上实现经典椭圆曲线点乘算法基础上,设计与实现了一种基于NAF编码混合结构乘法器思想的椭圆曲线点乘算法。对实现的点乘算法进行仿真测试和性能评估表明,新设计实现的基于混合结构乘法器的点乘算法在计算速度和资源使用上具有明显优势。
关键词: 有限域;FPGA;NAF;椭圆曲线点乘;算法安全

椭圆曲线密码体制(ECC)作为新一代公钥技术的典型代表,提供了更好的算法实现性能、更高的安全性和更低的实现代价[1],同时能够完成数据加密和数字签名的功能。
现场可编程逻辑门阵列(FPGA)是一种基于4输入查找表(LUT)、通过可编程互联连接的可配置逻辑块(CLB)矩阵的可编程半导体器件。与为特殊设计而定制的专用集成电路(ASIC)相对,FPGA可以针对所需的应用或功能要求进行编程。其逻辑资源远比一般处理器多,而且具有编程方便、集成度高、速度快的特点。目前以硬件描述语言(VHDL或Verilog HDL)所完成的电路设计,可以经过简单的综合与布局,快速下载至FPGA上进行测试,因而被称作是现代IC设计验证的主流技术。
目前,ECC的实现方案主要有软件和硬件两种,其中硬件实现方案因具有运算速度快、带宽要求低等优势,被广泛应用于硬件加密设备和无线网络通信等领域。
FPGA芯片在执行加密过程中,会有消耗能量的晶体管充放电过程。功耗分析时,依赖于硬件的各种加密操作与功耗具有相关性,其原理是通过监测硬件在加密过程中产生的功耗曲线,利用统计学和攻击者的经验对收集到的信息进行分析,从而获得加密过程的相关数据[2]。
本文采用NIST定义在有限域GF(2m)上的Koblitz曲线:y2+xy=x3+x2+1。建立在该曲线上的椭圆曲线点乘运算可以快速实现,因此特别适合构建高效的密码系统。

ECC的安全性主要依赖于椭圆曲线离散对数问题(ECDLP)的难解性。ECDLP的定义如下:若P是椭圆曲线E上的一点(称为基点),P的阶为素数n,k为一随机选择的正整数,已知Q=kP,无法求得或者很难求得k,把Q定义为公钥,k为私钥。
在椭圆曲线上建立公钥密码系统的过程中,其核心计算是点乘运算,因此对椭圆曲线点乘算法进行深入研究很有必要。
ECC的层次结构由自上而下可分解为加解密层、群运算层、域运算层,如图1所示。各个运算模块通过状态机的合理控制,实现FPGA上椭圆曲线点乘算法。

随着计算资源的急剧膨胀,特别是边信道攻击等新型的密码攻击方式的出现[5],给ECC的安全性带来一定的挑战。针对ECC边信道分析攻击,采取的防御手段既有在算法实现方法上改进的软件手段,也有通过增加噪声干扰和采用数模混合电路产生真随机数来扰乱掩码和时钟的硬件手段[6]。
1.2 实现方案
在FPGA上实现各种密码算法的过程中,应考虑到FPGA的既定芯片资源限制以及如何在更少的资源量和更快的时序中找到平衡点这两个因素。
由于1个求解逆元的操作在计算时间上约和70个乘法器相近[7],因此在实施ECC的点乘算法时,应尽量减少使用求逆运算。
在设计与实现椭圆曲线的点乘算法时,本文内容主要将作如下安排。首先,从算法级别对乘法器运算单元进行改进,以提高乘法器的速度。然后,对乘法器模块由混合结构乘法器实现的点乘运算进行性能评估。最后,在经典椭圆曲线点乘算法的实现过程中,通过使用乘法器代替模平方运算的方法来增加计算的隐蔽性,算法内部实现逻辑的改善,达到提高算法安全性的目的。
2 乘法器模块设计
有限域上的乘法器是点加运算和点乘运算所要涉及的核心运算。实现多项式乘法器最基本方法是移位相加,而移位操作在FPGA中实现非常方便,不需要使用任何逻辑单元。研究表明,根据FPGA的特点而设计的乘法器具有明显的速度优势。
本文使用的StratixⅡ系列器件是ALTERA公司基于1.2 V工艺的现场可编程门阵列。选用拥有高达72 768个ALUTs、903个IO资源的EP2S90F1508C3芯片作为乘法器实现方案的硬件基础,如图2。

图2中,A、B分别表示多项式乘法器的乘数与被乘数,F表示有限域GF(2m)的多项式基,CLK为主时钟信号,reset为复位信号,start为使能信号,result和done分别表示乘法器的运算结果和运算结束标志。
将混合结构乘法器[8]与目前点乘算法所使用的乘法器做包括资源占用和计算性能两方面比较。乘法器1是使用文献[8]中提到的乘法器实现的椭圆曲线点乘算法在EP2S90F1508C3芯片上的实现,乘法器2是目前点乘算法所使用的乘法器。
通过使用Synplify Pro 9.6对2种乘法器进行综合以及ModelSim-Altera的前仿真,文献[8]使用23个时钟数、算法2使用107个时钟周期所得到的资源和计算性能评估结果如表1和表2所示。

在200 MHz的时钟频率下,乘法器计算性能的评估结果如表2所示。
混合结构乘法器的计算性能较目前使用的乘法器2的性能有显著的提高。
为验证乘法器计算正确性,以163 bit的乘法器为例,其仿真结果如图3所示。

下面将在目标芯片上实现基于这两种乘法器的点乘算法。
3 椭圆曲线点乘算法的FPGA实现
计算有限域GF(2m)点乘kP的最直接方法是使用倍点和点加相结合的double-and-add方法。如果ki=0,则仅执行倍点计算;如果ki=1,则执行倍点计算和点加计算。Double-and-add算法需要(m-1)次倍点运算和m/2次点加运算[12],而使用非相邻(NAF)编码思想的二进制点乘算法可以将计算点加的平均次数减少至m/3[9]。
基于上述两种乘法器模块,本文实现的是使用NAF编码的163 bit二进制域上的椭圆曲线点乘算法。
3.1 基于NAF思想的椭圆曲线点乘
使用NAF编码思想计算椭圆曲线点乘是因为椭圆曲线上点的减法和点的加法一样有效,NAF编码可以在不使用椭圆曲线倍点计算的环境下实现点乘运算而仅使用点加和基本的域运算的状态下来完成二进制域上的点乘操作。
在计算NAF编码的二进制点乘算法时,首先需要知道如何计算给定数的NAF值,然后使用该算法的思想完成椭圆曲线的点乘kP计算。其算法描述如下:

其中,m表示运算比特位数,f(z)是有限域GF(2m)的多项式基,n是基点G的阶,x和y分别表示的是基点G的横坐标和纵坐标。
在使用工具Synplify Pro 9.6综合后,混合结构乘法器的点乘运算和基于原有乘法器的点乘算法相比,在计算性能和资源占用等性能上的评估结果如表4所示。

设计实现的基于混合结构乘法器的点乘算法(点乘算法1)在完成一次点乘运算的时间上较原有的点乘算法有所提高,且在资源占用上较原有算法有所减少,与同类型的点乘算法相比在计算性能上有明显提高。
4 算法安全性
基于Montgomery Ladder的椭圆曲线多倍点运算是不安全的[10]。为了增加算法的抗功耗分析能力,通常的做法是采用增加计算的隐蔽性等软件手段或者引入噪声干扰以及掩膜方式等硬件手段[6]。
本文通过改进椭圆曲线点乘算法中的内部结构可以做到提高算法的抗功耗分析能力,其中使用乘法器替代模平方算法能有效防范边信道攻击[11]。本文以经典椭圆曲线点乘算法为例(算法1),从计算安全的角度考虑,使用乘法器替代模平方算法的方法和VHDL语言在 EP2S90F1508C3芯片中(算法2)实现。
在使用综合工具Synplify Pro 9.6对经典的点乘算法1和算法2进行综合后,在50 MHz的时钟频率下,两种点乘算法分别在9.6 ms和10.1 ms内完成一次点乘操作。可见,为了让经典椭圆曲线点乘算法获得更好的抗功耗能力,而使用乘法器替代模平方算法的改进措施对点乘算法的计算性能没有明显改变。
通过对实现基于混合结构乘法器的点乘算法仿真验证,结果表明,基于混合结构乘法器的点乘算法在运算速度上较改进前有一定的提高,和同类型的椭圆曲线点乘算法比较有显著提高。与此同时,为提高算法的抗功耗分析能力,使用模乘运算取代模平方运算的改进措施,对点乘算法的执行时间影响较小。
参考文献
[1] CHOI Y,KIM H W,KIM M S.Implementation of elliptic curve cryptographic over GF(2163) for ECC protocols[S].2001.
[2] DANIEL M G.A survey of fast exponentiation methods[J]. 1998,27.
[3] IEEE P1363/D13.Standard specification for public-key cryptography[C].1999(12).
[4] 王建,蒋安平,盛世敏.椭圆曲线加密体制的双有限域算法及其FPGA实现[J].北京大学学报,2008,44(6):871-875.
[5] AIGNER M,OSWALD E.Power analysis tutorial[C].Institute for Applied Information Processing and Communication University of Technology Graz,2000.
[6] 郑新建,张翌维,沈绪榜.SPA和DPA攻击与防御技术新进展[J].小型微型计算机系统,2009(4).
[7] 汪朝晖,陈建华.素域上椭圆曲线密码的高效实现[J].武汉大学学报(理工版),2004,50(3).
[8] 高献伟,靳济方,方勇,等.GF(2m)域乘法器的快速设计及FPGA实现[J].计算机工程与应用,2004(25).
[9] JOY M,TYMEN C.Compact encoding of Non-adjacent forms with applications to elliptic curve cryptography[J]. Public Key Cryptography,LNCS 1992,Springer,pp.353-364,2001.
[10] 赵彦光,白国强,陈弘毅.一种针对特征2域椭圆曲线密码芯片的差分功耗分析[J].微电子学与计算机,2006,23(12).
[11] 余荣威,陈建华.抗侧信道攻击的椭圆曲线点乘算法设计[J].计算机工程与应用,2006.

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

在工业控制系统中,Modbus RTU协议的CRC校验如同通信网络的"免疫系统",某石化厂DCS系统曾因CRC计算错误导致0.3%的数据包丢失,引发连锁控制故障。本文将深入解析CRC-16/MODBUS算法原理,对比软件...

关键字: Modbus RTU CRC 算法

加密算法分对称加密和非对称算法,其中对称加密算法的加密与解密密钥相同,非对称加密算法的加密密钥与解密密钥不同,此外,还有一类不需要密钥的散列算法。

关键字: 算法 嵌入式

在现代数字系统设计中,将算法高效地转化为 RTL(寄存器传输级)实现是 FPGA 工程师的核心任务之一。这一过程不仅需要对算法有深入理解,还需掌握 FPGA 的硬件特性和设计技巧。本文将详细介绍从算法到 RTL 实现的关...

关键字: 算法 寄存器传输级 数字系统

从本质上讲,算法是一种有条不紊、分步骤解决问题或完成任务的方法。无论是简单的数字相加公式,还是复杂的机器学习协议,算法都是软件应用的基础,确保任务能够高效有效地执行。

关键字: 算法 嵌入式

在自动驾驶技术的发展历程中,激光雷达(LiDAR)宛如一颗备受瞩目的新星,其独特的技术特性使其成为追求高安全性、高可靠性自动驾驶方案的首选。然而,这颗新星并非毫无争议,“价格昂贵、结构复杂、算法难度高” 等标签,也让一些...

关键字: 自动驾驶 激光雷达 算法

4月2日消息,近日,有关智能驾驶而引发的交通事故在网络上引起了大家的热烈讨论,对此,央视网评指出,“智能驾驶”,也请握紧方向盘。

关键字: 算法 智能驾驶

所谓排序算法,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序。这种新序列遵循着一定的规则,体现出一定的规律,因此,经处理后的数据便于筛选和计算,大大提高了计算效率。对于排序,我们首先要求其具有一定的稳定性,...

关键字: 排序算法 算法

快速排序通过一趟排序将待排序列分割成独立的两部分,其中一部分序列的关键字均比另一部分序列的关键字小,则可分别对这两部分序列继续进行排序,以达到整个序列有序的目的。

关键字: 快速排序 算法

算法,作为解决问题的精确描述,是描述策略机制的系统方法。让我们在周末轻松探讨五个具有深远影响的算法:Metropolis-Hastings算法、单纯形法、快速傅立叶变换、快速排序算法,以及计算特征值的QR算法。这些算法在...

关键字: 算法 快速排序算法

服务需要保护自己,以免被太多的请求淹没(无论是恶意或无意的),从而保持可用性。举个生活中的例子,某个景区,平时可能根本没什么人前往,但是一旦到了国庆假日就人满为患,这时景区管理人员就会实施一系列的限流举措,来限制进入的人...

关键字: 限流 算法
关闭