美文网首页
HTTPS vs SSH 通信过程对比

HTTPS vs SSH 通信过程对比

作者: 一个理想主义的大兵 | 来源:发表于2019-06-10 16:33 被阅读0次

    这两个协议有些相似之处,故一起对比记录

    对比:

    • 相同点:均使用对称加密和非对称加密的组合方式,来保证数据传输的安全性和效率

    • 不同点:

      • serverclient传输public key时,https通过第三方CA(证书机构)校验,ssh需要去官方手动校验
      • 用于对称加密的秘钥,https由客户端提供,ssh由双方协调生成
      • https通过对称秘钥开始数据通信,ssh需要进一步验证(密码或另一组private key / public key)

    HTTPS

    重点:

    1. 如何验证server端的public key
    2. 如何安全传输对称秘钥

    简要流程如下:

    • client通过TCP三次握手,与server建立连接
    • server将证书信息发送到client(包含public key)
    • client通过证书颁发机构进行验证(多缓存在客户端中)
    • 验证通过后,client生成对称秘钥,通过证书中的public key加密后,传输到server
    • server用对应的private key,解密得到对称秘钥
    • 至此,完成非对称加解密过程,之后的通信均是对称加解密过程
      HTTPS.jpg

    SSH

    重点:

    1. 两组private key / public key用意不同

    简要流程如下:

    • client通过TCP连接server

    • server返回对应的public key

    • client通过官方自行校验public key的合法性

    • 校验通过后,双方通过Diffie-Hellman算法,协商对称秘钥

      期间生成各自的private key/public key,使用非对称加密通讯,此过程可参考本文提供的参考资料

    • 之后的校验过程(Authentication)和数据通讯过程,均使用此秘钥,进行对称加解密

    • Auth过程分为两种:

      1. 通过账号密码

      2. 通过private key / public key

        • client生成private keypublic key,并将public key手动传输至server
        • client将秘钥ID(for the key pair)发送至server
        • server通过ID,在authorized_keys文件中查找对应的public key
        • 如找到,server端生成一个随机数,并用public key加密,发送到client
        • clientprivate key进行解密,并计算MD5值,发送至server
        • server用原始的随机数,也计算得到MD5值,与client传来的值作比较,匹配即通过验证

        传输过程,均使用之前协商的对称秘钥,通过对称加解密传输,此过程中的private key / pulic key 只用作验证

    SSH.jpg

    Reference

    相关文章

      网友评论

          本文标题:HTTPS vs SSH 通信过程对比

          本文链接:https://www.haomeiwen.com/subject/evazxctx.html