HTTPS的加密流程

1、概念

HTTPS 是一个应用层协议,是在 HTTP 协议的基础上引入了一个加密层。HTTP 协议内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

PS:SSL协议是通过非对称密钥机制保证双方身份认证,并完成建立连接,在实际数据通信时通过对称密钥机制保障数据安全性。

2、HTTPS和HTTP的区别主要如下:

2.1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

 2.2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

2.3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

2.4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

3、加密

3.1、加密和解密

加密:就是把明文(要传输的信息)进行一系列转换,生成密文。

解密:把密文再经过一系列转换,还原成明文。

PS:密钥:在加解密的过程中,往往需要一个或多个中间数据进行辅助,这样的数据被称为密钥。

3.2、加密方式分类:整体上可以分为两大类:对称加密、非对称加密

对称加密:同样的一个密钥,我们可以通过这个密钥,从明文变成密文,也可以从密文变成明文。

非对称加密:有一个公钥和一个私钥,公钥人人都能拿到,私钥只有某人能拿。通过公钥进行加密,通过私钥进行解密。(公钥和私钥是配对的,公钥相当于锁、私钥相当于钥匙,最大的缺点是运算速度很慢)

3.3、加密过程

3.3.1引入对称加密

HTTPS的加密流程_第1张图片

在客户端和服务器建立连接时,

若密钥一样,则非常容易暴露,那么黑客就可以伪装成客户端拿到密钥。

若密钥不一样,则存在服务器,客户端有很多,每个客户端的密钥都不一样;则存在客户端,需要把密钥告诉服务器。

因此,密钥的传输也必须进行加密传输,则引入非对称传输。

3.3.2引入非对称加密

HTTPS的加密流程_第2张图片

服务器生成一对公钥和私钥,公钥发送出去,人人都可以拿到;客户端在本地生成对称密钥,通过公钥加密,再发送给服务器;密钥的密钥(即公钥)把密钥发送给服务器,客户端就可以通过密钥,和服务器进行沟通。

3.3.3引入证书

引入非对称密钥后就会有几个问题,即客户端是如何获取到公钥、客户端是如何确定这个公钥不是黑客伪造的。

可以通过公信机构来验证这个公钥是否是由服务器发送的。

HTTPS的加密流程_第3张图片

在客户端和服务器刚一建立连接的时候, 服务器给客户端返回一个证书,这个证书包含了刚才的公钥, 也包含了网站的身份信息。(客户端里就包含了证书,证书里就包含了公钥。)

这个证书可以理解成是一个结构化的字符串, 里面包含了以下信息:证书发布机构、证书有效期、公钥、证书所有者、签名等。当客户端获取到这个证书之后就会对证书进行校验,以防证书是伪造的。

3.4 完整流程

HTTPS的加密流程_第4张图片

HTTPS工作程中涉及到的密钥有三组:

第一组(非对称加密): 用于校验证书是否被篡改。 服务器持有私钥(私钥在注册证书时获得), 客户端持有公

钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器使用这个私钥对证书的

签名进行加密. 客户端通过这个公钥解密获取到证书的签名, 从而校验证书内容是否是篡改过.

第二组(非对称加密): 用于协商生成对称加密的密钥。服务器生成这组 私钥-公钥 对, 然后通过证书把公钥传递给客户端,然后客户端用这个公钥给生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解密获取到对称加密密钥。

第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密。

PS:其实一切的关键都是围绕这个对称加密的密钥,其他的机制都是辅助这个密钥工作的:

第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器。

第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥。

你可能感兴趣的:(学习,https)