作为新一代的公钥加密体制,相对其他加密技术而言,椭圆曲线加密算法在技术上具有安全性高、生成公私钥方便、处理速度快和存储空间小等方面的优势,这些优点使得它成为保证智能密码钥匙高效的安全机制的主要算法之一。
一、 安全椭圆曲线的生成
在进行数据加解密、数字签名以及身份验证之前,首先必须确立椭圆曲线。椭圆曲线域参数(domain_parameters)为一个七元组T=(m,f(x),a,b,G,n,h)。域参数的具体描述如下:m指明二次域上的扩展指数;f(x)为次数为m、系数为0或1的不可约多项式;a、b定义了一个非超奇异椭圆曲线E(F2m),E(F2m)是由方程y2+xy_=x3+ax2+b(a,b∈F2m,b≠0)的解集合(x,y)连同“无穷远点”O组成的点集合;G表示椭圆曲线上的基点;n是G的阶,且要求为大素数;h是n关于#E(F2m)的协因子即h=#E(F2m)/n[2]。
二元域F2m上的安全椭圆曲线的生成要利用到Weil定理,椭圆曲线产生的步骤如下:
Step1:选择二元域F2m的小扩域Fq1(q1=2d),其中d是一个小整数并且m能被它整除;
Step2:选择域Fq1上的一条非超奇异椭圆曲线,因为q1很小,所以很容易确定所有可能的椭圆曲线及其上的点数#E(F2d);
Step3:再计算域Fq1上的任一扩域F2dk上的椭圆曲线的点数#E(F2dk),这里要求k是素数,dk≥160,这是安全椭圆曲线所要求的位数;
Step4:因为#E(F2dk)一定包含小因子#E(F2d),计算椭圆曲线的阶为#E(F2dk)/#E(F2d);
Step5:令m=dk,再判断椭圆曲线的阶是否为素数,如果阶是素数且该椭圆能避免MOV攻击,则该椭圆曲线即是所求。
二、椭圆曲线密码算法在智能密码钥匙中数据加解密的应用
椭圆曲线密码算法采用如下流程对数据进行加解密:数据发送方先是对二进制明文进行编码,使之对应于椭圆曲线上的明文点,再利用加密密钥对其进行加密,使之对应于椭圆曲线上的密文点,之后就可以传输了;数据接收方收到数据后,将其理解为椭圆曲线上的密文点,用对应的解密密钥进行解密,得到的数据对应于椭圆曲线上的明文点,再经过解码接收方就能得到希望得到的二进制明文。加解密流程图如图1所示。
下面描述的椭圆曲线加解密过程是基于椭圆曲线ElGamal公钥加密算法(Elliptic Curve ElGamal, ECElGamal)的。
1、密钥生成过程
在对传输数据进行加解密前系统要产生相应的密钥对,密钥对的生成过程步骤如下:
(1)在区间[1,n-1]中随机选取一个整数KB;
(2)计算点PB=KBG,其中G(x,y)是F2m上椭圆曲线的基点,x,y∈F2m;
(3)公开终端B的公钥PB;
(4)私钥为整数KB。
2、加密过程
假定发送方A将消息m发送给接受方B。接受方B有公钥,且B保留自己的私钥PB。A对消息m进行加密操作如下:
(1)在区间[1,n-1]内选取一个随机数k,计算R=kG的值;
(2)用编码函数将明文m嵌入到椭圆曲线上,记作Pm=ENC(m),这是明文编码过程;
(3)查找B的公钥PB,计算C=Pm+kPB;
(4)传送加密数据(R,C)给B。
3、 解密过程
接受方B接收到加密数据后,执行如下解密操作:
(1)根据等式C-KBR=Pm,从而得到Pm;
(2)用解码函数将Pm恢复而得到消息m,这是明文的解码过程。
三、椭圆曲线加密算法在智能密码钥匙中数字签名的应用
数字签名方案是由签名算法和验证签名算法组成,签名过程通常是对消息摘要进行签名,接受者收到签名结果和消息摘要后进行验证。基于椭圆曲线算法数字签名过程主要分为密钥对的产生、生成签名和签名验证3个部分。在签名方A和验证方B之间,签名方A以认证方式发送明文m,验证方B收到后能验证出确实是A发送的。基于椭圆曲线加密算法的智能密码钥匙的数字签名和验证签名的流程如图2和图3所示。
1、密钥生成过程
在椭圆曲线数字签名过程中,密钥对的产生过程与前面加解密的密钥产生过程一样。
2、 数字签名运算过程
(1)在区间[1,n-1]内选取一个随机数k;
(2)计算kG=(x,y),将结果坐标的x值转化为整数,然后求r=xmodn;
(3)计算k-1modn;
(4)计算e=SHA-1(m);
(5)将r视作字节串,计算s=k-1(e+KAr)modn;
(6)A发出(r,s)作为消息m的数字签名给B。
3、验证签名运算过程
(1)B收到A发出的报文m及其签名(r,s)后,验证r和s是[1,n-1]上的整数,否则丢弃改签名;
(2)计算e=SHA-1(m);
(3)计算w=s-1modn,n1=ewmodn,n2=rwmodn;
(4)查找获得用户A的公钥PA,计算(x,y)=n1G+n2PA;
(5)计算v=xmodn;
(6)B验证是否有v=r,若成立,则接受(r,s)作为A对报文m的签名;否则拒绝。
四、椭圆曲线加密算法在智能密码钥匙中身份认证的应用
椭圆曲线加密算法是采用以下流程来完成对用户PIN码进行验证的,如图4所示。
(1)用户输入PIN码,USB Key产生随机数N,将PIN码与N进行异或运算;
(2)在USB Key中运用加密函数,计算M=f(N⊕PIN,AK),其中AK为密钥;
(3)提交结果,将M、AK作为参数提交给解密函数;
(4)运用解密函数进行解密运算,计算N'=f'(M,AK);
(5)将N与PIN进行异或运算,将异或结果与N'进行比较,若相同则说明用户为合法用户,否则为非法用户。
在这个验证过程中,USB Key把PIN码的比较过程放在USB Key内部完成,减少了PIN码暴露的可能性;并且在信息的传输过程中采用椭圆曲线加密算法,节省存储空间和带宽并且提高了处理速度,从而缩短了USB Key与应用程序间传送数据的时间,很好的满足了系统安全性能要求。
小知识之智能密码钥匙
智能密码钥匙是基于智能卡和USB技术的数据安全产品。该系列产品在Windows2000以上的操作系统中均无需要安装驱动操作,可安全有效地储存数字证书和密钥,保护用户的身份识别信息,保证网络认证双方身份的真实性。该产品已广泛应用于网上银行、网上整卷、电子商务、电子政务等领域。