这两个协议有些相似之处,故一起对比记录
对比:
相同点:均使用对称加密和非对称加密的组合方式,来保证数据传输的安全性和效率
-
不同点:
-
server向client传输public key时,https通过第三方CA(证书机构)校验,ssh需要去官方手动校验 - 用于对称加密的秘钥,https由客户端提供,ssh由双方协调生成
-
https通过对称秘钥开始数据通信,ssh需要进一步验证(密码或另一组
private key / public key)
-
HTTPS
重点:
- 如何验证
server端的public key- 如何安全传输对称秘钥
简要流程如下:
-
client通过TCP三次握手,与server建立连接 -
server将证书信息发送到client(包含public key) -
client通过证书颁发机构进行验证(多缓存在客户端中) - 验证通过后,
client生成对称秘钥,通过证书中的public key加密后,传输到server -
server用对应的private key,解密得到对称秘钥 - 至此,完成非对称加解密过程,之后的通信均是对称加解密过程
HTTPS.jpg
SSH
重点:
- 两组
private key / public key用意不同
简要流程如下:
client通过TCP连接serverserver返回对应的public keyclient通过官方自行校验public key的合法性-
校验通过后,双方通过
Diffie-Hellman算法,协商对称秘钥期间生成各自的
private key/public key,使用非对称加密通讯,此过程可参考本文提供的参考资料 之后的校验过程(Authentication)和数据通讯过程,均使用此秘钥,进行对称加解密
-
Auth过程分为两种:
通过账号密码
-
通过
private key / public key-
client生成private key和public key,并将public key手动传输至server端 -
client将秘钥ID(for the key pair)发送至server -
server通过ID,在authorized_keys文件中查找对应的public key - 如找到,
server端生成一个随机数,并用public key加密,发送到client -
client用private key进行解密,并计算MD5值,发送至server -
server用原始的随机数,也计算得到MD5值,与client传来的值作比较,匹配即通过验证
传输过程,均使用之前协商的对称秘钥,通过对称加解密传输,此过程中的
private key / pulic key只用作验证 -

SSH.jpg
