读书频道 > 安全 > 深入浅出密码学——常用加密技术原理与应用
9.3 基于椭圆曲线的Diffie-Hellman 密钥交换
2012-09-26 16:44:35     我来说两句 
收藏    我要投稿   
本书拥有的诸多特征使得它成为密码学从业者和学生独一无二的资源—本书介绍了绝大多数实际应用中使用的加密算法,并重点突出了它们的实用性。对于每种加密模式,我们都给出了最新的安全评估和推荐使用的密钥长度...  立即去当当网订购

我们现在可以使用与第8.1节介绍的Diffie-Hellman密钥交换(DHKE) 完全类似的方法,实现基于椭圆曲线的密钥交换,这也称为椭圆曲线Diffie-Hellman 密钥交换或ECDH 。首先必须统一域参数,即实现所需要的合适的椭圆曲线以及此曲线上的一个本原元。
 
ECDH 域参数

1. 选择一个素数p 和椭圆曲线


 

2. 选择一个本原元P = (xp,yp)

素数p 、由系数a 和b 给出的曲线以及本原元P都是域参数。

请注意:实际中找到一个合适的椭圆曲线是一项比较困难的任务。为了提供足够的安全性,该曲线必须拥有某些特殊的属性,关于此主题的详细内容会在下面予以介绍。实际的密钥交换方式与传统Diffie-Hellman协议完全相同。

 

证明此协议的正确性非常简单。

证明:Alice计算

aB = a (bP)

而Bob 计算

bA =  b (aP) 。

由于点加法具有结合性( 提示:结合性是群的一个属性),双方计算得到的结果相同,即点TAB =  abP 。     

从协议中可以看出,Alice和Bob 分别选择了自己的私钥a 和b ,这两个私钥都是非常大的整数。双方都使用各自的私钥计算出各自的公钥A 和B,而且这两个公钥都是曲线上的点。公钥是通过点乘法计算得到的,双方彼此交换公钥参数。然后,Alice和Bob 利用他们收到的公钥以及各自的私钥参数再次执行点乘计算,便可得到联合密钥TAB。联合密钥TAB可以用来得到会话密钥,比如作为AES 算法的输入。注意:  (xAB,yAB) 的两个坐标并不是独立的:给定xAB ,将 x 的值代入到椭圆曲线方程中就可计算出另一个坐标。因此,会话密钥生成时可以只用其中一个坐标。下面来看一个处理小整数的例子。

示例9.8   对于拥有如下域参数的ECDH 。椭圆曲线为y2=x3+2x+2 mod 17,它构成了阶为# E =19 的循环群。基点为P  = (5 ,1) ,该协议的工作方式如下:


 

Alice和Bob 分别执行的两个标量乘法都需要利用Double-and-Add 算法。

联合密钥TAB的一个坐标可以作为会话密钥使用。实际中通常将x 坐标进行散列,然后再作为对称密钥使用;而通常并不是所有的密钥位都需要。例如,在一个 160 位的ECC方案中,使用 SHA-1 对x 坐标进行散列将得到一个160 位的输出,而我们通常只将其中的128 位作为AES 密钥使用。

请注意,椭圆曲线的应用并不局限于DHKE 。实际上,几乎所有离散对数协议都可以使用椭圆曲线实现,尤其是数字签名和数字加密( 即Elgamal的变体)。应用最广泛的椭圆曲数字签名算法(ECDSA) 将在第10.5.1 节中介绍。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:9.2 使用椭圆曲线构建离散对数问题
下一篇:9.4 安全性
相关文章
图文推荐
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做实用的IT技术学习网站