HTTPS为什么就安全了?我们做了什么?

news2025/1/10 3:27:26

目录

一 安全概念

二 HTTPS的安全措施

三 总结


一 安全概念

网络安全是一个比较笼统的概念。我们说网络安全的时候,往往会包含很多安全问题,包括网络设备层面、通信过程、数据本身等多方面引入的安全问题。比如设备被有意无意的破坏,链路被监听,数据中夹带病毒,各种漏洞缺陷带来的潜在危险,这些都属于网络安全的范畴。这里,我们所述的网络安全,主要指通信过程的安全。

以经典的Bob 与Alice 通信为例,影响网络安全的典型情景如下图所示(图片来自

Henric Johnson

Blekinge Institute of Technology, Sweden

www.its.bth.se/staff/hjo/

henric.johnson@bth.se)

上图中总结了安全攻击的四种形式:终止、窃听、篡改、伪造。下面我们来看看这几个问题到底是什么意思。

窃听:涉及信息泄露,被第三方监听和窃取。

篡改:信息泄露就可能存在篡改。第三方获取信息后,修改后再发给通信的双方,可能干扰通信双方正常的通信,甚至对通信双方造成重大损失。

伪造:伪造和篡改属于一类问题。

冒充:冒充通信的一方,与另一方进行通信。造成类似篡改的后果。

重放(重用):重放通信过程中的数据,以便获取有价值的信息。

抵赖:除了正常的通信外,还需要有认证的价值,避免通信一方否认做出的一些授权和操作。

终止(拒绝服务):干扰正常通信流程,造成通信服务不可用,从而达到破坏通信的目的。

这里我们对上述问题做了简单的扩展。链路层的安全问题,主要就涉及上面几个方面。总的来讲,终止和拒绝服务涉及服务可用性的问题,窃听涉及数据保密性的问题,篡改涉及数据完整性的问题,伪造涉及数据真实性的问题。

网络安全的目标,最终是在上述几个安全问题方面,都获得合适的解决方案。如下图(来源同上)

最终达到:实体可信赖,链路安全有保障。

二 HTTPS的安全措施

好了,有了上面的基础,我们来看看HTTPS到底解决了什么问题。

HTTPS的交互过程如下图:

为了方便理解,我们倒推来看。

HTTPS的交互过程,最终是获取到一个对称密钥,完成对交互数据的加密。这样,整个过程,数据是加密的,从而保证了数据的机密性。即使被第三方窃听了数据,也因为不能解密数据,从而失去窃听的意义。

这就引入了第二个问题:密钥如何安全的交换。如果通过明文传递密钥,那么一旦被人截获了握手过程,安全性也无从谈起。所以,密钥需要加密后交换。

这就引入了第三个问题:先有鸡还是先有蛋的问题。密钥需要加密传输,加密又需要密钥,如此出现了循环依赖的问题。这个问题该如何解决?在HTTPS中,是通过证书和非对称加密实现对称密钥交换的。简单来讲,通过发布证书,公布公钥。使用公钥加密私有信息,而公钥加密的数据,只能通过私钥来解密,这样就实现了信息的安全传递。

这就引入了第四个问题:为什么不直接用公钥和私钥完成数据传递,而需要生成一个对称密钥来做这件事呢?这是因为对称加解密的速度远远快于非对称加密。数据传输阶段,信息量大,用对称加密可以节省时间。握手阶段,信息量少,可以用非对称加密完成必要信息的安全交互。

这就引入了第五个问题:为什么证书就能保证身份和密钥的正确性?这是通过两点来实现的。一点是,非对称加密,公钥加密的数据只能通过私钥解密,私钥加密的数据只能通过公钥解密;第二点,证书是预先公知的信任机构颁发的,也就是我们常听说的证书链。这样,证书持有者可以在证书中附加一段密文,这段密文是由证书持有者通过私钥加密的。证书持有者要严格保护好其私钥,如果泄漏,上面整个认证系统的安全性就无从谈起。因为别人无从知道证书持有者的私钥,如此一来,只要通过公钥解密这段密文,跟公示的明文进行对比,如果二者一致,那就可以说明证书的确是由持有者发布的,是可信的。这是整个信任系统的基础和前提。

反过来,我们用通俗的语言来梳理下上面的过程。就以银行交易为例吧。

假设场景为小明要通过网银转账。

小明的电脑浏览器首先通过银行的服务地址访问银行系统,准备进行转账交易业务。

银行系统收到连接请求后,就告诉小明电脑浏览器,我是银行,要进行安全连接建立。然后将自己的证书发给小明以验明正身。

小明电脑浏览器收到证书后,通过前面所述的方法,检验证书是否是真实有效的。如果不是,则拒绝连接。否则,将自己的证书也交给银行系统,以验明正身。浏览器早在安装时就内置了信任机构的信息,银行的证书是通过信任机构颁发的,自然也是可信的。

完成后,对通信双方来讲,银行确实是真的,客户端也是一个真实的客户端,而非第三方篡改或者伪造的客户端。

验身后,银行系统和客户端再协商一个对称密钥。客户端说就用xxx做本次交易的加密密钥吧。银行说,好的,就用xxx。这个过程传输的数据是通过各自的私钥加密的,对方可以使用自己证书中公告的公钥来解密。

上面的过程完成后,客户端和银行终于建立了信任关系。之后,客户端就可以通过加密的办法,将自己的账号密码等放心的交给银行,银行验证后,确定客户端确实是自己的用户,可以响应用户的合法请求。

基于双方的信任,小明通过银行系统完成了转账操作。

当然,上面我们只是介绍了主要过程和关键信息点。实际交互过程还有许多细节需要考虑,这部分大家就可以去看协议的具体内容来了解。

三 总结

最后,我们来看看上面的过程是否实现了最开始提到的四个安全需求:

  • 终止服务。对于安全通信来讲,握手过程中,如果有任何一项验证通过不了,则通信自动断开,这反而保证了交互的安全。
  • 窃取。不管是握手过程还是数据传输过程,关键信息都是加密的,自然不担心窃取。
  • 篡改。因为加密,所以篡改信息很容易被发现。
  • 伪造。同样因为加密,伪造数据也会被发现。

总的来看,整个过程的安全性主要是建立在加密的基础上的。服务端通过证书保证自己的身份可靠。客户端通过证书和业务密码(或者生物特征等)保证自己的身份。

通过上述措施,整个通信过程是否就如铜墙铁壁,牢不可破了呢?任何事物都有其弱点。上面系统最大的问题,就在私钥的安全性上。所以讲,如何才能破坏整个系统的安全性?答案就是窃取私钥。

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

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

相关文章

微搭低代码从入门到精通-03 创建模型应用

我们在进行低代码开发的时候,第一个需要建立的概念就是应用。不管你开发的是小程序还是管理系统,最终的承载物就是应用。 而我们创建应用是一共可以创建两种类型的应用,自定义应用和模型应用。自定义应用对应着一页多端,你开发一…

【Hello Linux】 Linux的权限以及Shell原理

作者:小萌新 专栏:Linux 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:介绍Linux的基础命令 Linux的权限以及Shell原理Shell的运行原理权限Linux中权限的概念如何切换用户如何提升当前操作的权限如何添加信任…

【C++:STL之栈和队列 | 模拟实现 | 优先级队列 】

目录 1. stack的介绍和使用 1.1 stack的介绍 1.2 stack的使用 2 栈的模拟实现 3 queue的介绍和使用 3.1 queue的介绍 3.2 queue的使用 4 queue的模拟实现 5 deque的介绍 5.1deque的原理介绍 5.2 deque的缺陷 5.3 为什么选择deque作为stack和queue的底层默认容器 6 p…

nodejs+vue+elementui在线求助系统vscode

目 录 摘 要 1 前 言 3 第1章 概述 4 1.1 研究背景 4 1.2 研究目的 4 1.3 研究内容 4 第二章 开发技术介绍 5 前端技术:nodejsvueelementui,视图层其实质就是vue页面,通过编写vue页面从而展示在浏览器中,编写完成的vue页面要能够和控制器类进…

加载sklearn covtype数据集出错 fetch_covtype() HTTPError: HTTP Error 403: Forbidden解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…

微搭低代码从入门到精通07-基础布局组件

低码开发不同于传统开发,传统开发我们通常需要编写前端代码和后端代码。前端代码由HTML、CSS和JavaScript组成,后端代码我们通常要用后端语言比如Java来编写接口。 低码开发的特点是可视化开发,在编辑器中通过组件的拖拽来完成页面的编制。如…

莽村李青都看得懂的Vue响应式原理

Vue响应式原理八股文序违背老祖宗的决定将Vue响应式原理公众于世响应式数据(Observe篇)dom更新(Wacther篇)依赖收集八股文序 开篇来一段大家都会背诵的八股文。 某面试官: 请你简要介绍一下Vue的响应式原理。 答&am…

leaflet 读取上传的wkt文件,转换为geojson文件(示例代码056)

第056个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中上传WKT文件,解析wtk文件并转换为geojson,并在地图上显示图片。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式本示例所用的a.wkt示例源代码(共139行)…

AirServer在哪下载?如何免费使用教程

苹果手机投屏到电脑mac是怎么弄?你知道多少?相信大家对苹果手机投屏到电脑mac能在电脑上操作不是很了解,下面就让coco玛奇朵带大家一起了解一下教程。AIrServer是一款ios投屏到mac的专用软件,可将iOS上的音频,视频&…

make的使用及Makefile万能模板

make的使用及Makefile万能模板前言为什么用makemake的使用Makefile万能模板前言 gcc 的编译,是将源码生成可执行程序。 例如: gcc hello.c -o hello源码到可执行程序需要四步处理 硬件——》机器语言——》汇编语言——》 高级语言 1)预处理…

【openGauss实战8】Schema的图文解读

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

Session与Cookie的区别(三)

中场休息 让我们先从比喻回到网络世界里,HTTP 是无状态的,所以每一个 Request 都是不相关的,就像是对小明来说每一位客人都是新的客人一样,他根本不知道谁是谁。 既然你没办法把他们关联,就代表状态这件事情也不存在。…

微搭低代码从入门到精通08-轮播容器

我们上一篇讲解了基础布局组件,讲解了普通容器和文本组件的用法,本篇我们继续介绍布局组件。 小程序中经常会有个功能是轮播图展示的功能,多张图片可以顺序进行切换。我们学习使用轮播容器的时候,先考虑切换的图片从哪来&#xf…

视频连载09 - 这个为生信学习和生信作图打造的开源R教程真香!!!

点击阅读原文跳转完整教案。1 思考题2 R基础2.1 R安装2.2 Rstudio基础2.2.1 Rstudio版本2.2.2 Rstudio安装2.2.3 Rstudio 使用2.3 R基本语法2.3.1 获取帮助文档,查看命令或函数的使用方法、事例或适用范围2.3.2 R中的变量及其初始化2.3.3 变量类型和转换2.3.4 R中矩…

Python-项目实战--贪吃蛇小游戏(1)

1.贪吃蛇游戏规则贪吃蛇游戏规则如下:1.1开始和结束贪吃蛇初始出现在游戏窗口的左上角位置,体长共有3节游戏过程中,一旦蛇头撞到了窗口的边缘或者身体的其他部位,游戏结束游戏过程中,点击游戏窗口的关闭按钮,或者按下ESC键可以直接退出游戏一…

Java高级-常用类-String、Date、Compare、Other

本篇讲解java常用类 String类 String:字符串,使用一对""引起来表示。 String类被声明为final的,不可被继承。 String实现了Serializable接口:表示字符串是支持序列化的。 ​ 实现了Comparable接口:表示String可以比较…

微搭低代码从入门到精通09-数据容器

我们已经用了两篇的篇幅介绍了微搭的布局组件,包括普通容器、文本、图片、轮播容器。 微搭中还有粗粒度的组件,今天介绍的数据容器就是粗粒度的组件。所谓粗粒度的组件,一般包括基础组件、样式还有默认的事件。数据容器一共包含三种分别是数…

vscode sftp从linux服务器下载文件至本地:No such file or dictionary【已解决】

在服务器跑完程序需要下载数据的时候报错: [warn] ENOENT: no such file or directory, open /home/LIST_2080Ti/.ssh/config load /home/LIST_2080Ti/.ssh/config failed 完整报错内容如下: [02-10 08:38:47] [info] config at /home/LIST_2080Ti {&q…

Arm-Linux子系统的互相Notify

前言: Linux下面不同的子系统一个个的组成了整个系统的运行环节,为了让这些子系统能够互相通讯,有一种叫做:notify chain(通知链)的东西。本篇看下。 概括 所谓通知链,有通知,就有执行的地方。比如A子系统通…

无题

(1)风国产化替代?全球化?新一代数字化技术升级?云化(公有云化)?业务线上化?产业互联整合?私有云原生技术可以支撑:国产化替代-新一代数字化技术升…