HTTPS之原理

目录

一、简介

二、HTTP与HTTPS对比

1.HTTP安全隐患

2.HTTPS优势

三、 加密传输过程(存在对称加密和非对称加密)

1.对称加密

(1)对称加密初解01(理想情况)

(2)对称加密初解02(现实情况)

2.非对称加密

(1)非对称加密特点

(2)非对称加密算法进行对称加密算法协商过程

(3)SSL证书和CA机构

(4)访问HTTPS流程

(5)总结


一、简介

我们知道,HTTP请求都是明文传输的,所谓的明文指的是没有经过加密的信息,如果HTTP请求被黑客拦截,并且里面含有银行卡密码等敏感数据的话,会非常危险。为了解决这个问题,Netscape 公司制定了HTTPS协议,HTTPS可以将数据加密传输,也就是传输的是密文,即便黑客在传输过程中拦截到数据也无法破译,这就保证了网络通信的安全。

HTTP默认采用80作为通讯端口,对于传输采用不加密的方式,HTTPS默认采用443,对于传输的数据进行加密传输

HTTPS的全称是HTTP over SSL,简单的理解就是,在之前的HTTP传输上增加了SSL(Secure Socket Layer)安全套接字层协议加密的能力。

二、HTTP与HTTPS对比

1.HTTP安全隐患

HTTP最大安全隐患便是信息劫持和篡改,HTTP的信息传输中以明文的形式进行传输,信息很容易被黑客给劫持,更有甚者,黑客可以伪装服务器将篡改后的信息返回给用户

2.HTTPS优势

如果我们采用HTTPS协议,客户端client发送一句hello给服务器端,服务器端server返回一句hello给客户端。由于HTTPS发送信息通过SSL协议加密,即使中间包被黑客窃取了,也无法解密传输的内容

三、 加密传输过程(存在对称加密和非对称加密)

1.对称加密

(1)对称加密初解01(理想情况)

当客户端发送Hello字符串的时候,在进行信息传输前,采用加密算法(上图中的秘钥S)将hello加密程JDuEW8&*21!@#进行传输,即使中间被黑客劫持了,如果没有对应的秘钥S也无法知道传出的信息为何物,在上图中信息的加密和解密都是通过同一个秘钥进行的,对于这种加密我们称之为对称加密,只要A和B之间知道加解密的秘钥,任何第三方都无法获取秘钥S,则在一定条件下,基本上解决了信息通信的安全问题。

但在现实的情况下(www),往往存在多个客户端,实际的通讯模型远比上图复杂

(2)对称加密初解02(现实情况)

实际的通信模型如下

server和所有的client都采用同一个秘钥S进行加解密,如果这样的话,无异于没有加密

由于server和所有的client都采用同一个秘钥S,则黑客们作为一个client也可以获取到秘钥S,此地无银三百两。所以在实际的通讯中,一般不会采用同一个秘钥,而是采用不同的秘钥加解密,如下图

A和server通信采用对称加密A算法,B和server通信采用对称秘钥B算法,因此可以很好的解决了不同的客户端采用相同的秘钥进行通讯的问题。

那现在又存在问题了,A通过明文传输和server协商采用了加密算法A,但这条信息本身是没有加密的,因此黑客们还是可以窃取到秘钥的,整个的通讯仍然存在风险。

2.非对称加密

(1)非对称加密特点

在密码学跟对称加密一起出现的,应用最广的加密机制“非对称加密”,如上图,特点是私钥加密后的密文,只要是公钥都可以解密,但是反过来公钥加密后的密文只有私钥可以解密私钥只有一个人有,而公钥可以发给所有的人

因此,我们可以推想

1 '' 公钥是开放给所有客户端的,但私钥是需要保密的,存在于服务端

2 '' 服务器端server向client端(A、B.....)的信息传输是不安全的:因为所有人都可以获取公钥

3 '' 但client端(A、B.....)向server端的信息传输是安全的:因为私钥只有server端存在

(2)非对称加密算法进行对称加密算法协商过程

信息通信采用HTTP是不安全的,存在信息劫持、篡改的风险,HTTPS是加密传输,是安全的通信,对于https加密的过程,我们首先介绍的对称加密,采用对称加密进行通信存在秘钥协商过程的不安全性,因此我们采用了非对称加密算法解决了对协商过程的加密,因此HTTPS是集对称加密和非对称加密为一体的加密过程

如果使用非对称加密算法,我们的客户端A,B需要一开始就持有公钥,要不没法开展加密行为

这下,我们又遇到新问题了,如何让A、B客户端安全地得到公钥

client获取公钥最最直接的方法是服务器端server将公钥发送给每一个client用户,但这个时候就出现了公钥被劫持的问题,如上图,client请求公钥,在请求返回的过程中被黑客劫持,那么我们将采用劫持后的假秘钥进行通信,则后续的通讯过程都是采用假秘钥进行,数据库的风险仍然存在。

在获取公钥的过程中,我们又引出了一个新的话题:如何安全的获取公钥,并确保公钥的获取是安全的, 那就需要用到SSL 证书(需要购买)和CA机构

(3)SSL证书和CA机构

如上图所示,在第 ② 步时服务器发送了一个SSL证书给客户端,SSL 证书中包含的具体内容有证书的颁发机构、有效期、公钥、证书持有者、签名,通过第三方的校验保证了身份的合法,解决了公钥获取的安全性

(4)访问HTTPS流程

以浏览器为例说明如下整个的校验过程:

1'' 浏览器向服务器的443端口发送请求,请求中携带了浏览器支持的协议、加密算法和MAC算法等

2'' 服务器收到请求后,选择某种非对称加密算法,把数字签名、公钥、身份信息发送给浏览器

3'' 浏览器收到后,取证书中的证书所有者、有效期等信息进行一一校验,这一部分是浏览器内置的TLS完成的

    3.1'' 首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有找到,此时就会提示用户该证书是不是由权威机构颁发,是不可信任的。如果查到了对应的机构,则取出该机构颁发的公钥

    3.2''用机构的证书公钥解密得到证书的内容和证书签名,内容包括网站的网址、网站的公钥、证书的有效期等。浏览器会先验证证书签名的合法性。签名通过后,浏览器验证证书记录的网址是否和当前网址是一致的,不一致会提示用户。如果网址一致会检查证书有效期,证书过期了也会提示用户。这些都通过认证时,浏览器就可以安全使用证书中的网站公钥了。

4'' 浏览器生成一个随机数R,并使用网站公钥对R进行加密,并将公钥加密后的R发送握手信息给服务器

5'' 服务器用自己的私钥解密得到R

握手结束

6'' 服务器解密后,使用R为密钥使用了对称加密算法,加密网页内容并传输给浏览器

7'' 浏览器以R为密钥使用之前约定好的解密算法获取网页内容

(5)总结

HTTPS要使客户端与服务器端的通信过程得到安全保证,必须使用的对称加密算法,但是协商对称加密算法的过程,需要使用非对称加密算法来保证安全,然而直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通信安全问题。

猜你喜欢

转载自blog.csdn.net/mmake1994/article/details/88671076