V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
chairuosen
V2EX  ›  问与答

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

  •  
  •   chairuosen · 2019-02-12 17:24:26 +08:00 · 3848 次点击
    这是一个创建于 2113 天前的主题,其中的信息可能已经有所发展或是发生改变。

    流程如图片 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

    7 条回复    2019-02-20 12:23:47 +08:00
    woodensail
        1
    woodensail  
       2019-02-12 17:33:13 +08:00
    random1 的存在我可以理解,是为了对抗回放攻击。
    random2 的作用就不清楚了。也是为了对抗回放?
    chairuosen
        2
    chairuosen  
    OP
       2019-02-12 17:37:04 +08:00
    @woodensail 回放,有道理。感谢老哥
    Kagari
        3
    Kagari  
       2019-02-12 17:52:31 +08:00
    https://www.jianshu.com/p/67bcb140d804
    2.5 TLS 握手过程中的 RSA 密钥协商
    非对称加密是现代密码学的基石啊
    alvinbone88
        4
    alvinbone88  
       2019-02-12 19:16:11 +08:00
    建议先了解 Diffie – Hellman key exchange
    lcdtyph
        5
    lcdtyph  
       2019-02-12 20:41:42 +08:00 via iPhone
    dh 在 tls 中负责前向安全性吧。
    yurang
        6
    yurang  
       2019-02-20 12:21:19 +08:00
    - 主密码的计算
    - 主密码的计算:
    - 计算元素:预备主密码、客户端随机数、服务器随机数
    - 客户端随机数和服务器随机数的作用相当于防止攻击者事先计算出密钥的盐
    - 计算方法:使用基于密码套件中定义的单项散列函数来实现伪随机函数
    - 主密码的目的:
    - 对称密码的密钥(客户端--->服务器)
    - 对称密码的密钥(客户端<---服务器)
    - 消息认证码的密钥(客户端--->服务器)
    - 消息认证码的密钥(客户端<---服务器)
    - 对称密码的 CBC 模式所使用的初始化向量(客户端--->服务器)
    - 对称密码的 CBC 模式所使用的初始化向量(客户端<---服务器 )
    yurang
        7
    yurang  
       2019-02-20 12:23:47 +08:00
    @yurang 额,从笔记里粘贴过来的,格式糊了。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3651 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:30 · PVG 12:30 · LAX 20:30 · JFK 23:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.