HTTPS 是什么
HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer) 是为安全的使用 HTTP
HTTPS 最初使用的加密协议是 SSL,SSL最近的3个版本是:SSL 1.0 、SSL 2.0 、SSL 3.0 ,不过随着加密算法的发展和人们对传输安全性要求的提高,已经依次推出了 TLS 的4个版本:TLS 1.0 、TLS 1.1 、TLS 1.2 、TLS 1.3 。实际上,业内也有人把 TLS 1.0 叫SSL 3.1 ,事实上,TLS 是在SSL基础上发展起来的更安全的加密协议
为什么用 HTTPS
HTTP 从91年的HTTP/0.9 一直发展到99年的HTTP/1.1 ,虽功能不断增加,性能不断提高,但随着互联网技术和网络设备的迅速普及,导致信息大爆炸,众多的网民对网络传输的速度和安全性有了越来越高的要求。2012年,谷歌推出SPDY方案,优化了 HTTP/1.x的请求延迟和安全性问题,进一步普及了HTTPS,后HTTP/2 成为标准,更进一步推动了全网 HTTPS的进程
全网 HTTPS 是大势所趋,那么为什么抛弃 HTTP 呢?最重要的原因就是安全问题,因为 HTTP 是明文传输,这对从娃娃就开始玩智能手机,学习python编程的新一代来说,抓个包不在话下,更别提“黑客”了。是时候跑步进入 HTTPS 加密时代了
HTTPS 为什么安全
除HTTPS传输标准严格和规范外,主要是SSL/TLS对传输的信息有一整套的加解密和校验方案。这套方案主要从下面3方面确保传输的安全
- 身份认证 传输前首先通过数字证书来确认身份,各大 CA 厂商干的就是这。数字证书分公钥和私钥,CA 厂商会用自己的私钥给证书申请者签发一套包含私钥和公钥的客户证书,客户的公钥证书谁都可以获取,里面包含了客户站点和证书的基本信息,用来确保访问者访问的就是他想要访问的站点。这个证书不可以伪造吗?答案是真的不可以。原因:系统早已内置了各大 CA 厂商的公钥来校验证书是否是对应的站点的证书,如果不是,就会给出证书不匹配的提示,除非你给别人的设备强行植入假的 CA 公钥; 这个证书是 CA 厂商通过哈希并加密得到,基本无法逆向破解并伪造一个新的,除非是你黑进 CA 获取了 CA 的私钥,那这家 CA 也基本可以倒闭了
- 数据保密 数据保密包括对话秘钥传输时的保密和数据的加密传送。对话秘钥:以TLS 1.2使用的套件之一 DHE-RSA-AES256-SHA256为例:该套件是以DHE 、RSA作为秘钥交换算法,这两种秘钥交换算法都用非对称加密,数学原理分别依赖于计算离散对数的难度和大数分解的难度。也就是在建立HTTPS链接的过程中,刚开始是有一些明文出现,不过想要根据这些已知的明文推算出“对话秘钥”却非常困难。对话加密:客户端和和服务端协商并成功获取到对话秘钥后就开始用对话秘钥进行对称加密会话,上面的套件我们可以看到使用的是 AES256 加密算法. 那为什么“对话秘钥”的交换使用非对称加密,正式对话数据的传输使用对称加密?因为非对称加密虽然安全性比较高,但效率低,速度慢,所以一般只用它来交换一下对话秘钥,后面的对话加密则使用速度更快,效率更高的对称加密
- 数据完整 身份认证成功后,到了数据加密传输阶段,所有数据都以明文(HTTP)收发,只不过收发的是加密后的明文。这时候也遇到了个问题,虽然中间人很难破解,但如果他对数据进行了篡改呢?此时,加密套件中验证数据一致性的哈希算法就派上用场了,哈希算法有多种,比如MD5 ,SHA1,SHA2等,上面举例的加密套件用的是 SHA2 中的 SHA256对数据进行哈希计算。这样就使得任何的数据更改都会导致通信双方在校验时发现问题,进而发出警报并采取相应措施