HTTPS为什么就安全了?或者说要安全我们要做到什么?

news2024/9/29 5:35:16

目录

一 安全概念

二 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/339306.html

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

相关文章

【C/C++基础练习题】简单函数练习题

🍉内容专栏:【C/C要打好基础啊】 🍉本文内容:简单函数使用练习题(复习之前写过的实验报告) 🍉本文作者:Melon西西 🍉发布时间 :2023.2.11 目录 1.给定某个年…

右键菜单管理 - Win系统

右键菜单管理 - Win系统前言软件工具管理右键菜单360右键管理右键管家前言 Windows系统可以借助软件工具对右键菜单进行管理,可对指定的右键菜单进行删除和恢复。下面以Win10系统为例介绍管理方法。 注意:使用本文提及的工具将某软件的右键菜单删除后&…

电子货架标签多种固定方式

2.1寸和2.9寸电子价格标签多种固定方式: 1、桌面支架,放置在桌面或是货架上,用于桌面产品的价格或是信息显示 2、粘贴架,方便用于墙面桌面等应用 3、半透明支架,用于货架上的商品吊挂显示价格信息 4、轨道架&#xff…

1489车厢调度(train)(栈)

目录 题目描述 解题思路: 代码部分: 题目描述 有一个火车站,铁路如图所示,每辆火车从A驶入,再从B方向驶出,同时它的车厢可以重新组合。假设从A方向驶来的火车有n节(n≤1000)&…

使用动态参数构建CUDA图

文章目录使用动态参数构建CUDA图使用显式 API 调用构建 CUDA 图使用流捕获构建 CUDA 图组合方法执行结果总结使用动态参数构建CUDA图 自从在 CUDA 10 以来,CUDA Graphs 已被用于各种应用程序。 上图将一组 CUDA 内核和其他 CUDA 操作组合在一起,并使用指…

shell编程之sed

文章目录八、shell编程之sed8.1 工作原理8.2 sed基本语法8.3 模式空间中的编辑操作8.3.1 地址定界8.3.2 常用编辑命令8.4 sed扩展八、shell编程之sed 8.1 工作原理 sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用&…

图----无向图

1.定义 图的定义:图是由一组顶点和一组能够将两个顶点相连的边组成 边:edge 顶点:vertex 连通图:如果从任意一个顶点都存在一条路径到达另外一个任意顶点,我们称这幅图是连通图。 非连通图:由若干连通的…

【Python】tkinter messagebox练习笔记

我一好友在朋友圈看到人家用代码花式秀恩爱,让我也做一个,我就用我学习半年python的功力,做了这一个东西。🙏窗口主页面(图一)为了让我这个盆友有颜面,特意做了一个问答问他帅不帅,以…

Active Directory 02 - Windows Kerberos Authentication(Kerberos 协议鉴权)

写在最前 如果你是信息安全爱好者,如果你想考一些证书来提升自己的能力,那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里: https://discord.gg/9XvvuFq9Wb我会提供备考过程中尽可能多的帮助,并分享学习和实践过程…

从0到1一步一步玩转openEuler--11 openEuler基础配置-设置磁盘调度算法

11 openEuler基础配置-设置磁盘调度算法 文章目录11 openEuler基础配置-设置磁盘调度算法11.1 设置磁盘调度算法11.1.1 临时修改调度策略11.1.2 永久设置调度策略11.1 设置磁盘调度算法 本节介绍如何设置磁盘调度算法。 11.1.1 临时修改调度策略 例如将所有IO调度算法修改为…

js逆向-某头条_signature参数

前言 头条的加密参数_signature其实可以通过搜索来直接定位到关键位置,我们换种定位的方法 定位 先查看下堆栈,直接在第一个XMLHttpRequest.send的位置下上断点,然后下拉触发断点 这个位置还有其他请求,这里只看/api/pc/list…

2023 AIME 答案与解析 - 第二期(完结)

原题目 Find the number of cubic polynomials where and are integers in such that there is a unique integer with 绿树教育中心独家解析 是一个有两个整数根的三次方程,因此它有三个整数根。所以, 或 ,其中 。 「Case 1」 ,则…

关于spring bean的生命周期的个人理解(根据官方文档学习)

首先说一下Servlet的生命周期:实例化,初始init,接受service,销毁destroy; spring上下文中的Bean 生命周期也是类似,如下: (1)实例化Bean 对于Bean Factory容器&#xf…

elasticsearch更新和删除

文档更新文档的更新经历三个步骤,检索、修改、重新索引部分更新在原有文档已经存在的情况下,可以对原有的文档部分字段更新,使用POST请求,发送到/_update如果文档是不存在的,更新操作是失败的存在则更新,不…

Qt C++ 自定义仪表盘控件02

简介仪表盘是工控领域不可缺少的一类软件UI元素,通常出现在各类电子看板软件上,以及一些高级的上位机软件界面上,目的是将繁杂的数据转化为可视化的图表能大幅提高后台管理效率。本文分享了几个经典常用的仪表盘控件,在项目中可以…

利用升序定时器链表处理非活动连接

参考自游双《Linux高性能服务器编程》 背景 服务器同常需要定期处理非活动连接:给客户发一个重连请求,或关闭该连接,或者其他。我们可以通过使用升序定时器链表处理非活动连接,下面的代码利用alarm函数周期性的触发SIGALRM信号&a…

半人半妖时代来啦

未来是半人半妖时代!!! 碳基生命与硅基生命结合 趣讲大白话:人和机器结合是大趋势 *********** 人工智能就是宗~教 科技宗~教的一支最强势的教派 日常使用智能机器的人就是信众 维护机器的人就是牧师 创造这…

【mock】手把手带你用mock写自定义接口+mock常用语法

mock自定义接口完整流程 官网语法规范:https://github.com/nuysoft/Mock/wiki/Syntax-Specification 首先: 要有一个项目,我这里是vue3项目,以下从vue3项目搭建开始,已搭建好的请直接看2 1.空目录下新建vue3项目 运行创建项目命令: 在bash中:(文件路径处输入cm…

【计组】内存和总线--《深入浅出计算机组成原理》(十)

课程链接:深入浅出计算机组成原理_组成原理_计算机基础-极客时间 一、虚拟内存和内存保护 日常使用的操作系统下,程序不能直接访问物理内存。内存需要被分成固定大小的页(Page),再通过虚拟内存地址(Virtu…

卡通形象人物2 写代码-睡觉 丝滑如德芙

目录 本次实现效果 目录结构 index static/css/style.css static/js/script.js 结语: 前期回顾 【 css动画 】—— 把你喜欢css动画嵌入到浏览器中_0.活在风浪里的博客-CSDN博客常用酷炫动画999合集,代码直接复制可用,总用你想找的…