对称加密: A与B公用同一密钥进行加密以及解密。缺陷:需要保证密钥的安全->可以采用线下沟通获取密钥。
非对称加密: A与B各自拥有1一个密钥以及一个公钥,密钥自己绑定,公钥对外公开,A对B发送数据时,用私钥A加密数据的hash值(数字签名),然后使用公钥B加密数据内容,将hash值以及加密的内容和填充的无用数据(为了防止私钥暴露)发送给B,B收到后,使用公钥A解码hash值,使用私钥B解密数据,自己运算hash值与解码的hash值进行比较。缺陷:A与B在一开始需要交换公钥,可能受到中间人的截获,中间人发送自己的公钥给AB双方。而且解密速度慢->看似好像仍然像对称加密一样需要在线下获取公钥->本质区别:公钥是公开的,我们只是需要确认公钥的真实性
CA: B将自己的公钥和一些信息交给CA机构,CA用自己的私钥加密这些信息作为B的数字证书,当B向A传递公钥时,传递的是CA颁发的数字证书,A收到后会通过公钥解密出B的公钥。如何保证CA证书不被劫持->CA将自己的证书集成在了浏览器或操作系统中。
TLS/SSL的工作步骤:
- 通过CA交换公钥
- 通过非对称加密算法,交换用于对称加密的密钥
- 通过对称加密算法,加密正常的网络通信
https=http+ssl/tls
访问浏览器的步骤:
1. 用户向服务器发送连接请求,服务器返回CA认证的数字证书
2. 用户通过证书以及浏览器内置的CA证书信息解密获得服务器的公钥
3. 用户通过公钥加密接下来用于通讯用的密钥传输给服务器
4. 服务器通过自己的密钥解密获得用于通讯的密钥
5. 双方通过这个密钥使用对称加密算法完成接下来的网络通讯