前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【HTTPS】中间人攻击和证书的验证

【HTTPS】中间人攻击和证书的验证

作者头像
椰椰椰耶
发布2024-10-15 15:50:50
1320
发布2024-10-15 15:50:50
举报
文章被收录于专栏:学习

中间人攻击

服务器可以创建出一堆公钥和私钥,黑客也可以按照同样的方式,创建一对公钥和私钥,冒充自己是服务器(搅屎棍

image.png|640
image.png|640
image.png|514
image.png|514
  • 黑客自己也能生成一对公钥和私钥。生成公钥和私钥的算法是开放的,服务器能生产,黑客也能生成
  • 客户端拿到 pub2 之后,无法区分 pub2 是否是服务器的,于是就拿着 pub2 就对 key 进行加密了
  • 随后信息到达黑客之后,就使用 pri2 对上述数据进行解密,然后黑客就拿到了 key
  • 黑客继续使用从服务器拿到的 pub1key 进行加密,传给服务器·
  • 服务器拿到数据之后,使用 pri1 来解密,于是知道了对称密钥是 key。后续的通信,服务器和客户端之间,仍会继续使用 key 作为加密的密钥。此时后续传输的各种数据就可以被黑客解密了

引入证书

针对中间人攻击,怎么解决?


最关键的一点,客户端在拿到公钥的时候,要能有办法验证,这个公钥是否是真的,而不是黑客伪造的。这就要求服务器这边,要可以提供一个“证书”

  • 证书是一个结构化的数据(里面包含很多属性,最终以字符串的形式提供)
  • 证书中会包含一系列的信息(服务器的主域名、公钥、证书有效期…)

证书是搭建服务器的人,要从第三方的共振机构进行申请的

image.png
image.png

证书的验证

证书里面包含:

  • 服务器的域名:…
  • 证书的有效时间:…
  • 服务器的公钥:…
  • 公正机构信息:…
  • 证书的签名:…(验证过程中最重要的
证书签名

此处的签名本质上是一个经过加密的校验和

  • 把证书中其他的字段通过一系列的算法(CRC、MD5 等),得到一个较短的字符串,就是校验和
  • 如果两份数据内容一样,此时校验和就一定是相同的;如果校验和不同,则两份数据一定不同

颁布证书的公证机构,会在颁布证书的时候,给这个证书计算出校验和。然后公正机构会使用自己的私钥(和服务器的私钥无关),针对校验和进行加密,此时就得到了证书的签名

验证过程

客户端拿到证书之后,主要做两件事:

  1. 按照同样的校验和算法,把证书的其他字段都重新算一遍,得到 校验和1
  2. 使用系统中内置的公正机构的公钥,对证书中的签名进行解密,得到 校验和2

此时,就可以对比,这两个校验和是否一致。若一致,就说明证书是没有被修改过的,就是原版证书;若不一致,就说明证书被人篡改过了(比如黑客如果替换了自己的公钥,此时出来的校验和一定发生变化),此时客户端就能识别出来了

  • 此时浏览器这边就会弹出一个告警页面,告诉用户,你访问的网站有风险,请谨慎访问!!!(可能是黑客进行了中间人攻击,也可能是证书过期了)

市面上的公正机构一共也没多少,这些公正机构都有自己的私钥,对应的公钥都包含在常见的系统中。Windows 里面就内置了大量的公钥(如果没有,也可以额外安装)

  • 前面安装 fiddler 的时候,有一步操作就是在安装证书(主要就是在安装 fiddler 这边提供的公钥)

证书是为了防止黑客篡改,而不是为了避免黑客知道。黑客的系统也内置了公正机构的公钥,黑客也能进行解密

  1. 如果黑客直接修改公钥,不修改签名。此时,客户端验证的校验和是一定不一样的,直接就识别出来了
  2. 如果黑客修改公钥,也尝试重新生成签名,由于黑客不知道公正机构的密钥,所以黑客无法重新生成加密的签名。 如果黑客拿自己的私钥加密呢?客户端这边拿着公证机构的公钥也会解密失败
  3. 黑客能不能自己也去公证机构申请个证书?然后把自己的整数替换掉服务器的证书呢? 证书中还需要包含服务器的域名,域名是唯一的,黑客申请的证书的域名,和原服务器的域名肯定是不同的。 客户端拿到证书之后,一看域名都不一样,直接就知道证书是假的了,都不用进行校验和验证了

当然,上述的过程,所谓的安全,也不是绝对的安全。上述的安全本质上都是基于非对称加密体系。非对称加密体系也不是无懈可击的,只不过破解这样的加密体系,需要的计算量非常大,超出了现有计算机的算力上限。

随着算力的提升,尤其是量子计算机崛起,我们的算力又会大幅度提升,对现有的密码学体系就会造成重大冲击

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 中间人攻击
  • 引入证书
    • 证书的验证
      • 证书签名
      • 验证过程
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档