异想天开

What's the true meaning of light, Could you tell me why

Diffie-Hellman密钥交换

日期:2014-09-21 15:58:52
  
最后更新日期:2014-10-28 14:10:11
【技术文章,非码农勿入】
中文名字为:迪菲-赫尔曼密钥交换。本文直接摘录至wiki百科,地址为附录。之所以记录在此,是因为印象中好早看到过这个算法。这个算法不难,由于对信息安全方面的知识的匮乏,当时不知道用它来干嘛的。到今天才知道前后的背景,故记录一下这小小的进步。该算法也就是用于在不安全的传输信道安全传递公钥。 wiki上面通俗的步骤如下:
1.爱丽丝和鲍伯写上一个有限循环群 G 和它的一个生成元生成元 g。(这通常在协议开始很久以前就已经规定好; g是公开的,并可以被所有的攻击者看到。)
2.爱丽丝选择一个随机自然数 a 并且将g^{a} mod{p}发送给鲍伯。
3.鲍伯选择一个随机自然数 b 并且将g^{b} mod{p}发送给爱丽丝。
4.爱丽丝 计算( g^{b} )^{a} mod{p} 。
5.鲍伯 计算( g^{a} )^{b} mod{p} 。
注:
自然数 模上一个数 就是一个 有限循环群,现行算法里面g取2。
另外:
爱丽丝和鲍伯最终都得到了同样的值,因为在模p下g^{ab}和g^{ba} 相等。 注意a, b 和 g^{ab} = g^{ba} mod p 是秘密的。 其他所有的值 – p, g, ga mod p, 以及 gb mod p – 都可以在公共信道上传递。 一旦爱丽丝和鲍伯得出了公共秘密,他们就可以把它用作对称密钥,以进行双方的加密通讯,因为这个密钥只有他们才能得到。 当然,为了使这个例子变得安全,必须使用非常大的a, b 以及 p, 否则可以实验所有g^{ab} \bmod{23}的可能取值(总共有最多22个这样的值, 就算a和b很大也无济于事)。 如果 p 是一个至少 300 位的质数,并且a和b至少有100位长, 那么即使使用全人类所有的计算资源和当今最好的算法也不可能从g, p和ga mod p 中计算出 a。这个问题就是著名的离散对数问题。注意g则不需要很大, 并且在一般的实践中通常是2或者5。IETF RFC3526 文档中有几个常用的大素数可供使用。
wiki:http://zh.wikipedia.org/wiki/%E8%BF%AA%E8%8F%B2%EF%BC%8D%E8%B5%AB%E5%B0%94%E6%9B%BC%E5%AF%86%E9%92%A5%E4%BA%A4%E6%8D%A2