面试官问你了解https吗?
一、对称和非对称加密算法
1.1 对称加密
对称加密:用来加密和解密的密钥是一样的,常见的算法:AES(常用),DES,3DES
1.1.1 加密过程(每一点对应图的序号)
- 生成密钥letmekang。
- 把密钥传给客户端。
- 通过密钥加密得到密文。
- 通过原有的密钥解密。
1.1.2 对称加密的不适应性
对称加密前提条件:服务器和客户端都有密钥。把密钥传给客户端的做法那只能是通过网络传,盗窃密钥就成为可能,那拿到密钥以后第三者也是可以进行解密的,所以对称加密并不适合网上传递密钥。
1.2 非对称加密
不对称加密:用来加密和解密的密钥是不一样的。公钥加密只能用私钥解密,私钥加密只能用公钥解密。
1.2.1 加密过程(每一点对应图的序号)
- 得到公钥和私钥。
- 把公钥传给客户端。
- 客户端通过公钥加密得到明文。
- 密文传给服务器端,服务器端通过私钥解密得到用户名和密码。
1.2.2 不对称加密的不适应性
不对称加密要消耗更多的cpu资源去进行解密运算,耗时。
二、 https的原理
既然对称加密之前要进行密钥的传递,那把密钥当做是明文利用非对称加密把密钥传给客户端,往后都用对称加密传递的信息,既保证了信息的安全性也保证了往后内容加密解密速度的提升。
对称加密结合非对称加密:
https请求就是多了验证公钥是否过期,传递公钥的时候多加了安全证书。
2.1 https流程(每一点对应图的序号):
- 得到公钥:letmekang和私钥:buxukang。
- 服务器端把公钥letmekang和安全证书一起携带到客户端。
- 校验安全证书是否过期,过期则返回错误响应,否则下一步。
- 生成随机的密钥gugu,用公钥加密gugu得到9cnwh%ee
- 把9cnwh%ee传给服务器端。
- 用私钥buxukang解密得到gugu
- 8.利用gugu作为共同的密钥加密下文信息。
2.2 抓包分析https
追踪TCP流Client Hello
可以看见随机生成的字符串和session ID以及是一些加密套装以及服务器的信息。
以上是我个人的拙见,有什么意见
审核大佬:lzq(@Unyielding ● L 2019.10.23)