HTTP02-HTTPS

HTTPS 可以理解为HTTP+SSL/TLS 即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL,用于安全的HTTP的数据传输

一、HTTPS

HTTPS 可以理解为HTTP+SSL/TLS 即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL,用于安全的HTTP的数据传输

SSL(Secure Socket Layer,安全套接字层):SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。

TLS(Transport Layer Security,传输层安全):前身是SSL

1.HTTP访问过程

2.HTTP->HTTPS

客户端和服务端使用统一密钥进行加密传输,但是缺点是不同客户端服务器数量庞大,双方都需要维护大量的密钥,信息得到安全传输,但是维护成本很高;同时因每个客户端、服务器的安全级别不同,密钥容易泄漏。

如上图所示,客户端用公钥对请求内容加密,服务器使用私钥对内容解密,反之亦然,但上述过程也存在缺点:

  • 公钥是公开的(也就是黑客也会有公钥),所以第 ④ 步私钥加密的信息,如果被黑客截获,其可以使用公钥进行解密,获取其中的内容

第三步:非对称加密既然也有缺陷,那我们就将对称加密,非对称加密两者结合起来,取其精华、去其糟粕,发挥两者的各自的优势

如上图所示

(1)第 ③ 步时,客户端说:(咱们后续回话采用对称加密吧,这是对称加密的算法和对称密钥)这段话用公钥进行加密,然后传给服务器

(2)服务器收到信息后,用私钥解密,提取出对称加密算法和对称密钥后,服务器说:(好的)对称密钥加密

(3)后续两者之间信息的传输就可以使用对称加密的方式了

遇到的问题:

(1)客户端如何获得公钥

(2)如何确认服务器是真实的而不是黑客

第四步:获取公钥与确认服务器身份

1、获取公钥

(1)提供一个下载公钥的地址,回话前让客户端去下载。(缺点:下载地址有可能是假的;客户端每次在回话前都先去下载公钥也很麻烦)

(2)回话开始时,服务器把公钥发给客户端(缺点:黑客冒充服务器,发送给客户端假的公钥)

2、那有木有一种方式既可以安全的获取公钥,又能防止黑客冒充呢? 那就需要用到终极武器了:SSL 证书(申购)

  • (1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

  • (2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。

  • (3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

  • (4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。

  • (5)Web服务器利用自己的私钥解密出会话密钥。

  • (6)Web服务器利用会话密钥加密与客户端之间的通信

二、加密

1. 对称加密

使用密钥和加密算法对数据进行转换,得到的无意义数据即为密文;使用密钥和解密算法对密文进行逆向转换,得到原数据。

例如:DES、AES-GCM、ChaCha20-Poly1305等

2. 非对称加密

使用公钥加密得到密文,使用私钥解密得到源数据

例如:RSA、DSA、ECDSA、 DH、ECDHE

3.哈希算法

将任意长度的信息转换为较短的固定长度的值,通常其长度要比信息小得多,且算法不可逆。

例如:MD5、SHA-1、SHA-2、SHA-256 等

三、Base64

将二进制数据转换成64个字符组成的字符的编码算法 a-z A_Z 0-9 + /

1. Base64的缺点

因为自身的原理,每次Base64编码之后,数据都会增加1/3,会影响存储和传输性能

2. 用途

  • 将二进制数据扩充存储和传输途径(如可以把数据保存到文本文件、可以通过聊天对话框或短信形式发送二进制数据、可以在URL中加入简单的二进制数据)
  • 普通的字符在经过Base64编码后的结果会变得不可读