椭圆曲线密码体制在SET协议中的应用
哈尔滨工程大学计算机科学与技术学院(150001) 张国印 施 勇
随着Internet的蓬勃发展,电子商务交易的安全性正逐渐引起人们的重视。两大信用卡公司Visa和Mastercard联合推出了基于信用卡的网上安全电子交易协议SET(Secure Electronic Transaction)。为了保证交易的安全,SET协议主要使用对称和非对称加密算法来实现交易各方的身份、信息的数字签名和加密,其中的非对称加密是通过RSA算法实现的。但是,随着椭圆曲线密码在密钥长度、加密强度和速度上的种种优越性越来越明显,椭圆曲线密码受到了更多的关注。
1椭圆曲线密码体制
1.1椭圆曲线密码体制的加密原理
椭圆曲线可以定义在任意的有限域上,主要在有域Zp(p为素数)和特征为2的有限域F2m。(m≥1)上。椭圆曲线密码体制的加密原理基于有限域上椭圆曲线离散对数问题(ECDLP)的困难性。下面以定义在奇特征域上的椭圆曲线为例,说明椭圆曲线密码体制的加密原理。
设GF(p)是一个P≠2,3的奇特征有限域,定义在GF(P)上的椭圆曲线是指满足Weierstrass方程:y2=x3+ax+b(a,b∈GF(p),且满足4a3+27b2≠0)的所有解,(x,y)∈GF(p)*GF(p)与无穷远点O构成的非空集合。设P是椭圆曲线E(a,b)(GF(p))上的一个点,则E上关于户的椭圆曲线离散对数问题为:给定一点Q∈E(a,b)(GF(p)),求解整数x(x∈GF(p)),使xP=Q。如果这样的数,存在,就是椭圆曲线离散对数。也就是说选取该椭圆曲线上的一个点P作为基点,给定一个整数x,求解xP=Q是容易的。但是要从Q点和P点推导出整数x,则是非常困难的。
1.2安全参数的选取和密钥的生成
基于椭圆曲线的密码体制操作都包含由一些椭圆曲线域参数所确定的有限域上椭圆曲线的算术运算。通常,将有限域上椭圆曲线域参数T定义为一个六元组:T=(p,a,b,C,n,h)。其中p,a,b的意义同上;G(xCG,yG)是椭圆曲线上的一个基点,G≠O,使nG=O的正整数n称为点C的阶,记为n=ord(G);整数h是余因子,h=#E(GF(p))/n。由以上参数可以惟一地确定一个椭圆曲线。在[1,n-1]之间随机地确定一个整数d,计算Q=dG,由此就确定了密钥对(d,Q),其中:d是私钥,需要保密,Q是公钥,可以公开。而六元组T也要完全公开。
2 RSA算法在SET协议中的应用及与椭圆曲线密码算法的比较
2.1 SET协议中的技术
为了保证消费者个人信息的机密性,SET协议采用了双重签名技术,它是基于数字签名的新应用,也是整个协议的技术。当客户要购买商家的商品时,客户要发给商家购买订单及信用卡信息。但是客户不希望银行看到个人的消费信息,也不想让商家获得个人的信用卡账号信息。要达到这个要求,就需要使用双重签名技术。假设S为持卡人(Sender,发送者),A为商家(Accepter,接收者)。现在S决定购买A的商品,需要向A发送一份订单信息和一份支付信息。S首先要将订单信息(OI)和信用卡信息(PI)分别做消息摘要,把二条摘要连接起来生成一个新的消息摘要,并用S自己的签名私钥SSPV进行数字签名,这就形成了双重签名。双重签名的实现如图1所示。
2.2 RSA算法在SET协议中的应用
SET协议中传输的信息都进行了加密处理,它使用公钥加密算法RSA和对称密钥算法DES对信息进行加密。其中,RSA算法在协议中扮演了极其重要的角色,协议中使用到RSA算法的地方有:数字签名的生成和校验、数字信封的加密和解密。下面接着上文说明RSA在整个协议中的应用。S将订单信息、双重签名、信用卡信息摘要和S的签名数字证书放在一起,用随机生成的对称密钥K加密,形成加密信息;从A发来的交换数字证书中提取A的交换公钥AEPU,用它对K加密,形成数字信封;把加密信息和数字证书放在一起,组成了S要发送给A的信息包,如图2所示。
当A接到S发来的信息包时,A首先用自己的交换私钥AEPV解密数字信封,得到对称密钥K;然后,用K解密发来的加密信息,获得订单信息、双重签名、信用卡信息摘要和S的签名数字证书。为了验证S的身份和信息的真伪,A先验证S的数字证书的真假。如果证书是真的,再从证书中提取S的签名公钥SSPU,用它解密双重签名,得到原始的双摘要。A对订单信息进行Hash,得到订单信息的摘要,把它和信用卡信息摘要连在一起,生成一个新的双摘要。比较二个双摘要,如果它们是一致的,就说明发送的信息是真实的,中途没有被篡改。其过程如图3所示。
2.3椭圆曲线与RSA的比较
椭圆曲线密码算法相对于RSA系统而言,其离散对数的困难性在计算复杂度上达到了全级指数。而RSA所基于的大整数因子分解问题只是亚指数级,因此对于椭圆曲线密码算法来说,只需要180位左右的密钥就可以达到1 024位RSA算法提供的安全等级。因此,在SET协议中使用椭圆曲线密码的加密和签名算法代替RSA算法,在相同等级的安全条件下,将使网络交易的性能和速度获得显著的提高。
3 基于椭圆曲线密码体制的、签名和加密的方案
选取有限域GF(p)上的一条椭圆曲线E,在E(a,b)(GF(p))上选取一点G,G的阶数为n,确定参数T(p,a,b,G,n,h),选取安全的Hash函数H,T、H公开。
3.1数字证书的生成与
在应用椭圆曲线的SET协议中,CA(中心)生成的椭圆曲线证书应包含密钥Q和对应的椭圆曲线参数T,而RSA算法的证书仅仅需要包含公钥即可。D是CA的签名私钥,Q=dG是签名公钥。
(1) 数字证书的生成
① 用户S向CA提交个人身份资料ID和公钥Ksp;
② CA选取随机数k,且k∈{1,2……,n-1},计算kG=(x,y),r′=x(mod n);如果r′=0,则重新选取k;
③ 计算e=H(ID+Ksp),得到信息的摘要;
④ 计算r= r′e(mod n),s=k+rd(mod n),如果r=0或s=0,
3.2数字签名的生成和信封的加密
设S为持卡人,它的签名证书为CAs,签名密钥对为(SSPU,SSPV);A为商家,它的交换证书为CAA,交换密钥对为(AEPU,AEPV)。仍以上面的信息流和图2来描述椭圆曲线的应用,包括数字签名的生成和信封的加密。
①S通过CA中心对A的证书CA+进行验证,如果无效,则交易中止;否则,从证书中提取A的交换公钥AEPU。
②生成双摘要,e=H(H(OI)+H(PI))。
③S根据签名证书中椭圆曲线参数T生成一对随机的密钥对(k,X)。其中X=(x,y),然后使得r=xe(mod n),s=k+rSSPV (mod n),S=(r,s)就是采用椭圆曲线算法的数字签名。
④根据DES算法生成随机的对称密钥K。把OI、H(P1)、S和CAs连接到一起,用K加密,得到加密信息D。
⑤S根据A的交换证书中的椭圆曲线参数生成一对随机的密钥对(k′,y′),计算i=k′AEPU,X′=(x′,y′)=k′G,j=x′K,则E=(i.j)就是数字信封。
⑥将(E,D)发送给接收者A。
3.3数字签名的校验和信封的解密
①A接到S发送的信息,首先用自己的交换私钥AEPV解密信封月,根据GAEPV=AEPU,计算AEPV-li=k′,AEPUAEPV-1=k′G,求出(x′,y′);
②由I=x′K,可导出K=jx′-1,得到对称密钥K;
③用K解密信息D,得到OI、H(PI)、S和CAs;
④A通过CA中心对S的证书CAs进行验证,如果无效,则交易中止;否则,从证书中提取S的签名公钥SSPU。
⑤验证数字签名S=(r,s)。判断r、s是否属于{1,2,……,n-1},如果不属于,则签名无效。
⑥生成双摘要,e=H(H(OI)+H(PI))。
⑦计算X=sC-rSSPU=(x,y),如果X=0,则签名无效否则,计算ze(mod n)。只有当F=xe(mod n)时才能证明签名是有效的。
4结束语
随着电子商务的发展,SET协议也在不断完善之中。现阶段制约其发展的主要因素是交易的安全性和速度。利用ECC实现的、数字签名和数字信封在运算速度、密钥长度和每比特位强度上都比其他公钥算法有着很大的优势。因而,椭圆曲线密码体制在SET协议中的应用具有非常广阔的前景。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。