HTTPS协议加密原理-模拟黑客攻击

目录

前言:

1.对称加密原理

1.1加密原理

1.2预防缺陷

2.非对称加密原理

2.1加密原理

2.2预防缺陷

3.中间人攻击

3.1中间人攻击方法

3.2破解非对称加密

4.证书预防原理

4.1解决中间人攻击

4.2问题探究

(1)中间人有没有可能篡改该证书?

(2)中间人整个掉包证书?

4.3完整流程


前言:

 HTTPS协议对于HTTP协议多了一个加密层,这个加密层通过多种方式对于网络攻击进行防御。

 网络黑客的攻击手段多样,本节主要模拟网络黑客攻击,详解HTTPS的加密工作原理。

序列:HTTP/HTTPS - 006


1.对称加密原理

1.1加密原理

 在网络环境中,黑客往往可以捕获客户端和服务器之间的交互数据,这对于网络数据的安全性大大降低。

 引入对称加密后,这一现象可以得到一定杜绝。

HTTPS协议加密原理-模拟黑客攻击_第1张图片

 引入对称加密之后,即使数据被黑客截获,由于黑客不知道密钥是啥,因此就无法进行解密,也就不知道请求的真实内容是啥了。 

1.2预防缺陷

 但事情没这么简单,服务器同一时刻其实是给很多客户端提供服务的,这么多客户端,每个人用的秘钥都必须是不同的(如果是相同那密钥就太容易扩散了,黑客就也能拿到了).

 因此服务器就需要维护每个客户端和每个密钥之间的关联关系,这也是个很麻烦的事情~

HTTPS协议加密原理-模拟黑客攻击_第2张图片

比较理想的做法,就是能在客户端和服务器建立连接的时候,双方协商确定这次的密钥是啥~

HTTPS协议加密原理-模拟黑客攻击_第3张图片

但是如果直接把密钥明文传输,那么黑客也就能获得密钥了 ,所以引入非对称加密。

2.非对称加密原理

2.1加密原理

HTTPS协议加密原理-模拟黑客攻击_第4张图片

客户端在本地生成对称密钥,通过公钥加密,发送给服务器.由于中间的网络设备没有私钥,即使截获了数据,也无法还原出内部的原文,也就无法获取到对称密钥

服务器通过私钥解密,还原出客户端发送的对称密钥,并且使用这个对称密钥加密给客户端返回的响应数据

后续客户端和服务器的通信都只用对称加密即可,由于该密钥只有客户端和服务器两个主机知道,其他主机/设备不知道密钥即使截获数据也没有意义 

2.2预防缺陷

那么接下来问题又来了:

客户端如何获取到公钥?

客户端如何确定这个公钥不是黑客伪造的?

黑客可以通过中间人攻击进行破解非对称加密。

3.中间人攻击

3.1中间人攻击方法

黑客可以使用中间人攻击,获取到对称密钥。

3.2破解非对称加密

  1. 服务器具有非对称加密算法的公钥S,私钥S
  2. 中间人具有非对称加密算法的公钥M,私钥M'客户端向服务器发起请求,服务器明文传送公钥S给客户端
  3. 中间人劫持数据报文,提取公钥S并保存好,然后将被劫持报文中的公钥S替换成为自己的公钥M,并将伪造报文发给客户端
  4. 客户端收到报文,提取公钥M(自己当然不知道公钥被更换过了),自己形成对称秘钥X,用公钥M加
  5. 密X,形成报文发送给服务器
  6. 中间人劫持后,直接用自己的私钥M'进行解密,得到通信秘钥X,再用曾经保存的服务端公钥S加密后,将报文推送给服务器
  7. 服务器拿到报文,用自己的私钥S'解密,得到通信秘钥X
  8. 双方开始采用X进行对称加密,进行通信。但是一切都在中间人的掌握中,劫持数据,进行窃听甚至修改,都是可以的

4.证书预防原理

4.1解决中间人攻击

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

HTTPS协议加密原理-模拟黑客攻击_第5张图片

当客户端获取到这个证书之后,会对证书进行校验(防止证书是伪造的).

判定证书的有效期是否过期

判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构)

验证证书是否被篡改:从系统中拿到该证书发布机构的公钥,对签名解密,得到一个 hash 值(称为数据摘要),设为 hash1.然后计算整个证书的 hash 值,设为 hash2.对比 hash1和 hash2 是否相等.如果相等,则说明证书是没有被篡改过的,

4.2问题探究

(1)中间人有没有可能篡改该证书?

中间人篡改了证书的明文
由于他没有CA机构的私钥,所以无法hash之后用私钥加密形成签名,那么也就没法办法对篡改后的证书形成匹配的签名
如果强行篡改,客户端收到该证书后会发现明文和签名解密后的值不一致,则说明证书已被篡改证书不可信,从而终止向服务器传输信息,防止信息泄露给中间人

(2)中间人整个掉包证书?

因为中间人没有CA私钥,所以无法制作假的证书(为什么?)
所以中间人只能向CA申请真证书,然后用自己申请的证书进行掉包.
这个确实能做到证书的整体掉包,但是别忘记,证书明文中包含了域名等服务端认证信息,如果整体掉包,客户端依旧能够识别出来。
永远记住:中间人没有CA私钥,所以对任何证书都无法进行合法修改,包括自己的

4.3完整流程

左侧都是客户端做的事情,右侧都是服务器做的事情

HTTPS协议加密原理-模拟黑客攻击_第6张图片


以上便是模拟网络黑客攻击中HTTPS协议的几个预防方法。

你可能感兴趣的:(JavaEE-进阶,java-ee,网络,网络协议,https,服务器)