本文介绍: 本文讲述了HTTPS的三大机制原理,即防窃听、防冒充和防篡改。HTTPS采用加密算法确保数据不被窃听,并通过数字证书认证确保访问网站真实可信;同时将内容进行摘要计算数字签名,防止篡改攻击

前言

        本文内容主要对以下两篇文章内容整理过滤,用最直观的角度了解到HTTPS的保护机制,当然啦,如果想要深入了解HTTPS,本文是远远不够的,可以针对以下第一个链接中的文章拓展板块进行学习,希望大家通过本文能够对HTTPS有一个初步的认识,

你真的了解HTTPS吗?(一) – HTTPS和加密 – 知乎 (zhihu.com)

1.5 万字 + 40 张图解 HTTP 常见面试题 – 知乎 (zhihu.com)

HTTPS

HTTPS公认的三大优势有:

  1. 数据加密,防窃听:HTTPS中的对称加密和非对称加密
  2. 身份验证,防冒充:HTTPS的CA和证书
  3. 完整校验,防篡改:HTTPS的哈希

HTTPS混合加密——防窃听

HTTPS 采用的是对称加密非对称加密结合的「混合加密方式

img

HTTPS为什么时要有对称加密和非对称加密两种加密方式

        解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收使用私钥进行解密得到对称加密的密钥然后双方可以使用对称加密来进行沟通,这种设计同时兼顾了安全效率

HTTPS对称加密的密钥SK如何产生和传输

HTTPS分为2个过程

  1. 协商对称加密密钥SK的非对称加密阶段称为TLS握手阶段
  2. 使用SK对数据对话内容)进行对称加密的阶段称为数据通信阶段

TLS握手阶段

产生对称密钥SK,主要基于三种常见的办法:

数据通信阶段

        发送端首先用密钥SK对通信内容 + 通过摘要算法算出明文的「指纹」一同进行对称加密,接着通过网络传输出去;服务端收到数据后,用SK先将数据解密出明文,通过摘要算法算出明文的「指纹」,通过比较客户端携带的「指纹」和当前算出的「指纹」做比较,若「指纹相同说明数据是完整的。

image.png

HTTPS的有几套非对称加密?目的是什么是否可以省略

直接给出答案2套非对称加密

        第一套用于协商对称加密密钥SK第二套用于数字证书签名加密。这两者的区别是:前者是服务器端(如果是双向验证的话,客户端也会有一套非对称加密公私钥)产生的。私钥服务端上;后者是CA机构产生的,私钥在CA机构那边。并且,这2套都不可省略。(这个说法略不严谨,但是在实际操作中,确实都不建议省略。)


HTTPS数字证书——防冒充

        在 HTTPS/TLS 协议中,客户端和服务器都有一份公钥私钥客户端会首先发起连接请求服务器会将自己公钥发送给客户端。客户端接收到公钥之后,会使用该公钥对信息进行加密,并将密文发送给服务器。在接受到加密信息服务器端,会使用该服务器私钥(不是客户端私钥)对密文进行解密,得到原始信息。这就存在问题如何保证公钥不被篡改信任度?

所以这里需要借助第三方权威机构 CA (数字证书认证机构),将服务器公钥放在数字证书(由数字证书认证机构颁发)中,只要证书是可信的,公钥就是可信的。主要依赖于一个防伪标识” — 数字签名

        数字签名生成过程是首先对原文哈希,把一段不定长的文本映射固定长度字符空间,接着再用CA机构的私钥对这段定长字符做加密。大大提高整体运算效率

申请证书

        用户向CA机构提交自己信息(如域名)和公钥用于TLS握手阶段),CA机构利用自己的私钥对其加密生成数字证书,通过数字证书的方式保证服务器公钥的身份解决冒充的风险

验证证书

        接受证书的一端先对除数字签名外的其他部分一次相同哈希算法(证书中指明了哈希算法),得到这段文本哈希映射,记作H1;获取CA机构的公钥对数字签名属性解码,得到了CA机构计算出的哈希映射,记作H2。对比H1和H2两个字符是否严格相等,若是,代表该证书的信息未被篡改,证书有效;否则,证书内容被篡改,证书无效。 若证书有效,接受端会再进行对端的身份校验(验证域名 ,若身份验证通过,接收端会拿证书上的公钥加密接下来整个TLS握手阶段的会话密钥SK之后,发送服务端然后服务端用私钥进行解密出SK

image.png

CA的公钥已事先置入到了浏览器操作系统


HTTPS的哈希——防篡改

        在数据通信阶段,SSL/TLS会对原始消息message)做一次哈希,得到该消息message的摘要,称为消息摘要(Message Digest 。对端接受到消息后,使用协商出来的对称加密密钥解密数据包,得到原始消息message;接着也做一次相同的哈希算法得到摘要,对比发送过来的消息摘要和计算出的消息摘要是否一致,可以判断通信数据是否被篡改。


总结:HTTPS通信流程

SSL/TLS 协议基本流程

  • 客户端向服务器索要并验证服务器的公钥。
  • 双方协商生产会话秘钥」。
  • 双方采用「会话秘钥」进行加密通信。

前两步也就是 SSL/TLS 的建立过程,也就是 TLS 握手阶段

SSL/TLS 的「握手阶段」涉及四次通信

  1. 客户端向服务器发起加密通信请求,也就是 ClientHello 请求。该请求中主要内容有客户支持的SSL/TLS版本 + 一个随机数
  2. 服务器确认 SSL/ TLS 协议版本,如果浏览器支持,则关闭加密通信。反之向客户端发出响应,也就是 SeverHello。该请求中主要内容有CA数字证书 + 一个随机数
  1. 客户收到服务器的回应之后,首先通过浏览器或者操作系统中的 CA 公钥,确认服务器的数字证书的真实性。如果证书没有问题,客户端会从数字证书中取出服务器的公钥然后使用它加密报文,向服务器发送如下信息:

    (1)一个随机

    (2)加密通信算法改变通知表示随后的信息都将用「会话秘钥」加密通信。

    (3)之前所有内容的发生的数据做一次哈希,得到消息摘要

    客户端通过这三个随机数用双方协商的加密算法,各自生成本次通信的「对称会话秘钥」

  1. 校验消息摘要,通过后服务器也基于这三个随机数生成本次通信的「对称会话秘钥」,再返回去一个响应给客户端

    (1)表示随后的信息都将用「会话秘钥」加密通信。

    (2)之前所有内容的发生的数据做一次哈希,得到消息摘要,给客户端进行校验

img

        至此,整个 SSL/TLS 的握手阶段全部结束接下来,客户端与服务器进入加密通信,就完全是使用普通的 HTTP 协议,只不过用「会话秘钥」加密内容。

原文地址:https://blog.csdn.net/weixin_73077810/article/details/134766098

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_36502.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注