安全地交换共享密钥!

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密钥交换协议

维基百科Diffie–Hellman key exchange

欢迎关注我的个人公众号