科普文:HTTPS协议

概叙

        HTTPS(Secure Hypertext Transfer Protocol)即安全超文本传输协议,是一个安全通信通道。用于计算机网络的安全通信,已经在互联网得到广泛应用。

        HTTPS 是基于 HTTP 的扩展,其相当于 HTTP协议+SSL(安全套接层)/TLS(安全传输层协议)协议加密。因此 HTTPS 也常指 HTTP over SSL 或 HTTP over TLS。

HTTP 的缺点:

  1. HTTP 通信使用明文,内容可能会被窃听。
  2. HTTP 无法验证报文的完整性,所以有可能遭到篡改。
  3. HTTP 不验证通信方的身份,有可能遭遇伪装。
  4. HTTP 通信使用明文,且不验证通信方的身份,会被中间人挟持。

        HTTPS 与 HTTP 的区别:HTTP 协议的数据传输是通过明文的形式做传输,即使约定了加密方式,但是第一次传输的时候还是明文;鉴于此,HTTPS使用的是非对称加密,为秘钥的传输外层再做一层保护,非对称加密的一组秘钥对中,包含一个公钥和一个私钥。明文既可以用公钥加密,用私钥解密;也可以用私钥加密,用公钥解密。

  • HTTPS 协议需要到 CA 申请证书;
  • HTTP 是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议;
  • HTTP 和 HTTPS 使用的是完全不同的连接方式,端口也不一样。前者是 80,后者是 443;
  • HTTP 的连接是无状态的,HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 更安全。

        总的来说:HTTPS 目前是最流行的 HTTP 安全形式。使用 HTTPS 时,所有的 HTTP 请求和响应数据在发送到网络之前,都要进行加密。

        HTTPS 在 HTTP 下面提供了一个传输级的密码安全层: SSL 和 TLS。

HTTPS解决的问题是什么?

        答:信任主机的问题

        采用https的服务器必须从CA (Certificate Authority)申请一个用于证明服务器用途类型的证书。该证书只有用于对应的服务器的时候,客户端才信任此主机。所以目前所有的银行系统网站,关键部分应用都是https 的。客户通过信任该证书,从而信任了该主机。其实这样做效率很低,但是银行更侧重安全。这一点对我们没有任何异议,我们的服务器,采用的证书不管是自己发布的还是从公众的地方发布的,其客户端都是自己人,所以我们也就肯定信任该服务器。

        通讯过程中的数据的泄密和被篡改

        1. 一般意义上的https,就是服务器有一个证书。

                a) 主要目的是保证服务器就是他声称的服务器,这个跟第一点一样。

                b)服务端和客户端之间的所有通讯,都是加密的。

                i. 具体讲,是客户端产生一个对称的密钥,通过服务器的证书来交换密钥,即一般意义上的握手过程。

                ii. 接下来所有的信息往来就都是加密的。第三方即使截获,也没有任何意义,因为他没有密钥,当然篡改也就没有什么意义了。

        2. 少许对客户端有要求的情况下,会要求客户端也必须有一个证书。

                a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码,还有一个CA 认证过的身份。因为个人证书一般来说是别人无法模拟的,所以这样能够更深的确认自己的身份。

                b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘(即U盾)作为一个备份的载体。

SSL 与 TLS 概述

        SSL(Secure Socket Layer)即,位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL 通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。

SSL 协议可分为两层:

  • SSL 记录协议(SSL Record Protocol):它建立在可靠的传输协议(如 TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
  • SSL 握手协议(SSL Handshake Protocol):它建立在 SSL 记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

        TLS:安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。TLS 记录协议用于封装各种高层协议。作为这种封装协议之一的握手协议允许服务器与客户机在应用程序协议传输和接收其第一个数据字节前彼此之间相互认证,协商加密算法和加密密钥。该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)

        SSL/TLS 协议为了解决 HTTP 协议的缺点,希望达到:

  • 所有信息都是加密传播,第三方无法被窃听。
  • 具有校验机制,一旦被篡改,通信双方立刻会发现。
  • 配备身份证书,方式身份被冒充。

        SSL 是一个二进制协议,与 HTTP 完全不同,其流量是承载在另一个端口上的(通常是 443),如果 SSL 和 HTTP 的流量都从 80 端口到达,大部分 web 服务器会将二进制 SSL 流量理解为错误的 HTTP 并关闭连接。

SSL证书

        SSL证书是一种数字证书,可以由组织或个人购买,并允许Web服务器和浏览器之间的安全连接。它通过将加密密钥绑定到组织的详细信息来做到这一点。

        证书包含有关证书持有者的姓名、证书序列号和到期日期、证书持有者的公钥副本以及证书颁发机构的数字签名等信息。这会对网站进行身份验证,证明它确实是它声称的网站,而不是冒充该网站的黑客。

        在服务器向客户端发送公钥这一过程中,客户端可能会收到黑客假冒服务器发送的假的公钥。为了安全考虑,就需要用到 SSL 证书了。在通信时,服务器将证书发送给客户端,客户端会对证书的真伪进行校验,保证了安全。

        从本质上讲,它会验证该站点是否如其所说。

SSL 与 TLS 二者之间关系

        TLS 是 SSL3.0 的后续版本。TLS 与 SSL3.0 之间存在着显著的差别,主要是它们所支持的加密算法不同,所以 TLS 与 SSL3.0 不能互操作。

        SSL 是 Netscape 开发的专门用户保护 Web 通讯的,目前版本为 3.0。最新版本的 TLS 是 IETF(Internet Engineering Task Force,Internet 工程任务组)制定的一种新的协议。最新版本的 TLS1.0,它建立在 SSL3.0 协议规范之上,是 SSL3.0 的后续版本。两者差别极小,可以理解为 SSL3.1。

通过证书防止中间人攻击

        中间人获取信息后,模拟客户端和服务器,并使用伪造的服务器证书发送给客户端的情况,是一种常见的中间人攻击手法。

        为了避免这种情况,SSL/TLS 协议和浏览器等客户端采取了多种措施:

证书链验证
        客户端会验证服务器证书是否由受信任的证书颁发机构(CA)签署。证书链验证过程如下:
服务器提供的证书会包括一个完整的证书链,根证书在客户端的受信任证书库中。
客户端验证从服务器证书到根证书的整个链条。如果任意一个证书不匹配或无效,连接将被终止。


证书透明度(Certificate Transparency, CT)
        这是一个公开的日志系统,所有颁发的证书都会被记录在透明日志中。客户端可以检查收到的证书是否在这些日志中,并验证其合法性。通过这种方式,可以防止恶意CA颁发伪造的证书。

在线证书状态协议(Online Certificate Status Protocol, OCSP)
        OCSP用于检查证书是否被吊销。客户端在连接服务器时,会请求OCSP响应,确认证书仍然有效。如果证书被吊销,客户端将拒绝连接。

HTTP严格传输安全(HTTP Strict Transport Security, HSTS)
        HSTS允许服务器告知浏览器只能通过HTTPS连接,并拒绝所有HTTP连接。这可以防止降级攻击,中间人无法通过强制降级到HTTP来进行中间人攻击。

证书钉扎(Certificate Pinning)
        证书钉扎将特定服务器的证书或公钥绑定到客户端,确保只有特定的证书或公钥可以用于该服务器。即使中间人使用伪造的证书,也无法通过验证。

域名系统安全扩展(DNSSEC)
        DNSSEC通过对DNS数据进行签名,确保DNS响应的真实性和完整性,防止中间人篡改DNS记录并进行流量劫持。

双因素认证(2FA)
        即使在建立安全连接后,中间人成功截获了会话,双因素认证提供了额外的安全层,防止未经授权的访问

HTTPS如何加密数据

        对安全或密码学基础有了解的同学,应该知道常见的加密手段。一般来说,加密分为对称加密、非对称加密(也叫公开密钥加密)。

        1.客户端浏览器和服务器,通过三次握手,创建TCP链接。             

        2.浏览器请求https链接,服务端返回证书公钥。

        3.浏览器产生随机数[key1],作为后面传输数据时的对称加密密钥,并用证书公钥非对称加密随机数传给服务器。(上图中234三步所示)

        4.服务器收到随机数[key1]密文,用证书私钥非对称解密,同时服务器将解密到的随机数[key

1]作为后面传输数据时的对称加密密钥[key1],[key1]保存在服务端,同时服务端产生一个随机数random2,服务端用[key1]对random2进行对称加密,加密后的密文和明文返回给浏览器。

        5.浏览器收到密文,用本地的密钥[key1],进行对称解密,解密到的明文和服务端传过来的明文比对,一致,则说明,身份验证完成。后面即可用本地的密钥[key1]进行数据的对称加密和解密。

        6.SSL/TLS的4次握手完成,即可进行https通信。

        7.浏览器将请求数据用本地的密钥[key1]进行对称加密,发给服务器。

        8.服务器收到浏览器的加密请求,用本地的密钥[key1]进行对称解密,同时将响应也用本地的密钥[key1]进行对称加密,发给浏览器。

        9.浏览器收到服务器的加密响应,用本地的密钥[key1]进行对称解密,然后完成浏览器的数据渲染展示。

        10.https通信结束,浏览器发起TCP4次握手断开TCP链接。

HTTPS 下浏览器访问一个网站的全过程

        https的整个通信过程可以分为两大类:证书验证和数据传输阶段。数据传输阶段又分为非对称加密和对称加密两个阶段。

img

        具体流程如下:

  1. 首先客户端请求 https 网址,然后连接到 Server 的 443 端口(https 默认端口)。
  2. 采用 https 协议的服务器必须要有一套数字 CA 证书。颁发证书的同时会产生一个私钥和公钥。私钥由服务端自己保存,不可泄漏。公钥则附加在证书中,可以公开。证书本身附带一个电子签名,可以用来验证证书的完整性和真实性,可以防止证书被篡改。
  3. 服务器响应客户端请求,将证书传递给客户端。证书包含公钥和大量其他的信息,比如证书颁发机构信息、公司信息和证书有效期等。
  4. 客户端解析证书并对其进行验证,如果证书不是可信的机构颁布,或者证书的域名与实际域名不一致,或证书已经过期,就会向访问者显示一个警告。如果证书没有问题,客户端就会从服务器证书中取出服务器的公钥A,并生成一个随机码KEY,并使用公钥对其进行加密。
  5. 客户端会把加密后的随机码KEY发送给服务器,作为后面对称加密的密钥。
  6. 服务器在收到随机码KEY之后会使用私钥B将其解密。经过以上这些步骤,客户端和服务器终于建立了安全的连接,接下来可以使用对称加密进行通信了。
  7. 服务器使用密钥(随机码KEY)对数据进行对称加密并发送给客户端,客户端使用相同的密钥解密数据。
  8. 双方使用对称加密传输所有的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3226986.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

什么是光储充一体化? 光储充一体化有什么优势?

大部分省份划定配储的比例不低于10% “光储充一体化”政策文件:国家层面政策名称 政策要点 发布时间 发布单位 结合实际建设光伏发电、储能、充换电一体化的充电基础设施。中央财政将安排奖励资金支持试点县开展试点工作,示范期内,每年均达到最高目标的试…

【教程】Hexo 部署到 Github Page 后,自定义域名失效的问题

目录 前言&问题描述解决方案细节 前言&问题描述 近期给 Github Page 上托管的静态网站映射了自定义域名(aiproducthome.top),之后发现每次更新并部署 hexo 到 Github Page (hexo d)后就会出现自定义域名失效的…

【linux】 sudo apt update报错——‘由于没有公钥,无法验证下列签名: NO_PUBKEY 3B4FE6ACC0B21F32’

【linux】 sudo apt update报错——‘由于没有公钥,无法验证下列签名: NO_PUBKEY 3B4FE6ACC0B21F32’ 在运行sudo apt update时遇到报错,由于没有公钥,无法验证下列签名: NO_PUBKEY 3B4FE6ACC0B21F32 解决方法&#x…

印刷企业如何判断数字工厂管理系统的实施周期

在数字化转型的浪潮中,印刷企业正积极拥抱新技术以提升生产效率、优化成本结构并增强市场竞争力。数字工厂管理系统的引入,作为这一转型的关键步骤,不仅能够实现生产流程的自动化、智能化监控,还能显著提升数据分析能力和决策效率…

【C语言】【排序算法】----- 归并排序

由于最近要考试,好久没有发博客了,非常抱歉大家对我的支持。之后我会不断更新博客,继续创作出高质量的文章,希望能帮到大家! 文章目录 一、归并排序基本思想二、递归实现三、非递归实现四、效率分析 一、归并排序基本…

LlamaFactory可视化微调大模型 - 参数详解

LlamaFactory 前言 LLaMA Factory 是一个用于微调大型语言模型的强大工具,特别是针对 LLaMA 系列模型。 可以适应不同的模型架构和大小。 支持多种微调技术,如全参数微调、LoRA( Low-Rank Adaptation )、QLoRA( Quantized LoRA )等。 还给我们提供了简单实用的命令行…

汉初三杰韩信,是不是颍川人

再重复一次,此韩信非彼韩信,说的是汉初三杰淮阴侯韩信,不是韩王信。 他俩的共同之处还真多,同名同姓,都被封王,八大异姓王韩姓占了两位。而且,结局也一样,都因反判罪被朝廷处死。这…

springboot篮球馆管理系统-计算机毕业设计源码21945

目 录 摘要 1 绪论 1.1选题背景 1.2研究意义 1.3论文结构与章节安排 2 篮球馆管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例分析 2.4 …

NodeJS小饰品销售管理系统-计算机毕业设计源码21597

摘 要 在当今的数字化时代,电子商务已经成为了商业领域中不可或缺的一部分。随着消费者对于购物体验的要求越来越高,一个高效、便捷、用户友好的小饰品销售管理系统显得尤为重要。 本系统旨在利用 JavaScript 技术,设计并实现一个功能强大的小…

越南语是一门什么样的语言?如何学好越南语?

越南语是一种南亚语系越芒语族的语言,具有丰富的汉语借词,尤其在抽象概念的表达上,汉越词汇占有很大比例。作为一种声调语言,越南语拥有六个声调,这使得其发音具有音乐性和节奏感。它是一种孤立语,依赖于语…

强化学习实战2:动手写迷宫环境

迷宫环境介绍与创建 迷宫环境图示如下: 如图所示,其为一个 三乘三 的网格世界,我们要让 agent 从 S0 采取策略出发,然后走到 S8,图中红线部分表示障碍不能逾越,其中 S1 和 S4 之间有一个障碍,S…

换新启航环游浪漫新篇章

✨🎉【焕新启航,环游浪漫新篇章 —— 《焕新环游传》盛大开播】🎉✨在时光的温柔转角,一场前所未有的梦幻之旅悄然拉开序幕!🌟《焕新环游传》—— 这不仅仅是一部剧集的开播,更是对过往角色遗憾…

Springboot 设置个性化banner

在 Spring Boot 中自定义 banner 的方法有几种,可以通过以下步骤来实现: 1、使用文本文件作为 banner 在 src/main/resources 目录下创建一个名为 banner.txt 的文件。 编辑这个文件,输入想要显示的文本。确保文本中包含换行符和空格…

Vue 项目中 history 路由模式的使用

在最近帮客户开发的一个项目中,由于项目的特殊性,需要用到 Vue 中的 history路由模式。该模式使用时会涉及到“上传白屏”和“刷新 404 问题”。在帮助客户解决这两个问题的过程中,总结问题的解决方案并记录下来,希望能够保留这篇…

将格内多行文字展开成多格

表格的A列是分类,B列由多行文字组成,即分隔符是换行符。 AB1Account NumberInteraction21Jan 1,2023 - Hello.32Jan 2, 2023 - Good morning. Jan 3, 2023 - Good night. Jan 4, 20 Jan 5, 2023 - Good night. Jan 6, 2023 - Good afternoon.43Jan 1,20…

中霖教育:经济师的十个专业类别怎么选?

经济师一共包含十个专业类别,分别是工商管理、农业经济、财政税收、金融、保险、人力资源管理、旅游经济、运输经济、建筑与房地产经济、知识产权。 经济师选择报考专业时有哪些建议? 1、职业规划是选择专业的首要考虑点。未来的职业发展途径应与所选专业紧密相连…

wifi模组Ai-M62-32S的IO映射和UDP透传测试

wifi模组Ai-M62-32S的IO映射和UDP透传测试 基本IO 映射配网示例开启UDP透传示例复位AT查询wifi是否在线配置DHCP静态IP连接wifi连接UDP开启透传 基本IO 映射 对于wifi模组Ai-62-32S来说其模组 IO 引脚(从模组左上角逆时针排序,引脚序号从 1 开始&#x…

python+selenium-UI自动框架之[优化]元素查找和BasePage页面

痛点:在页面查找元素的时候会遇到找不到或者其他无法处理某个字段的情况,又或者想要在输出的log或者report里面显示这个字段名称,这时候加上字段名称就很重要! [3]pythonselenium - UI自动框架之封装查找元素https://mp.csdn.net…

前端如何去看蓝湖

首先加入团队,在内容中我们可以看到点击图片,右边出现的图 包含了像素甚至有代码,我们可以参考这个代码。 那么在使用之前我们需要调整好像素,例如我们的像素宽为375,不用去管高,然后这个宽度我们可以去自…

camera-qsc-crosstalk校准数据XTALK回写

问题背景 手机越做越紧凑,需要模组和芯片尺寸越做越小,在尺寸一定的基础上,高像素和大像素,对于手机摄像头来说,一直是一对矛盾的存在。 高像素:带来高分辨率画质大像素:带来暗态下高感光度和…