不懂就问: HTTPS 协议中,为什么需要第一步交换随机数

2019-02-12 17:24:26 +08:00
 chairuosen

流程如图片 https://user-gold-cdn.xitu.io/2018/5/21/1638197d98cf3281?imageslim

双方交换 random1 和 random2

客户端生成 random3 作为 pre master secret,并通过被签名的可靠公钥加密后传给 server,

这样双方都拿 random1 random2 random3 通过算法各自生成 master secret

在这里,只有 random3 是能够保证不被第三人知道的,为什么公开的 random1 和 random2 有存在的必要?为什么不直接生成 master secret 发过去?

直接发送 master 的情况:我有一个通道发送钥匙 A,可以保证不被中间人解开,但是有可能被替换。如果被替换成钥匙 B,后面的验证过程,只有我知道钥匙 A,你发过来的消息我解不开,中间人也没有钥匙 A 来加密消息欺骗我。我接到假数据一定会报错的,不也是安全的么?

搜索了网上信息对这里基本都是一笔带过的 只有这里的第二个回答提到仅仅是为了增加随机性,是这样的么? https://stackoverflow.com/questions/25258799/in-tls-ssl-whats-the-purpose-of-staging-from-premaster-secret-to-master-secret

3833 次点击
所在节点    问与答
7 条回复
woodensail
2019-02-12 17:33:13 +08:00
random1 的存在我可以理解,是为了对抗回放攻击。
random2 的作用就不清楚了。也是为了对抗回放?
chairuosen
2019-02-12 17:37:04 +08:00
@woodensail 回放,有道理。感谢老哥
Kagari
2019-02-12 17:52:31 +08:00
https://www.jianshu.com/p/67bcb140d804
2.5 TLS 握手过程中的 RSA 密钥协商
非对称加密是现代密码学的基石啊
alvinbone88
2019-02-12 19:16:11 +08:00
建议先了解 Diffie – Hellman key exchange
lcdtyph
2019-02-12 20:41:42 +08:00
dh 在 tls 中负责前向安全性吧。
yurang
2019-02-20 12:21:19 +08:00
- 主密码的计算
- 主密码的计算:
- 计算元素:预备主密码、客户端随机数、服务器随机数
- 客户端随机数和服务器随机数的作用相当于防止攻击者事先计算出密钥的盐
- 计算方法:使用基于密码套件中定义的单项散列函数来实现伪随机函数
- 主密码的目的:
- 对称密码的密钥(客户端--->服务器)
- 对称密码的密钥(客户端<---服务器)
- 消息认证码的密钥(客户端--->服务器)
- 消息认证码的密钥(客户端<---服务器)
- 对称密码的 CBC 模式所使用的初始化向量(客户端--->服务器)
- 对称密码的 CBC 模式所使用的初始化向量(客户端<---服务器 )
yurang
2019-02-20 12:23:47 +08:00
@yurang 额,从笔记里粘贴过来的,格式糊了。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/534275

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX