HTTPS的加密流程

发布于:2024-09-17 ⋅ 阅读:(35) ⋅ 点赞:(0)

HTTP协议采用的是明文传输,所以就存在数据被截取和修改的危险,比较有名的一件事就是2015的运营商劫持事件,所以针对HTTP协议传输的数据进行加密是非常有必要的,HTTPS就是HTTP协议的基础引入了加密,可以说HTTPS=HTTP+SSL;

了解加密过程之前需要了解几个概念:明文,密文,密钥,对称加密,非对称加密

明文:要传输的数据;

密文:对明文进行加密就可以得到密文;

密钥:对明文进行加密和解密的重要道具/方法,密钥是非常安全,没有解密的密钥破解是非常大的,所以一般黑客不回去破解密钥,而是想法设法劫取到密钥。

对称加密:加密,解密是同一个密钥

非对称加密:加密,解密的密钥是一对密钥,分为公钥和私钥,选择一个进行加密,另一个进行解密。

所谓”安全“都是相对,不是绝对的,不是说采用哪种加密方式就是绝对安全的,没有一种加密是绝对安全的,只要解密的成本,包括不限于人员,资金,算力,解密时间够高够长,这种加密就是安全的,破解成本越高越安全,但是随着算力的进步,也有可能目前很安全的加密在未来变得不安全。

HTTPS的工作流程

采用明文传输是非常危险的,HTTPS协议明文进行加密,采用的就是:对称加密和非对称加密

1.引入对称加密

对称加密就是客户端和服务器各自拥有同一个密钥,所以即使传输的数据被黑客劫持了,黑客对着加密的数据也只能束手无策。

对称加密的密钥是由客户端生成的,所以不同的客户端有不同的密钥,客户端需要把密钥发给服务器,只要服务器获取到密钥才能对客户端发来的数据进行解密,处理之后做出响应。这就意味着如果被黑客截取到客户端发给服务器的密钥,就意味着如此的对称加密也是不安全的

那能不能对密钥加密呢?如果依旧采用对称加密加密密钥,依旧可能被黑客截取到,所以采用对称加密对密钥加密是行不通的。所以我们要采用非对称加密对对称密钥的密钥进行加密。

2.引入非对称加密加密对称加密的密钥

非对称加密的密钥非为公钥和私钥,这一对密钥由服务器生成,服务器保留私钥,等到客户端连接上服务器的时候,服务器就会把公钥发给客户端,这就是所有客户端都拥有同一个公钥。

客户端拿到公钥,用公钥对密钥进行加密,即使这个加密的密钥被黑客截取到,黑客没有私钥,也办法进行破解,等到服务器接收到,就能拿着私钥进行解密,从而获得密钥。

但是仅仅是这样也是不安全的,如果发生”中间人攻击“,以上加密也是徒劳无功。

3.中间人攻击

只要是通过以上流程的,客户端进行加密的公钥实际是黑客的公钥,后续客户端发送的任何加密过的数据都能够被黑客拿着自己的生成的私钥随意破解,即使进行修改再使用服务器的公钥进行加密,随后再发给服务器,整个过程数据不知不觉就被黑客知道了甚至修改,可以说是神不知鬼不觉。

4.解决中间人攻击,实现真正的安全加密

实现真正加密的方法就是引入第三方公证机构,服务器在创立之初就要像公证机构申请一个证书,有公证机构证明这个服务器是否合法合规安全,并生成一个证书给服务器。

证书的内容可以理解是一个特殊的结构化字符串,一般包括:1.发证机构,2.证书的有效期,3.服务器的公钥,4.证书的所有者,5.数字签名等等信息,其中最重要的就是数字签名

数字签名:证书是由第三方公证机构生成的,它会将证书的内容通过计算得到一个校验和,再生成一堆公钥是私钥,并拿着私钥对检验和进行加密从而获得数字签名。

客户端在于服务器通信之间会向服务器索要证书,等到客户端拿到证书之后就会如法炮制的对着证书中除了数字签名之外的信息进行计算获得一个校验和1,再拿着操作系统内置的公钥对数字签名进行解密获得校验和2,之后客户端就会比较校验和1和校验和2,如果不相同就说明证书信息被修改过,就会停止通信。如果相同就说明这个服务器是可信任,就可以拿着证书中服务器的公钥进行加密通信。

为什么说这个方法就是安全的呢?
  • 因为即使黑客劫持到证书,对证书进行修改,客户端在计算校验和的时候就会发现被修改了。
  • 如果黑客修改证书又修改数字签名呢?前面已经说了客户端会拿着系统内置的第三方公证机构的公钥对数字前面进行解密,如果解密失败,客户端也能发现被修改了。
  • 即使黑客有再大的本事,也不可能会想要在操作系统中加入自己的公钥,从而劫持修改证书。