加密算法(四)——【椭圆曲线密码算法介绍】

一种相对比较新的技术--椭圆曲线加密系统,已经逐渐被人们用做基本的数字签名系统。椭圆曲线作为数字签名的基本原理大致和RSA与DSA的功能相同,并且数字签名的产生与认证的速度要比RSA和DSA快。下面我们简单的介绍一下椭圆曲线和椭圆曲线上的密码算法。

1. 有限域上的椭圆曲线

设K表示一个有限域,E是域K上的椭圆曲线,则E是一个点的集合:

E/K = { ( x, y ) | y2+ a1xy + a3y = x3 + a2x2 + a4x + a6,

a1, a3, a2, a4, a6 x, y K } { O } 其中O表示无穷远点。

在E上定义‘+’运算,P + Q = R,R是过P、Q的直线与曲线的另一交点关于x轴的对称点,当P = Q时R是P点的切线与曲线的另一交点关于x轴的对称点。这样,( E, + )构成可换群( Abel群),O是加法单位元(零元)。

椭圆曲线离散对数问题(ECDLP)定义如下:给定定义在K上的椭圆曲线E,一个n阶的点P E/K,和点Q E/ K,如果存在l,确定整数l, 0 l n - 1, Q = lP。我们知道,RSA是基于因子分解,其算法的核心就是如何寻找大叔的因子分解,但ECDLP是比因子分解难得多的问题。


椭圆曲线上的加法: P + Q = R


椭圆曲线上一点的2倍: P + P = R.

2. 椭圆曲线上的密码算法

基于该难题,1985年N.Koblitz和Miller提出将椭圆曲线用于密码算法,分别利用有限域上椭圆曲线的点构成的群实现了离散对数密码算法。在《数字签名分析和实现》中详细地介绍过的DSA算法,被广泛应用在椭圆曲线上的变化,称为椭圆曲线数字签名算法ECDSA,由IEEE工作组和ANSI(Amercian National Standards Institute)X9组织开发。随即展开了椭圆曲线密码学研究,除椭圆曲线外,还有人提出在其它类型的曲线如超椭圆曲线上实现公钥密码算法。其根据是有限域上的椭圆曲线上的点群中的离散对数问题ECDLP。ECDLP是比因子分解问题更难的问题,许多密码专家认为它是指数级的难度。从目前已知的最好求解算法来看,160比特的椭圆曲线密码算法的安全性相当于1024比特的RSA算法。

此后,有人在椭圆曲线上实现了类似ElGamal的加密算法,以及可恢复明文的数字签名方案。除有限域上的椭圆曲线密码算法外,人们还探索了在椭圆曲线上实现RSA算法,如KMOV等。

3.椭圆曲线密码算法的发展

RSA算法是大家熟悉的公钥密码算法,用它可以实现数字签名,PGP软件用到的就是RSA算法。RSA算法是基于大数的因子分解难题,由于计算水平的提高,人们逐渐可以用计算机分解更大的数。因此RSA算法的密钥也就越来越长。在电子商务的SET协议中,规定用户使用1024比特的RSA密钥,认证中心CA使用2048比特的RSA密钥。长密钥带来两个问题,一是运算速度较慢,另一个是密钥存储和管理问题。如果用16位的IC卡实现电子钱包,使用1024比特的RSA算法速度就很慢,要以秒计算。而固化RSA算法的IC卡或32位的IC卡价格则较贵。

椭圆曲线加密系统由很多依赖于离散算法问题的加密系统组成,DSA就是一个很好的例子,DSA是以离散对数为基础的算法。椭圆曲线数字签名系统已经被研究了很多年并创造了很多商业价值。

由于其自身优点,椭圆曲线密码学一出现便受到关注。现在密码学界普遍认为它将替代RSA成为通用的公钥密码算法,SET( Secure Electronic Transactions )协议的制定者已把它作为下一代SET协议中缺省的公钥密码算法,目前已成为研究的热点,是很有前途的研究方向。

应用椭圆曲线的数字签名同时可以很容易地使用到小的有限资源的设备中例如:小卡(信用卡大小的包含有微小处理芯片的塑料卡片)。椭圆曲线上的密码算法速度很快,分别在32位的PC机上和16位微处理器上实现了快速的椭圆曲线密码算法,其中16位微处理器上的EDSA数字签名不足500ms。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值