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

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

中间人攻击

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

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

引入证书

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


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

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

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

证书的验证

证书里面包含:

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

证书签名

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

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

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

验证过程

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

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

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

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

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

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

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

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

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

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


相关文章
|
24天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
16天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
20天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2577 22
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
18天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
|
3天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
2天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
163 2
|
20天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1576 16
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
22天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
977 14
|
4天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
221 2
|
17天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
734 9