简单理解 HTTPS
写这篇文章仅供自己参考 =W=
1. 前言
- HTTP是通常的互联网传输方式,一般为了保证传输安全,我们会对数据进行加密,但是会存在一些问题:
- 对称加密的问题:如果采用的是对称加密方式,那么双方需要先互传一个公共密钥,并使用该密钥进行加密、解密。如果这个密钥先被他人截获,那么整个传输加密就毫无意义。
- 非对称加密的问题:非对称加密将密钥拆成了公钥与私钥,能够很好的解决对称加密的问题,但是加密、解密的速度不够快,影响传输性能。
- HTTPS
- 在HTTP基础上再添加了传输加密和身份认证手段,结合了对称加密与非对称加密的优点。
- 更加安全,性能损失较低
- 一般采用SSL/TLS协议
2. HTTPS的传输方式
-
示意图
-
商讨协议与加密算法阶段
- 客户端发起请求,包括“支持的的协议,例如SSL 1.0”、“支持的加密算法”、“随机数A”
- 服务端返回数据,包括“选择的协议”、“选择的加密算法”、“随机数B”、“服务端的证书(包含公钥)”
-
非对称加密与CA认证阶段
- 客户端接收到数据,验证服务端证书的可信性(即CA认证),如果不可信会发出提示(例如12306早期的证书)。确认可信后,生成随机数C,并用服务端证书中的公钥对随机数C加密,发送至服务端。
- 服务端接收到数据,使用私钥解密随机数C,利用已知的随机数A、B、C和之前协商好的加密算法生成一个密钥X(用于对称加密)
- 客户端也会利用已知的随机数A、B、C和之前协商好的加密算法生成一个密钥X(用于对称加密)
-
对称加密阶段
- 客户端利用密钥X加密传输的数据,向服务端传输数据
- 服务端利用密钥X解密接收到的数据,再使用密钥X加密数据,向客户端传输数据
- 后续传输方式都是利用密钥X加密、解密
3. 关键点总结
- 用非对称加密的方式保护对称加密要传输的公共密钥,只需要前面做一次即可,保证了传输的安全性。
- 非对称加密有可能被伪造公钥、私钥,所以需要第三方认证机构。我们使用CA认证用于确实这个公钥确实是这个网站的。
- 因为公共密钥有了保障,后续传输操作皆采用对称加密,保证了传输的性能。
4. 一个小问题
- 那么HTTPS的SSL/TLS协议加密是位于OSI七层模型的那一层呢?
- 位于表示层、会话层。
第五层:会话层
会话层主要内容时通过 绘画进行身份验证、会话管理和确定通讯方式。一旦建立连接,会话层的任务就是管理会话。
第六层:表示层
表示层主要是解释通讯数据的意义,如代码转换、格式变换等,使不同的终端可以表示。还包括加密与解密、压缩与解压等。