第十章 密钥管理和其他公钥密码体制

1 Diffie-Hellman密钥交换

1.1 Diffie-Hellman算法

该算法的目的是是两个用户能安全的交换密钥,以便后续的通信中使用该密钥对对信息加密。

Diffie-Hellman密钥交换的有效性是建立在计算离散对数很困难这一基础上的。简单的说,离散对数定义为:素数\(p\),本原根\(a\)\(a\)是一个整数,其幂对\(p\)的模可以产生\(1\dots p-1\)之间所有的整数:\(a\ mod\ p,a^2\ mod \ p,\dots ,a^{p-1}\ mod \ p\)各不相同,是\(1\)\(p-1\)的一个置换。

算法过程:

  1. 随机选择素数\(p\),和本原根\(a\),是可以公开的整数。
    . Alice随机的选择一个整数\(X_a\),计算出\(Y_a=a^{X_a}\ mod \ q\),其中\(X_a\)是私钥,\(Y_a\)公开,就是发给Bob
    . Bob随机的选择一个整数\(X_b\),计算出\(Y_b=a^{X_b}\ mod \ q\),其中\(X_b\)是私钥,\(Y_b\)公开,就是发给Alice
    . 双方拿到对方的\(Y\)以后,计算:\(K=(Y)^X \ mod \ q\)。其结果是相同的。

\(K=(Y_b)^{X_a}\ mod \ q = (a^{X_b}\ mod \ q)^{X_a}) \ mod \ q = (a^{X_b})^{X_a}\ mod \ q = a^{x_b \times X_b} \ mod \ q\)

这样双方就得到了一个值\(K\)

Diffie-Hellman密钥交换的安全性建立在:求关于素数的模素数幂运算是简单的,而计算离散对数确实非常困难的。对于大素数,求离散对数被认为是比可能的。

攻击者能够获得:\(a\),\(p\),\(Y_a\),\(Y_b\),穷举确定密钥是可能的,但是对于较大的数,上述方法实际是不可行的。

1.2 密钥交换协议

ssh使用了Diffie-Hellman算法

1.3 中间人攻击

中间人分别篡改\(Y_a\)\(Y_b\),和Alice,Bob建立连接,但是共享两个不同的密钥\(K_1\)\(K_2\)

2 EIGamal密码体制

T. Elgamal提出了基于离散对数的公开密钥体制。

3 椭圆曲线算术

椭圆曲线密码ECC

与RSA相比,ECC:可以使用比RSA段的多的密钥得到相同的安全性,因此减少了处理符合。

但是更难描述。

猜你喜欢

转载自www.cnblogs.com/perfy576/p/9012640.html