咱们都知道 HTTPS 传输安全,为何安全呢?密码学保证?下面介绍一些 HTTPS 用到的技术。算法
SSL(Secure Sockets Layer),中文叫安全套接层,是网景公司 90 年代中期设计来解决 HTTP 协议明文传输的缺点(嗅探、劫持、篡改)。浏览器
到 1999 年,IETF 把 SSL 标准化,标准化以后名称改成 TLS(Transport Layer Security),中文叫传输层安全协议。安全
什么是 HTTPS?网络
HTTPS = HTTP + SSL/TLS。网站
即不安全的 HTTP 协议加上 SSL/TLS 等于安全的 HTTPS。加密
加密和解密是一对互逆的数学运算:操作系统
加密:明文 + 密钥 = 密文设计
解密:密文 + 密钥 = 明文对象
对称加密的意思就是加密和解密使用相同的密钥,例如在压缩文件上设置密码,解密就须要输入相同的密码。数学
非对称加密则使用不一样的密钥(公钥和私钥)进行加密解密。
网站和浏览器之间要实现安全的密钥交换该如何实现?
方案一:使用对称加密算法
若是单纯使用对象加密算法,浏览器和网站之间必需要交换密钥,密钥直接用明文传输很容易被窃取,没法保证密钥的安全性。
方案二:使用非对称加密算法
思考一下,方案二是否安全和完美?
依旧不安全,方案二能够在必定程度上防止嗅探,但没法防范网络数据篡改(中间人攻击)。
在网站和浏览器交换密钥的过程当中,中间人接收网站发送的密钥 y 保存下来,改用本身生成的密钥对伪形成网站与浏览器交互,同时使用密钥 y 伪形成浏览器与网站交互。
方案二不安全的根源是缺少可靠的身份认证,浏览器没法鉴别本身收到的密钥是否是来自网站。
所以须要引入 CA 证书机制(身份认证),基于 CA 证书进行密钥交换(具体 CA 机制可查看另外一篇介绍 CA 的文章)。
此时获得方案三:
这就是 HTTPS 加密传输的过程。