前言
本文是本系列的第四篇,由于侧重点是对密码学中的安全性问题进行分析,所以不会对密码学基础的核心概念进行阐述,如果阅读本系列文章时不明白所涉及的术语时请参考国内大学的推荐教材,如《密码学原理与实践》《深入浅出密码学》,如果只是感兴趣而并非要深入了解,只阅读《图解密码技术》也就够了。
Diffie-Hellman
迪菲-赫尔曼密钥交换/协商(英语:Diffie–Hellmankeyexchange,缩写为D-H)是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。
D-H函数
DH密钥协商协议的核心操作是DH函数,其涉及通信双方从Zp*群中随机选择两个私有值,记做a、b,通过a计算公共值A=g^amodp,通过b计算
B=g^bmodp
然后双方将公共值与自己的私有值结合,这里的关键在于结合后的值是相同的,即
得到的g^ab称为共享秘密,将其传递给密钥派生函数KDF,以生成对称密钥。
这看起来非常简单,但是这只是表面的,事实上这并不容易
一方面,并不是任意素数p或者基数g都可以奏效,比如某些g会导致将共享秘密g^ab限制在一小部分范围内,但实际上我们希望它的可能取值范围与Zp*一样。
p应该满足(p-1)/2结果也是素数,这样才可以保证该群没有使DH更容易被攻破的更小子群。
D-H问题
使用DH计算共享秘密时,我们关心的不仅是DLP问题,更