密码学笔记|Diffie Hellman key exchange 密钥交换协议
安全地交换共享密钥!
1976年,Diffie和Hellman在其题为《密码学的新方向》的论文中给出了公钥密码学的定义,并提出了DH密钥交换算法。
该算法解决了对称密码体制中的密钥分发问题,使得通信双方可以通过公开信道安全地交换共享密钥,将此共享密钥用于会话加密。
其安全性建立在离散对数问题的困难性之上。
为了更好地说明密钥交换协议的作用,我将会以自己的语言讲一遍为什么我们需要DH key exchange
0x01 跟我一起设计密钥方案!
假设有两个人Alice 和 Bob 他们要传递信息
分为对称密码学和非对称密码学的角度来设计
1.1 第一回合
最简单没有任何措施的方法,就是直接传信息,比如 Alice:“今天天气晴朗!” Bob就会收到该信息。
但是这有很大的问题,最大的问题就是没有保密性,任何监听他们通信信道的人都能回去该消息的明文。
1.2 第二回合
那么我们升级方案,对该消息加密,利用对称密码学进行加密。
对称密码学的大白话意思就是:加密和解密都是同一个密钥。
这里双方决定以k为对称密钥,Alice对m用k加密,Bob对c用k解密得到m。
假设这里密钥提前确定,且双方都不泄露密钥,那么该协议就是安全的。
但是这里问题来了,如果Alice和Bob两人距离很远,不能提前商定用什么作为对称密钥,就又得传输该密钥。这样显然是不安全的。
为了传递消息,还需要传输密钥,方案不可行。
1.3 第三回合
使用非对称密钥学。即加密和解密的密钥是不一样的,公钥加密,私钥解密。
Alice Pk1,Sk1
Bob Pk2, Sk2
Alice发送m,先用公钥对m加密得到c
Bob得到c,之后用Alice的私钥解密的到m。
这里好像也是可行的,但显然用Alice的私钥解密是很理想的状态,事实就是私钥不会随意传输给对方。(长期密钥的话)
我们对m用Pk1加密之后,就必须要用Sk1解密,那问题来了,怎么传输Sk1给Bob,这里又是一个死结。
因为私钥一旦暴露,传递信息也就暴露,所以我们不能传输私钥。
1.4 第四回合
终于我们引出了DH key exchange协议!
DH密钥交换协议的目的是,在不传输私钥的情况下,双方得到一个共享秘密,该秘密可以作为对称密钥进行加密。
也就是说,在传递m之前,Alice和Bob必须先进行密钥交换,得到共享秘密shared secret。
0x02 DH 密钥交换协议的介绍
2.1 为什么需要该协议?
为了解决对称密码体制中的密钥分发问题,使得通信双方可以通过公开信道安全地交换共享密钥。
提出了公钥密码学的概念,共享的是公钥,收到对方公钥之后,在对方公钥的基础上运算得到共享密钥。
2.2 协议细节
最终实现了什么目的
最终,Alice和Bob在一个非安全信道上实现了一个安全的秘密共享。并获得一个密钥,可以加密他们的对话。
2.3 应用场景
2.4 DH密钥交换协议存在的漏洞
然而,没有相互身份认证的DH密钥交换协议可能会遭受中间人攻击、模拟攻击和重播攻击
于是在这个基础之上就衍生出了AKE。认证密钥交换协议,交换密钥的双方必须提前获得身份认证才能进行密钥交换。
这个认证是如何完成的?
如CA 第三方认证机构颁发数字证书Certificate,证明Alice是Alice,Bob是Bob。
如何去除CA,是去中心化需要解决的问题,实现DAKE。
2.5 安全属性(待完善)
中间人攻击、模拟攻击和重播攻击
0x03 参考链接
维基百科Diffie–Hellman key exchange