HTTPS密钥交换过程学习笔记0

2019-10-21  本文已影响0人  sydneywhatever

HTTPS = HTTP + TLS

建立TCP连接后,开始TLS认证和协商加密密钥,然后传输数据。

TLS从1.0、1.1、1.2到1.3。除了减少RTT,还有安全性上的升级。

TLS:认证、保密性、完整性。

TLS使用非对称密钥算法交换用于加密的对称密钥。

TLS1.2及之前使用RSA交换密钥,TLS1.3使用DH算法升级版交换密钥。

RSA密钥交换不是前向安全算法(私钥泄漏后,之前抓包的报文都能被解密)。前向不安全,私钥参与了密钥交换,安全性取决于私钥是否安全保存。

一、RSA密钥交换过程

客户端发送client_hello,包含一个随机数random1;

服务器回复server_hello,包含一个随机数random2,同时回复certificate,携带了证书公钥P;

客户端验证证书有效性后,使用随机数算法生成pre-master key,用服务器公钥P将pre-master key加密后发给服务器;

服务器使用私钥解密得到pre-master key;

客户端和服务器根据pre-master key、random1、random2生成session key。

(初始化向量IV)XOR(session key)= 一次性密钥1

初始化向量IV)XOR(一次性密钥1)= 一次性密钥2

……

问题:

1、RSA的IV如何生成的,明文or密文传输?

2、假设私钥泄露,如何解密所有历史报文?

3、密钥协商过程需要2个RTT?说好的1.5和1?

二、DH密钥交换过程

客户端根据私钥a生成公钥A,将公钥A和random1发送给服务器;

服务器根据私钥b和公钥A生成公钥B,将公钥B和random2发送给客户端;

服务器和客户端根据自己的私钥和对方的公钥,以及random值,生成相同的session key;

后续步骤同RSA。

DH密钥交换时,服务器私钥仅用于签名,不参与密钥交换过程。也就是说,私钥即使泄漏,也不会导致会话加密密钥S被第三方解密。

DH算法有一个比较大的缺陷就是需要提供足够大的私钥来保证安全性,所以比较消耗CPU计算资源。ECC椭圆曲线算术能够很好的解决这个问题,224位的密钥长度就能达到RSA2048位的安全强度。 所以常用ECDHE进行密钥协商。

问题:

1、为什么根据自己的私钥和对方的公钥,以及random值,生成相同的session key?

        DH算法原理:https://blog.csdn.net/mrpre/article/details/52608867

2、RSA密钥分发+RSA认证,DH密钥分发+RSA认证?

3、为什么DH私钥泄露只影响当前会话,历史会话不会泄露?

        一次一密


学习资料来源:

1、公众号车小胖谈网络

2、mrpre的CSDN博客

上一篇 下一篇

猜你喜欢

热点阅读