基于FPGA的椭圆曲线加密设计

2019-01-17 10:30:54 来源:网络
标签:

摘 要: 椭圆曲线加密是一种目前已知的所有公钥密码体制中能够提供最高比特强度的一种公钥体制。在FPGA实现椭圆曲线加密系统时,基于GF(2)的多项式有限域中的乘法、求逆运算是其中的两大难点。本文提供了一种椭圆曲线加密的FPGA实现的结构,着重讨论了基于GF(2)的多项式有限域中的乘法、求逆运算的实现,并与软件实现的性能进行了比较。

 

加密的安全性
从数论的角度来说,任何公钥密码系统都建立在一个NP(无法处理的问题)的基础上,即对于特定的问题,没有办法找到一个多项式时间算法求解该问题。一般求解此类问题的算法都是指数时间或者亚指数时间,例如现在常用的RSA算法就是基于大整数因式分解问题的难解性。经过近三十多年的研究,RSA算法虽然并不存在多项式时间的算法,但是可以找到亚指数时间的算法,目前其密钥长度必须大于1024位才能保证信息传递的安全,而椭圆曲线加密系统 (EllipTIc Curve Cryptosystem—ECC) 是目前已知的所有公钥密码体制中能够提供最高比特强度 (Strength-Per-Bit) 的一种公钥体制,只需要160的密钥就可以达到1024位RSA算法提供的安全等级。其根据是有限域上的椭圆曲线上的点群中的离散对数问题(ECDLP),许多密码专家认为它是指数级的难度。因此对于椭圆曲线加密系统来说,这一点从计算量、处理速度、存储空间和通信带宽等角度分析,椭圆曲线加密系统都有很大的优势。IEEE已经制定的公钥加密算法标准P1363就是基于ECC算法的。现在密码学界普遍认为它将替代RSA成为通用的公钥密码算法,目前已成为研究的热点,是很有前途的研究方向。

 

图1 点算法实现

 


图2 密钥、数据交换

 


图3 椭圆曲线加密系统结构图

 


图4 椭圆曲线加密系统FPGA电路模块框图

 


图5 验证系统结构

 

椭圆曲线加密体制
椭圆曲线

引进Non-supersingular椭圆曲线Weierstrass方程E:Y2+XY=X3+aX2+c其中a,c∈GF(2k),c≠0。为简化以后的运算,引进z使X=x/z;Y=y/z,则椭圆曲线方程化为E:y2z+xyz=x3+ax2z+cz3,定义(x, y, z)=λ(x, y, z)。可以看出当z≠0,(X, Y)和(x, y, z)相对应,当z=0可以理解为沿y轴趋向无穷远,定义为无穷远点O。则椭圆曲线上所有的点外加无穷远点构成的集合构成一个Abel群,O是单位元(零元)。在椭圆曲线E上定义了两种点运算:点运算和点运算。


1) 椭圆曲线上点运算定义为:设P=( x1, y1, 1)∈E,Q=( x2, y2, 1) ∈E,-P=( x1, y1+ x1, 1), 当Q≠-P时 PQ=(x3, y3, z3) 则
当P≠Q时:
其中A=(x2z1+x1),B=(y2z1+y1), C=A+B,D=A2(A+a2z1)z1BC
当P=Q时:
其中


2) 椭圆曲线上的点运算定义为:设P=(x1, y1, 1)∈E,(ltlt-1...l0)2是整数l的二进制表示形式,lP=PPAP=Q且Q∈E。


利用上面的点运算,得点算法实现如图1所示。定义l=logpQ,若P的周期很大,则利用l、P求Q是比较容易的,但利用P、Q求l是很难处理的,这就是ECDLP,椭圆曲线加密就是建立在这个难题之上。


加密体制
在Diffe-Hellman公钥系统体制中,具体的椭圆曲线、曲线上点P及P的周期大素数N都是公开信息。
A和B要进行通讯,首先得到椭圆曲线E、点P及素数N。然后用户A将[1,N-1]中随机选取的整数a作为私钥,A将KpubA=aP作为自己的公钥传送给用户B,与此同时B将 [1,N-1]中随机选取的整数b作为私钥,并将KpubB=bP作为自己的公钥传送给A。A、B各自将自己的私钥点乘于对方传过来的公钥得到KAB,这样就完成了密钥的交换过程。当用户A需要将待传数据m传送给用户B时,A利用m和KAB生成Em,当用户B得到Em后,利用密钥交换过程自己生成的KAB和从用户A处得到的加密数据Em生成数据m。见图2。

 

椭圆加密体制实现
迄今所投入使用的椭圆加密系统中,绝大部分的密钥长度都比较短,一般集中在30~60位,这是因为在软件实现时,由于软件执行速率所限,密钥长度比较大(≥160)的椭圆加密系统的速率将达不到使用要求。与此同时,在硬件实现时,密钥长度比较大的椭圆加密系统将耗费大量的硬件资源。随着椭圆加密算法研究的深入和可编程逻辑器件的快速发展,利用可编程逻辑器件实现椭圆加密系统已经是一个可能的选择,下面将介绍一种实现方案,并且用软、硬件分别实现。


根据以上椭圆加密体制的要求,设计出图3的加密系统结构图,其中椭圆加密系统参数接口获取与加密有关的椭圆的基本参数,如私钥、椭圆曲线、椭圆曲线上的给定点等。椭圆曲线乘法控制部分主要负责如何计算乘法结果,会大量调用PP和PQ来实现乘法功能;而PP和PQ通过有限域加法、乘法和求逆的调用得到结果。


软件模型验证
软件实现的主要目的是为硬件实现建立验证模型,整个软件的结构如图3所示。在软件验证系统实现的过程中,有限域上的加法是异或操作。有限域上的乘法和求逆是关键点,必须预先考虑到硬件实现时的资源消耗,需要高效的算法。在此系统中使用了复合域GF((2n)m)带来的特殊性,可以高效、快速的实现乘法和求逆运算。


* GF(2n)上的乘法:A(y)&TImes;B(y)=C(Y)modQ(y),Q(y)为既约多项式。常用的有: Paar-Rosner乘法器、Mastrovito乘法器、Massey-Omura乘法器、Hasan-Bhargava乘法器等,此处介绍两种选择:
1) 当n比较小时可用查表法实现,设ω为Q(y)=0的本原根,则F2n={0,ω,Aω2n-1},利用查表法取得A、B的级次数a、b,C的级次c=a+b,再次利用查表法由c得C。在本系统中就使用了此法实现GF(2n)上的乘法。
2) 当n比较大时,利用查表法资源消耗太大,难以承受,可利用C=Z&TImes;B(n比较大时),Z是由A(y),Q(y)确定的矩阵,其中:

 

* 复合有限域的乘法:以GF((24)2)为例,利用GF(24)上的乘法和加法可以构造出GF(28)的乘法。子域GF(24)的本原多项式为Q(y)=y4+y+1,第二个子域的本原多项式为R(z)=z3+z+ω14,其中ω是GF(24)的基底元素,满足Q(ω)=0。域中两个元素的乘法[a0+a1z]&TImes;[b0+b1z]可以表示为:

 

这样GF((24)2)在复合域上的乘法就可以通过GF(24)上的有限域的数学运算而得到。
* 复合有限域的逆运算:复合有限域GF((2n)m)中的元素A的逆为:

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
拒绝华为offer的复旦博士,蔡宇杰的“开挂”历程

“与其去大疆做一些娱乐性产品,不如选择去华为‘救国’”,蔡宇杰坐在对面,向我说道。

FPGA是否可以脱离CPU独立部署?

作为一种硬件可重构的体系结构,FPGA经常被用作专用芯片(ASIC)的小批量替代品,随着全球数据中心的大规模部署,以及人工智能应用的落地,FPGA凭借强大的计算能力和高度的灵活性有了更多的用武之地。

如何寻找并使用一个适用于FPGA的机器学习平台?
如何寻找并使用一个适用于FPGA的机器学习平台?

随着摄像头和其他设备产生的数据在快速增长,促使人们运用机器学习从汽车、安防和其他应用产生的影像中提取更多有用的信息。专用器件有望在嵌入式视觉应用中实现高性能机器学习 (ML) 推理。但是此类器件大都处于早期开发阶段,因为设计人员正在努力寻找最有效的算法,甚至人工智能 (AI) 研究人员也在迅速推演新方法。

FPGA 设计经验分享

从大学时代第一次接触FPGA 至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表、抢答器、密码锁等实验时那个兴奋劲。

FPGA小技巧:面积换速度的实例讲解
FPGA小技巧:面积换速度的实例讲解

在FPGA中,如果要将一个采样率为480MHz,中频频率为302.5MHz的信号变频到零中频的基带信号,要怎么做呢?

更多资讯
Qualcomm董事会任命Mark McLaughlin担任董事长

Qualcomm Incorporated(NASDAQ: QCOM)今日宣布任命Mark McLaughlin接替Jeff Henderson担任董事会董事长,该任命于2019年8月13日生效。

科技成就品质生活 戴森举办“智享-净鉴”杭州分享会

今日,戴森在杭州举行地板清洁类新品媒体分享会,旨在为当地家庭提供完整的家居清洁方案。Dyson V11 Absolute智能无绳吸尘器、Dyson V7 Mattress手持除螨吸尘器及Dyson 360 Heurist智能吸尘机器人皆为现代繁忙生活背景下的各类清洁难题设计,协助用户吸除日常生活中的常见微尘,有害颗粒及过敏原[1],以科技

践行“数据中心优先”策略,赛灵思再发U50完善Alveo平台

IDC预测,到2025年,全球将有416亿台物联网设备,并将产生79.4 zettabytes(zb)的数据。虽然数据被看作未来的石油,但是同样也需要强大的算力将无序的数据加以提取,形成有用信息,才能给用户带来价值。由于数据在源源不断产生,只凭借CPU进行计算已经远远无法满足需求,于是设计人员开始采用异构架构为数据中心加速,FPGA发挥越

剑指 CPU 和 GPU,FPGA 开辟新战场

在网络、计算和存储领域,越来越多的应用需要专用的架构,以使硬件能够和算法进行匹配,从而达到最佳运行效果,或者是提高它的运行速度。现在,网络上有很多不同的数据,这些数据在运行过程当中,它的要求是不一样的。

谷歌用了数千块TPU重建出了果蝇大脑神经图,能用来做什么?

研究大脑神经网络,又有新进展。