HTTPS 的加密流程(你值得拥有)

Posted 文墨轩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTPS 的加密流程(你值得拥有)相关的知识,希望对你有一定的参考价值。

HTTPS

文章目录

什么是HTTPS

HTTPS与HTTP一样都是应用层协议,与HTTP不同的是:HTTP的协议内容都是按照文本方式进行明文传输的,这导致在传输过程第三方者能够轻易获取传输的内容,而HTTPS在HTTP协议基础上引入一个加密以防止传输内容泄露或被篡改。

什么是‘加密’

加密就是指将明文(要传输的信息)按照指定的方式进行变换,生成密文。
解密就是指将密文按照指定的方式进行变换,还原成为明文。
在加密和解密的过程中,一般需要一种或者多个中间转换的数据,来辅助这过程的正常进行,这种数据被叫做密钥。
其作用就是为了防止他人获取其中的明文,造成隐患。

例如:
小明想向你表明:swpuyyyds 这个意思但又不想让他人知道便将该明文通过密钥进行转换为密文给你,你收到密文后又通过密钥将其转变为明文从而获得小明的意思。
明文:swpuyyyds
暗文:wsupyydys

加密的方式有哪些

加密的方式有很多,但是在整体上分为两大类:对称加密和非对称加密。

对称加密

对称加密:指的是明文在加密和暗文在解密过程中都使用同一个密钥。
比如:一个简单的对称加密, 按位异或
明文a=1314,密钥key=1314,
那么密文为a^1314 =b,在解密密文过程中也使用异或运算b^1314就获得了原来的明文1314
当明文引入对称加密后,即使黑客入侵网络设备,让数据被截获,但不知道密钥是什么,也无法进行准确的解密。
如图:

但是:服务器在同一时刻会给不止一位的客户端提供服务,这些客户端与服务器的密文必须不一样否则就容易被黑客获取,因此一般的方法就是客户端在与服务器建立连接的时候就应该协商这次的密钥是什么。
如图:

注意:如果客户端直接将密钥进行明文传输给服务器,那么黑客也能获得密钥,那么后续的加密操作就没有任何用处了。因此,客户端在传输密钥的时候必须要给密钥进行加密。
为了能够让密钥也能进行加密,那么我们就要引入非对称加密

非对称加密

非对称加密:一般使用两个密钥,一个是称为‘公钥’,另一个叫做‘私钥’。
公钥和私钥是配对的,其最大的缺点就是运算速度慢,比对称加密慢许多。
私钥就可以对密文解密也可以对明文进行加密,公钥也一样。一般情况来说客户端可以获得公钥,而服务器一般使用私钥。

当客户端拥有公钥时,向服务器发送密钥时步骤如下:

  1. 客户端中先用公钥将密钥进行加密形成密文,再将密文发送给服务器
  2. 服务器接收到密文后,通过私钥对密文进行解密从而获取客户端给的密钥
  3. 再将收到密钥的信息发给客户端,让客户端知道自己已经收到密钥了
  4. 之后客户端就使用自己生成的密文进行对称加密来传递明文
    步骤如图:

    注意:对称加密的效率比非对称加密高很多, 因此只是在开始阶段协商密钥的时候使用非对称加密, 后续的传输仍然使用对称加密.
    不过这种方法也有一定问题:如果客户端获取的公钥是黑客伪造的,那么其后续的加密就没有用了。
    步骤如下:
    1.当客户端请求公钥时,黑客趁机将自己生成的公钥发给客户端,客户端以为是服务器的公钥,就用该公钥对自己的密钥进行加密发送出去。
    2.当黑客获取该客户发送的密文是用自己生成的私钥进行解密从而获得密钥
    3.然后黑客获取服务器的公钥后将获取的密钥进行用服务器公钥进行加密后发给服务器
    4.服务器获得该密钥后,用私钥解密从而获得客户端的密钥。
    5.之后客户端用该密文进行加密已经没有任何用处了,黑客已经拥有了密钥。
    如图:



为了解决这一问题:通常,在客户端和服务器建立的时候,服务器给客户端返回一个证书,该证书里面就包含公钥,也包含了网站的信息。
如图:

总结HTTPS传输过程

  1. 客户端先从服务器获取到证书,证书中包含公钥
  2. 客户端将证书进行校验
  3. 客户端生成一个对称密钥,用证书中的公钥进行加密,发送给服务器
  4. 服务器得到这个请求后用私钥进行解密,得到该密钥
  5. 客户端以后发出后续的请求,都使用这个对称密钥进行加密。
  6. 服务器收到这个密文也用这个密钥进行解密。

以上是关于HTTPS 的加密流程(你值得拥有)的主要内容,如果未能解决你的问题,请参考以下文章

HTTPS中的对称密钥加密,公开密钥加密,数字证书

用CryptoAPI进行RSA非对称加密解密,该怎么处理

aes

AES加密

AES加密算法

带你用Python实现AES对称加密