这两个协议有些相似之处,故一起对比记录
对比:
-
相同点:均使用对称加密和非对称加密的组合方式,来保证数据传输的安全性和效率
-
不同点:
-
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连接server
-
server
返回对应的public key
-
client
通过官方自行校验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
只用作验证 -
-
网友评论