非对称算法-密钥磋商算法-DH

非对称算法-密钥磋商算法-DH  (2012-01-05 13:37:16)

http://blog.sina.com.cn/s/blog_55a9111c0100ystz.html

http://blog.sina.com.cn/s/blog_55a9111c0100ystz.html

http://blog.sina.com.cn/s/blog_55a9111c0100ystz.html


转载

标签: 杂谈

分类: 密码安全

正文开始

2.      DH首个公开发表的公用密钥算法,是密钥磋商算法,而不是密钥交换算法(这一点要注意,与RSA传输密钥的实现不一样),也不能实现加密和数字签名,密钥不是由一方发送给另外一方,而是双方共同产生的一个密钥。

发送与接收双方共同拥有这个密钥对。要想计算出磋商后的密钥:

1)发送方:发送方的私钥+接收方的公钥计算

2)接收方:接收方的私钥+发送方的公钥计算

DH公钥常被称作份额(share)DH也使用模幂(这个在非对称算法中基本上都跑不掉)。

基本原理:

1)        但是模数和RSA中的e可以任取不一样,DH的模数一定要是个大素数(通常被称做p),这个模数也是公开的

2)        除了这个数字双方还需要共享另一个数字称为g(发生器)。因为g要满足:g^w mod p =Z的值W。因此g能产生从1p-1的所有数字。所以有1<p<g

3)        发送方随机产生一个大整数x, 计算GX=G^X mod P。(X需要保密)

4)        接收方随机产生一个大整数y, 计算 GY=G^Y mod P. (Y需要保密)

5)        发送方把GX发送给接收方,接收方把GY发送给发送方

6)        发送方计算:ZZ(密钥) = GY ^ X mod P

7)        接收方计算:ZZ(密钥) = GX ^ Y mod P

举个简单的例子:

1)        p=3, g=11

2)        发送方随机产生一个大整数x=5,计算GX=11^5 mod 3 = 2

3)        接收方随机产生一个大整数y=7,计算GY=11^7 mod 3 = 2

4)        发送方计算:ZZ(密钥) = 2 ^ 5 mod 3 = 2

5)        接收方计算:ZZ(密钥) = 2 ^ 7 mod 3 = 2

这里面p取的值比较小,所以可能不太直观………

证明公式:

ZZ=GY^X mod p = ((g^Y mod p ) ^X) mod p

  = ((g^Y)^X) mod p (根据取模运算规则得到)

  = (g ^Y^X) mod p = ((g^X)^Y) mod p

  = (((g^X) mod p)^Y) mod p

  = GX^Y mod p

       安全性分析:

目前还没有办法证明攻击都无法计算得出ZZ,普遍认为要想做到这一点要求同时拥有xGy或者yGx非常难。DH的计算公式都是单向函数,其逆运算就是求解离散对数问题,当前还没有高效计算离散对数的方法。

DH相比RSANB的地方在于RSA有一端需要对方的公钥都能继续,而DH一开始共享pgDH的算法的安全性基于p的大小以及x的大小。BTWDHX的选择与对称算法的相关性联系比较多,如果X选择太小,产生的ZZ太短,对于位数比较长的对称算法(3DES,AES256)来说,这个密钥就比较弱了。

       不足之处:

1)没有提供通信双方的身份信息,所以不能鉴别双方身份,容易遭受中间人攻击。

2)是密集型计算,容易遭受拒绝服务攻击,即攻击者请求大量密钥,被攻击者花费大量计算资源求解无用的幂系数。

3)无法防止重放攻击。



不过在很多情况下,DH会和一种签名算法如DSSRSA一起组合使用来防止中间人攻击。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值