【Linux进阶之路】HTTPS = HTTP + S

文章目录

  • 一、概念铺垫
    • 1.Session ID
    • 2.明文与密文
    • 3.公钥与私钥
    • 4.HTTPS结构
  • 二、加密方式
    • 1. 对称加密
    • 2.非对称加密
    • 3.CA证书
  • 总结
  • 尾序

一、概念铺垫

1.Session ID

  • Session ID,即会话ID,用于标识客户端与服务端的唯一特定会话的标识符。
  • 会话,即客户端登录时与服务端进行交互的界面。
  • 客户端不止一个,服务端可能要对多个客户端提供服务,即产生多个会话,因此要描述相同的信息,用适合的数据结构进行管理,以便于降低管理成本。

回顾cookie的原理:

在这里插入图片描述
使用cookie时,可能会携带一些敏感信息,比如那些不为人知的隐私~,如果被人窃取到了,就跟小时候裤子被扒一样,那滋味 ~,同理来回在互联网中传输cookie,无异于在网络中来回裸奔。

如何保证我们的隐私数据安全呢?

这时session id就来了, 第一次浏览器发送cookie时,服务端初次收到会创建一个会话,并根据cookie信息使用加密算法生成一个唯一的session id,之后服务端将这个session id返回,之后再进行交互,这个session id 就 相当于 cookie,这样不用来回裸奔了,不过还是有一定的隐患,因为如果采用http的话,第一次的数据没有加密,还是可能被黑客窃取。

补充: cookie 转 session id的变化在状态行SetCookie: [字段]的字段有所体现。

  • 加密算法:哈希算法,如MD5,SHA等;UUID;随机数;组合算法等。

一般来说,session id 一般会保存在Cookie文件当中。

  • 比如登录CSDN,我们可以在一大堆Cookie文件中翻到session_id。
    在这里插入图片描述

  • 优点:具有唯一性,安全性,持久性,简便(易管理)性。

关于Session ID的疑问:

  1. 如果session id被窃取之后,是否可以替代原用户,访问服务器?
  • 答:会话ID是有被窃取的风险的,在被窃取之后服务端可通过检测ip地址,归属地等信息来进行检测是否是原先用户,进而保护用户数据的安全。
  1. 黑客是否可以通过攻击服务器来获取用户的隐私数据呢?
  • 答:可以,但要考虑攻破成本。如果黑客攻克服务器的成本远远大于用户数据产生的价值的话,那么黑客是不会做这种傻事的;况且一般来说服务端代表着一个公司,公司有相应的负责网络安全的人员,保护数据不被窃取。
  • 拓展:
  1. 数据摘要:通过哈希加密算法,比如MD5,将一整段数据(原始数据)转换成一个固定长度的摘要。一旦原始数据修改,那么数据摘要就会发生变化,一般用于检查数据的完整性。
  2. 数据指纹:一种通过某种方式来确定唯一性的标识符,数据摘要就是一种数据指纹,身份证号,防盗水印等亦可看作数据指纹。

2.明文与密文

  • 明文,指的是没有加密过的原始数据,获取之后可直接通过阅读的方式进行理解。一般来说HTTP协议采取的就是明文传输,因此不安全。
  • 密文,即将明文进行加密后的数据,不易通过直接阅读的方式进行理解。本篇所谈及的HTTPS采取的就是密文传输,因此极大提高了安全性。

举个例子,在清代有一场政变,史称 “辛酉政变”,此后慈禧太后开始掌握最高权力,开启了长达将近50年的统治。

听闻,慈禧在有一天收到奕䜣亲王的密信,然后解密出了关键信息:" 当心,肃顺,端华,戴恒。" ,这几个人都是当时最大的权臣,都是慈禧的死对头。后来这几个人的下场都很惨,肃顺被斩,端华和戴恒被赐死。树倒猢狲散,这几个人死了之后自然没有人敢跟慈禧做对,自然就坐稳了权力的王座。

3.公钥与私钥

  • 密钥,即用来加密和解密的钥匙。一般分为对称密钥,非对称密钥。
  • 对称密钥:也被称之为共享密钥。用于数据的加密与解密。
  • 非对称密钥:有一对密钥,即公钥和私钥。
    • 公钥,即公开的钥匙,其它人都可进行使用。通常使用公钥将数据加密,然后将数据在网络中进行传输。
    • 私钥,即私密的钥匙,只有持有者(一般为服务端)可进行使用。通常服务端通过私钥将数据解密,获取明文数据,然后提供对应的服务。

话接上个例子,奕䜣亲王在写完明文数据,即 " 当心,肃顺,端华,戴恒。" 之后,通过再写一段文字,加密写成一封密信,即可简单理解为使用公钥将数据加密,中间传递的过程没人能够读懂真正的意思,只有到了慈禧手中,然后用相应的方式进行解析,这里我们即可理解为使用私钥解密,之后就得到了明文数据。慈禧看完之后肯定心想:" 你们这几个小子,既然赶着上路,那我就送你们一程~"。

4.HTTPS结构

在这里插入图片描述

  • 加密层,一种传输控制层协议,即保证数据的安全,也就是对发送的数据进行加密,对接收的数据解密。因此所谓的HTTPS 其实就在HTTP的基础上多了加密层,即"HTTPS" = "HTTP" + "S"
  • 常见的加密协议:SSL/TLS,SSH,OpenVPN,PGP,S/MIME。
  • HTTPS采用SSL/TLS协议进行加密,由于SSL存在一些安全漏洞,因此现代一般采用TLS加密协议。TLS一般涉及密钥交换,数据完整性验证,身份验证等方式来保证数据安全。

二、加密方式

下面我们举一个臭名昭著的"运营商劫持事件",让读者理解加密的重要性。

  • 运营商:提供语音通话,数据传输,互联网访问等服务的企业或者组织,国内三大运营商 —— 移动,联通,电信。
  • 运营商劫持:一般是通过获取到你的网络请求,进而识别,检查,甚至篡改你的请求。一般涉及HTTP,DNS,SSL,BGP等劫持方式。
  • HTTP劫持:运营商劫持到客户的请求或者服务端的响应之后,可以在其中添加广告等信息从而达到盈利的目的。
  • DNS劫持:将请求或者响应中访问的域名进行解析,进而获取其中的IP地址,然后重定向到错误的IP地址,以达到流量控制等目的。
  • BGP劫持:伪造IP网段,欺骗路由器修改网段,将原本发送到A的数据,发送到B,进而达到控制流量发送的目的。
  • TSL劫持:通过HTTPS工具拦截用户的流量,进而解密,查看,甚至篡改流量中的数据内容。

可见,我们的数据并不总是安全的,以前发生过一个运营商(HTTP)劫持的例子:

在正常未被劫持时:
在这里插入图片描述

劫持后:

在这里插入图片描述

这里我们可以发现:网址,应用名称,安装包的大小都发生了变化,显然是运营商动了手脚。

原理:
在这里插入图片描述

  • 像这种事件,一般是没办法从明面上解决的,即让三大运营商不要劫持数据,成本太高。我们只能尽量避免让自己的数据不被劫持,如何不被劫持呢?对数据进行进行加密!让运营商识别不出你的数据。

类似,数据在网络中传输,并不总是安全的,因此避免"他人"的干扰就显得愈发的重要!在下文,博主会逐步介绍加密的几种方案,让数据从危险慢慢地走向安全。

1. 对称加密

计算机有一种运算,具有非常对称的性质,没错就是异或运算。比如,双方协商使用7作为密钥,加密方式为异或,我们要发送5这个明文数据,那么密文数据就为 5 ^ 7。服务端收到密文数据,使用密钥,异或计算进行解密,得到明文数据:5 ^ (7 ^ 7) = 5 ^ 0 = 5。

异或的运算法则:任何数与0异或得任何数。相同数进行异或得0。原理都来自于两数异或相同为0,相异为1。

那所谓的对称加密就与之类似:双方共同协商,共享一把密钥,然后之后用传输数据用此密钥将数据加密与解密,进而生成密文或明文。

具体过程:

  1. 密钥生成:双方事先协商密钥生成的方式,然后将同一把密钥进行共享。生成的方式有:随机数生成,加密函数等途径。共享的方式有:通信前一方向令一方发生密钥,协商生成密钥生成的方式,中间厂商给双方发送相同密钥等。
  2. 加密数据:发送方使用密钥对明文数据加密形成密文,然后通过网络发送到对应服务端。
  3. 解密数据:接收方使用密钥对数据进行解密,获取明文数据,进行处理。

图解原理:

说明:下图中的key为对称加密的密钥。

在这里插入图片描述

  • 优点:
    1. 对称加密方式的加密和解密的速度快,适合数据量大的数据进行加密与解密。
    2. 对称加密的实现方式较为简单,实现的成本较低。
  • 缺点:
    1. 密钥在共享的过程中,由于未被加密,也无法加密(套娃),因此容易被窃取。
    2. 密钥的管理较为困难,具体涉及生成,存储,更新,销毁等方面,保证安全是一大难题。

假如我是攻击者:
在这里插入图片描述

  • 说明:攻击者在通信的前后始终保持透明状态,即客户端和服务端都无法察觉。

2.非对称加密

所谓的非对称加密,其实就是采用两把钥匙,一把称为公钥,用于公开给发送端,用于对数据进行加密,形成密文;一把称为私钥只有接收端持有,一般用于对数据进行解密,获取明文。

  • 优点:公钥可以公开,避免了密钥在共享中被窃取的问题;只有私钥持有方才能进行解密,提高了数据传输的安全性。
  • 缺点:由于非对称加密算法的复杂度较高,因此加密和解密的效率很低,进而导致了通信的效率降低。

一般来说,只采取非对称加密有两种方式:

  1. 第一种,只有一方采取非对称加密。

说明:服务端和客户端不管哪一方都行,这里博主就用服务端使用非对称加密了。

具体步骤:

  1. 生成密钥:服务端采用相应的密钥生成方式,生成私钥和公钥。一般的生成方式有:RSA、DSA、ECC等。
  2. 公开公钥:服务端向发送请求的客户端发送公钥。一般的发送方式有:直接发送,通过安全通过或者协商发送,或者通过证书发送。
  3. 加密数据:客户端使用公钥加密数据,向服务端发送请求密文。服务端用私钥将数据进行加密,向客户端发送响应密文。
  4. 解密数据:客户端使用公钥将响应密文解密,服务端使用私钥将请求密文解密。
  • 图解:

说明:下图为非对称加密生成一对密钥,其中public_key为的公钥,private_key为密钥。

在这里插入图片描述
假如我是黑客:
在这里插入图片描述

  • 说明:没有密钥因此客户端发送的请求无法进行解密,截取公钥之后,可以对服务端用私钥加密的数据进行解密。

因此,这种存在服务端信息泄露的危险,如果是只有客户端一方采用非对称加密,那么客户端的请求就存在信息泄露的风险。

  1. 第二种,双方都采用非对称加密。
  • 图解:

说明:下图为非对称加密的两对密钥对,其中pc_key为客户端的公钥,sc_key为客户端的密钥;ps_key为服务端的公钥,sc_key为服务端的密钥。p(public),c(client),s(server),s(secret)。

在这里插入图片描述
假如我是一般的黑客:

在这里插入图片描述

  • 看似这是一堵密不透风的墙,那我偷梁换柱呢?

假如我是更高级一点的黑客:

在这里插入图片描述

  • 这通常被称之为中间人攻击。
  • 这就引出了一个问题:
  • 如何确定客户端收到的公钥是服务端发送的?这个问题先放一放,将在下文的证书部分进行解决。

由于非对称加密的复杂度很高,这种加密方式有一种更为致命的缺陷,那就是加密与解密时间的效率太低了,如果再被截取黑客中间还要进行加密和解密,消耗的时间就更长了,估计黑客都把等急了~,当然这是开玩笑的,这里说的时间慢是相比较与对称加密来说的。不过一般来说非对称加密方式:加密的时间比解密的时间短,加密在几微秒到几十毫秒不等,解密在几毫秒到几百毫秒不等。


先解决时间效率低的问题,下面引入对称加密与非对称加密结合的方式:
在这里插入图片描述

具体步骤:

  1. 只需在通信之前进行将公钥进行传输。
  2. 客户端收到公钥之后,用公钥将对称加密方式的密钥加密,然后发送给服务端,服务端用私钥解密获得非对称的密钥。
  3. 此后通信,只需要用对称加密的密钥进行通信即可。

因此,这种方式只在传输对称密钥时,可能会消耗一点时间,不过之后用的都是非对称的密钥进行的通信,大大加快了通信的效率。

上述的加密方式都有无法确定客户端收到的公钥是服务端发送的硬伤,因此黑客都可通过"中间人攻击"进行破解,下面我们引入一味"良药" —— 证书。

3.CA证书

CA, 全称Certificate Authority,即是负责发放和管理数字证书的权威机构。并作为受信任的第三方,承担公钥的合法性检验的责任。

那所谓的CA证书就是CA机构发放的证书,那这个证书的主要作用就是防止公钥在网络传输过程中被篡改,确保公钥的合法性

先来见一见证书基本有啥:
在这里插入图片描述

在浏览器设置中搜索证书,即可查看相应的证书的内容。

如何实现呢?

  1. 客户端,生成一对密钥,填写符号要求的CSR文件,里面含有发送给服务端的公钥,域名,国家,省份,公司名等认证信息。
  2. CA机构,接收客户端发来的CSR文件,并使用相关工具查看其中的信息,并对信息的有效性,合法性,状态等信息进行检查。如果检查无误,确认合法,CA机构就会生成数字证书,然后发给客户端。客户端之后会将证书发给服务端,目的是让服务器获取公钥。
  3. 服务端,接收客户端发来的证书,检测是否是CA机构颁发的证书,如果是保留客户端发来的公钥,如果不是就将其丢弃,或采取相应措施,比如联系相应的机构,对非法证书进行溯源并进行处理。

如果感兴趣,推荐一个免费生成CSR文件的网址: 点击进入

CA机构生成证书的具体过程:

  1. 利用已经确认合法的CSR文件中的信息,先形成对应数字证书的数据。
  2. 使用摘要算法,比如MD5,形成一段固定长度的数据摘要,从而确保数据的唯一性和完整性。
  3. CA机构使用私钥(仅持有者拥有),对数据摘要,再进行加密,从而形成数字签名,确保是CA机构的。
  4. 证书的数据与数字签名,共同形成独属于CA机构的数字证书。
  • 图解:
    在这里插入图片描述

服务端验证证书的具体过程:

  1. 使用在电脑出厂时,内置在操作系统的CA机构的公钥将证书中的数字签名解密得到数据摘要,设为x。
  2. 使用对应的数据摘要算法,将证书的数据(不包含数字签名),形成固定长度的数据摘要,设为y。
  3. 如果x == y,则说明数字证书是有效的,保留公钥,如果x != y,则说明证书非法,进行相应的处理。
  • 图解:
    在这里插入图片描述
  • 图解过程:

在这里插入图片描述

  • 图解完整过程:非对称加密 + 对称加密 + 证书认证

说明:C_s_key为CA机构的密钥,C_p_key为CA机构的公钥。

在这里插入图片描述

最后,我们再简单的讨论一下以上的加密方式"中间人攻击"的方式还行不行的通?

  1. 中间人使用的操作系统,肯定也内置了CA机构的公钥,那么有了公钥就可以对网络中的数字签名进行解密,因此解密可以获取到客户端的公钥,但是由于没有私钥,因此无法篡改与解析数据,进而形成新的数字签名,因此发送到服务端的证书,肯定是CA机构的。
  2. 因此"中间人攻击"在证书这个buff的加持下是走不通的,只会让中间人束手无策,无处遁形。

不过,这个世界有白就有黑,随着技术的发展,双方都在进行着军备竞赛,因此没有绝对的安全,需要我们辩证的看待"安全"。

总结

  1. 本篇我们先对 Session ID, 数据摘要,数据指纹,明文,密文,密钥,公钥,私钥,HTTPS结构进行了铺垫。
  2. 我们从加密方和破解方,由浅入深讨论了对称加密,非对称加密(两种方式),对称加密与非对称加密,证书学习了比较成熟的加密方法。
  • 希望这篇文章能对读者产生一定的帮助!

下篇彩蛋:可靠与不可靠,这是一个值得的思考的问题。

尾序

我是舜华,期待与你的下一次相遇!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

某鱼弹幕逆向

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018…

Delft3D建模、水动力模拟方法及在地表水环境影响评价中的技术应用

​任博士,长期从事地表水数值模拟研究与实践工作,具有资深的技术底蕴和专业背景。 1、掌握Delft3D的建模流程,包括基础数据的准备、计算网格的制作、模型的调试与率定、计算结果的处理等,熟悉软件的基本操作。 2、熟悉Delft3D网…

java---网络初始

一.局域网和广域网 随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。 网络互连:将多台计算机连接在一起,完成数据共享。数据共享本质是网…

开发反应式API

开发反应式API 开发反应式API1 使用SpringWebFlux1.1 Spring WebFlux 简介1.2 编写反应式控制器 2 定义函数式请求处理器3 测试反应式控制器3.1 测试 GET 请求3.2 测试 POST 请求3.3 使用实时服务器进行测试 4 反应式消费RESTAPI4.1 获取资源4.2 发送资源4.3 删除资源4.4 处理错…

基于springboot+vue实现养老服务管理系统项目【项目源码+论文说明】计算机毕业设计

基于springbootvue实现养老服务管理系统演示 摘要 医疗水平和生活水平的不断提高造就了我们现在稳定、发展的社会,带来受益的同时也加重了人口老龄化程度。随着人口老龄化程度的不断加深,越来越多的社会资源在对养老方面注入。那么面对如此快速发展的养…

Go微服务实战——服务的注册与获取(nacos做服务注册中心)

背景 随着访问量的逐渐增大,单体应用结构渐渐不满足需求,在微服务出现之后引用被拆分为一个个的服务,服务之间可以互相访问。初期服务之间的调用只要知道服务地址和端口即可,而服务会出现增减、故障、升级等变化导致端口和ip也变…

在OpenStack架构中,Controller节点的配置(基础)

虚拟机的安装 新建虚拟机,选择自定义 默认选择即可 操作系统的镜像稍后选择 客户及操作系统选择Linux,注意选择centos 7 64位 给虚拟机命名 处理器的配置建议1:2 内存大小选择建议为:4GB 网络连接选择为:NAT 默认即可…

蓝桥杯2022年第十三届省赛真题-灭鼠先锋

LLLV solution1 必输:只有一个格子 手算可以模拟出来~ solution2 OOOO状态下,谁先下谁必输 》问题转化为谁先下满第一排,谁必赢,可以非常容易的模拟出来

Vue.js+SpringBoot开发天沐瑜伽馆管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课程预约模块2.4 系统公告模块2.5 课程评价模块2.6 瑜伽器械模块 三、系统设计3.1 实体类设计3.1.1 瑜伽课程3.1.2 瑜伽课程预约3.1.3 系统公告3.1.4 瑜伽课程评价 3.2 数据库设计3.2.…

uniapp实现点击标签文本域中显示标签内容

先上一个效果图 实现的效果有: ①.点击标签时,标签改变颜色并处于可删除状态 ②.切换标签,文本域中出现标签的内容 ③.点击标签右上角的删除可删掉标签,同时清除文本域中标签的内容 ④.可输入内容,切换时不影响输入…

考研C语言复习进阶(5)

目录 1. 为什么使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3. 文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 4. 文件的顺序读写 ​编辑 ​编辑 4.1 对比一组函数: ​编辑 5. 文件的随机读写 5.1 fseek 5.2 ftell 5.3 rewind…

tomcat中把项目放在任意目录中的步骤

java web 项目由idea开发&#xff0c;路径如下图所示&#xff1a; 1.在tomcat安装目录conf\Catalina\localhost 里面&#xff0c;编写lesson1.xml文件内容如下&#xff1a; <Context path"/lesson1" docBase"C:\Users\信息技术系\Desktop\2024\学校工作\jav…

基于51单片机的微波炉温度控制器设计[proteus仿真]

基于51单片机的微波炉温度控制器设计[proteus仿真] 温度检测系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个基于51单片机的微波炉温度控制器设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文章 2&#xff…

【矩阵】240. 搜索二维矩阵 II【中等】

搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a;每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22…

C++:2024/3/12

作业1&#xff1a;试编程&#xff0c;封装一个类 要求&#xff1a;自己封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c; 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(…

如何打造知识管理平台,只需了解这几点

随着企业的发展&#xff0c;知识资源日益丰富和复杂&#xff0c;如果不加以有效管理和整合&#xff0c;这些知识很可能会被埋没或丢失。打造知识管理平台可以将这些知识资源进行统一存储和分类&#xff0c;便于员工查找和使用&#xff0c;从而充分发挥知识的价值。有很多工具可…

蓝桥杯每日一题:血色先锋队

今天浅浅复习巩固一下bfs 答案&#xff1a; #include<iostream> #include<algorithm> #include<cstring>using namespace std; typedef pair<int,int> PII;const int N510; int n,m,a,b; int dist[N][N]; PII q[N*N]; int hh0,tt-1;int dx[]{1,0,-1,…

2024年【安全员-A证】复审考试及安全员-A证模拟试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全员-A证复审考试参考答案及安全员-A证考试试题解析是安全生产模拟考试一点通题库老师及安全员-A证操作证已考过的学员汇总&#xff0c;相对有效帮助安全员-A证模拟试题学员顺利通过考试。 1、【多选题】《安全生产…

【深度学习笔记】9_6 目标检测数据集

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 9.6 目标检测数据集&#xff08;皮卡丘&#xff09; 在目标检测领域并没有类似MNIST或Fashion-MNIST那样的小数据集。为了快速测试模型…

Java项目:53 springboot校园管理系统的设计与实现014

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 1、关于校园管理系统的基本要求&#xff1a; &#xff08;1&#xff09;功能要求&#xff1a;可以管理首页、个人中心、院校管理、用户管理、单位类别…