HTTPS加密过程

目录

一、对称加密

二、非对称加密

中间人攻击

证书


一、对称加密

对称加密其实就是通过同一个 "密钥" , 把明文加密成密文, 并且也能把密文解密成明文。

特点:计算起来比较快速。

 这样做,即使数据被截获,但是黑客不知道密钥是什么,也就无法进行解密,无法获得请求的内容是什么。

但是问题来了,服务器在同一时刻不是只服务于一台客户端的,每个客户端与服务器之间的密钥是不同的,因此服务器必须维护每个客户端和每个密钥之间的滚连联系,过于繁琐。

所以我们想是否可以在客户端与服务器建立连接时,双方就协商好,确定这次交互的密钥是什么。

事实证明这种方法是行不通的:如果将密钥进行传输,黑客就能获取到密钥,从何谈起安全性呢,所以必须对密钥进行加密后传输,此时又回到最开始的问题,周而复始。

那么我们如何才能将密钥进行传输呢?

二、非对称加密

非对称加密包含两种密钥:公钥密钥

缺点:运算速度非常慢。

公钥和密钥是配对的,对同一个明文来讲:

明文 + 公钥 == 密文                                明文 + 私钥 == 密文

密文 + 私钥 == 明文                                密文 + 公钥 == 明文

 

客户端获取到服务器的公钥,用公钥将 对称加密的密钥key 加密,然后将密文发给服务器。

服务器得到密文后,通过私钥进行解密,就知道了key。最后双方就可以进行对称加密式的交互。

在这个过程中,黑客也能获得了服务器的公钥以及密文,但是由于没有配套的私钥,所以无法进行解密。

采用这种方式就安全了吗,当然是不可能的。

中间人攻击

黑客在中间伪造公钥,就能获取到key,并且客户端与服务端也发现不了异常。

为解决中间人攻击,我们提出一个新的概念--证书!

证书

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

证书 可以理解成是一个结构化的字符串, 里面包含了以下信息:

证书发布机构

证书有效期

服务器的公钥

证书所有者

被加密的签名

。。。

 当客户端获取到证书时,为防止证书是伪造的,会对证书进行校验:

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

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

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

此时又会有一个新的疑问:黑客是否能通过修改证书这一行为获取密钥key呢。

答案是否定的:证书这个东西每个人都能获取到,黑客也不例外。

以下是黑客的操作:

① 获取证书。

② 对签名进行解密。

③ 黑客想修改证书携带的公钥,他将公钥修改后,将证书的各个属性进行计算,算出一个新的签名。然后用这个新签名把证书的签名进行替换。

问题的关键在于黑客不知道发布机构的私钥,使得这个签名就算加密后,也无法用机构的公钥进行解密。

当然这种方式也不是万无一失的,黑客当然也可以想办法获取机构的私钥,但是成本的多少往往是与利益挂钩的。黑客也不想花高成本得到你想吃蛋炒饭这一条消息,他会崩溃的🤡

The End

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值