HTTPS

HTTP 协议内容都是按照文本的方式明文传输的。 这就导致在传输过程中出现一些被篡改的情况。为了保证安全,现在大多数网站都采用HTTPS协议。HTTPS协议是在HTTP协议的基础上引入了一个加密层SSL。

目录

    • HTTPS的加密流程
      • 对称加密
      • 非对称加密
      • 为什么引入非对称加密?
      • 中间人攻击
      • 引入证书
    • 加密总结

HTTPS的加密流程

所谓加密,就是把明文内容变为密文。引入加密的目的是避免被黑客窃取数据。加密方式包括对称加密和非对称加密。

对称加密

加密和解密使用同一个密钥
例如:1234这样的明文,约定key是 1111,1234按位异或1111得到密文133,133按位异或1111得到明文1234。
对称加密可以保证数据传输过程中的数据安全性。

非对称加密

加密和解密使用一对密钥(公钥和私钥:只有自己持有的为私钥,对外公开的是公钥)。使用公钥加密,就要用私钥解密;使用私钥加密,就要用公钥解密。

为什么引入非对称加密?

服务器与客户端建立连接时,会向客户端发送一个密钥key,客户端拿到这个key后,就可以按照key来和服务器进行数据交互了。但是传输key的过程是明文的,也就是说黑客也可以拿到这个key。此时这个加密就形同虚设了。
HTTPS_第1张图片
为了避免黑客获取key,传输key的过程需要再加密。
具体流程:服务器生成一对密钥(公钥pub和私钥pri,公钥进行加密,私钥进行解密),把公钥传输给客户端,让客户端进行加密,客户端返回密文后客户端再解密拿到key。
由于公钥的传输是明文的,因此黑客可以获取到,但是公钥只能用来加密,不能用来解密,那么黑客拿到这个公钥也就无用武之地了。后续客户端传给服务器的是密文传输的,即使再被黑客截获,因为没有pri解密,也就获取不到key了。
HTTPS_第2张图片
如果图难以理解的话,可以把pub理解为一把锁,pri理解为开这把锁的钥匙,服务器向客户端发送这把锁,黑客可以拿到这把锁,但是却没有钥匙,客户端把key放到一个盒子里,再用这把锁锁上发给服务器,黑客拿到这个盒子,却开不了。因此只能看着它发到服务器手中。服务器有专门开这把锁的钥匙,因此轻松的就拿到了key。
小结:key是用来保护传输的数据的,有了key,黑客就不能轻易获取数据信息;而pub和pri是用来保护key的,有了pub和pri,黑客就不能轻易获取key,进而获取数据信息了。

中间人攻击

引入非对称加密来传输key是否就安全了呢?
其实从我举得例子来看,就可以发现端倪:
黑客拿到这把锁(黑客早于客户端拿到)其实并不是毫无办法的,完全可以偷梁换柱,也就是把锁掉包。黑客自己生成一把锁和一把钥匙,把服务器的锁留下来,自己的锁发给客户端。客户端此前没有见过锁的样子,就认为发过来的锁是服务器的,因此把key放进盒子里,用锁锁起来发给服务器。黑客再次截获这个盒子,用自己的钥匙打开,就拿到了key,再把key用原先从服务器获取的锁锁起来,继续发给服务器。这个过程中,服务器和客户端都没有发现异常,就认为key的传输是保密的,实际上key已经被黑客获取了!
这个过程就称为中间人攻击
HTTPS_第3张图片

引入证书

中间人攻击的问题在于客户端不能识别服务器发的公钥pub。
为了解决中间人攻击问题,可以引入证书。
证书用于验证服务器身份。它由权威机构颁发,用来证明该服务器是可信的。服务器和客户端建立连接时,服务器首先向客户端发送一个权威证书,这个证书就包含了公钥pub,证书包含一个加密的签名,客户端可以使用公钥pub2进行解密(这个公钥pub2是附在操作系统中的,任何设备都具有)。黑客截获证书后,虽然可以解密并篡改,但是不能重新加密,那么客户端就会第一时间发现证书被篡改了。证书解密后也会有校验和,用于检验证书的完整性(在传输过程中可能由于某些原因造成数据丢失),只有完整且未被篡改的证书,客户端才会使用证书上的公钥pub(即服务器的公钥),这样就避免了公钥pub被黑客掉包了。
HTTPS_第4张图片
通过引入证书,也就解决了中间人攻击的问题。但即使引入了证书,也并不能保证绝对安全。只要是破解成本高于数据本身,那么就认为是安全的。

加密总结

HTTPS的加密流程涉及到三对密钥。

  1. 通过非对称密钥检验证书的完整性和是否被篡改,保证服务器公钥正常传输到客户端。
  2. 通过非对称密钥传输对称密钥key,避免传输过程中被黑客直接获取到key。
  3. 通过对称密钥进行数据传输和交互,非对称密钥的开销大,运算速度慢,为了保证传输速率,采用对称密钥。

你可能感兴趣的:(https,安全,网络)