HTTPS协议加密原理

目录

一、什么是HTTPS

 二、什么是加密/解密

三、为什么要加密

四、常见的加密方式

1.对称加密

2. 非对称加密

 五、HTTPS加密方式探讨

1.只使用对称加密

2.只使用非对称加密

3.非对称加密+对称加密 

4.非对称加密+对称加密+CA认证

六、总结


 一、什么是HTTPS

HTTP 协议:是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。

HTTPS 协议:可以理解为HTTP+SSL/TLS, 也就是在HTTP协议的基础下加入了 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。

SSL(安全套接字层):SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

TLS(传输层安全性协议):其前身安全套接字层(SSl)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。

 二、什么是加密/解密

加密就是将我们能一眼看明白并且很多人都能看懂的信息进行包装,变成很难理解的一段信息,即明文变成密文过程。

解密就是将已加密后的密文信息经过一系列的变换,还原为很容易理解的明文信息。

据记载,公元前400年,古希腊人就发明了置换密码;在第二次世界大战期间,德国军方启用了“恩尼格玛”密码机,所以密码学在社会发展中有着广泛的用途。在现代加密解密已经发展成⼀个独⽴的学科:密码学。而密码学的奠基⼈,也正是计算机科学的祖师爷之⼀, 艾伦·⻨席森·图灵

三、为什么要加密

因为http的内容是明文传输的,明文数据会经过中间代理服务器、路由器、wifi热点、通信服务运营商等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传输的信息且不被双方察觉,这就是中间人攻击。所以我们才需要对信息进行加密。

比如一个典型的"运营商劫持"案例:当我们通过非官网的途径,下载某个软件时,经常发生的就是下载完成后的软件与自己本要下载的是完全不同的两个。这是因为我们通过⽹络传输的任何的数据包都会经过运营商的⽹络设备(路由器,交换机等),那么运营商的⽹络设备就可以解析出你传输的数据内容,并进⾏篡改.点击"下载按钮",其实就是在给服务器发送了⼀个HTTP请求,获取到的HTTP响应其实就包含了该APP的下载链接.运营商劫持之后,就发现这个请求是要下载 A AA,那么就⾃动的把交给用户的响应给篡改成 BBB 的下载地址了。

四、常见的加密方式

1.对称加密

采⽤单钥密码系统的加密⽅法,同⼀个密钥可以同时⽤作信息的加密和解密,这种加密⽅法称为对称加密,也称为单密钥加密

  • 特征:加密和解密所⽤的密钥是相同的。
  • 常⻅对称加密算法:DES、3DES、AES、TDEA、Blowfish、RC2等。
  • 特点:算法公开、计算量⼩、加密速度快、加密效率⾼。
  • 对称加密其实就是通过同⼀个"密钥",把明⽂加密成密⽂,并且也能把密⽂解密成明⽂.

这种方式通俗一点来讲就好比一把钥匙和一道门,门作为信息,钥匙作为密钥,加密就是通过钥匙将门上锁,解密就是用钥匙把门打开。

⼀个简单的对称加密,按位异或
假设明⽂a=1234,密钥key=8888,则加密a^key得到的密⽂b为9834。然后针对密⽂9834再次进⾏运算b^key,得到的就是原来的明⽂1234。(对于字符串的对称加密也是同理,每⼀个字符都可以表示成⼀个数字)
当然,按位异或只是最简单的对称加密,HTTPS中肯定也不能是使⽤按位异或这种方式。

2. 非对称加密

需要两个密钥来进⾏加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。

  • 常⻅⾮对称加密算法:RSA,DSA,ECDSA
  • 特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,⽽使得加密解密速度没有对称加密解密的速度快。

⾮对称加密要⽤到两个密钥,⼀个叫做"公钥",⼀个叫做"私钥"。公钥和私钥是配对的,最⼤的缺点就是运算速度⾮常慢,⽐对称加密要慢很多。

使用方法:通过公钥对明⽂加密,变成密⽂,通过私钥对密⽂解密,变成明⽂。也可以反着⽤通过私钥对明⽂加密,变成密⽂通过公钥对密⽂解密,变成明⽂。
这种加密方式就好比一把锁、一把钥匙、一道门,其中门作为信息,锁作为公钥,钥匙作为密钥,锁是公开的,任何人都可以拿着这把锁把门锁上(加密),但是要把门打开,就只有使用这唯一的钥匙(解密)。

 五、HTTPS加密方式探讨

1.只使用对称加密

如果通信双⽅都各自持有同⼀个密钥X,且没有别⼈知道,这两⽅的通信安全当然是可以被保证的(除非密钥被破解)。

 但是在网络中,服务器与客户端需要建立连接之后才能进行通信,在首次建立连接时,怎样才能让双方都知道密钥,而又不能让其他人知道呢?

如果是服务器给客户端明文发送密钥,那么肯定很容易被劫持,但将密钥加密发送客户端肯定又看不懂。

如果统一规定服务器与客户端使用同一密钥,但是服务器与客户端的连接并不是一对一的,而是一对多的,那么这样密钥太扩散了,很容易就被黑客拿到了。

所以但使用对称加密是肯定不行。

2.只使用非对称加密

对于非对称加密,在服务器与客户端通信双方首次建立连接时,双方可以彼此交换自己的公钥,连接建立后,在给对方发送信息时,就可以使用对方的公钥进行加密,而要解密也只能对方使用自己私钥才能进行解密。

 如上方法看似很完美,但是要知道黑客的技术也是很厉害的。比如在客户端与服务器进行连接时,黑客将客户端发送给服务器的公钥C进行劫持,然后黑客把自己的公钥P发送给服务器,那么在后续服务器与客户端进行信息发送的过程中,服务器对信息进行加密的公钥不是客户端的,而是黑客的公钥P,那么服务器所发送的所有信息,黑客都可以通过自己的私钥P*进行解密查看,然后黑客再使用客户端公钥C再对信息进行加密发送给客户端,此时客户端也就能使用自己的私钥C*进行解密查看,再整个过程中客户端几乎是察觉不到信息发生了泄露。

又或是服务器先把公钥以明文方式传输给浏览器,之后浏览器向服务器传数据前都先用这个公钥加密好再传送,这条数据的安全似乎可以保障了!因为只有服务器有相应的私钥能解开公钥加密的数据。然而反过来由服务器到浏览器的这条路怎么保障安全?如果服务器用它的私钥加密数据传给浏览器,那么浏览器用公钥可以解密它,而这个公钥是一开始通过明文传输给浏览器的,若这个公钥被中间人劫持到了,那他也能用该公钥解密服务器传来的信息了。

所以只使用非对称加密也不安全

3.非对称加密+对称加密 

原理

客户端发起https请求,获取服务端公钥S,客户端在本地⽣成对称密钥C,通过公钥S加密,发送给服务器。由于中间的网络设备没有私钥,即使截获了数据,也⽆法还原出内部的原⽂,也就⽆法获取到对称密钥。服务器通过私钥S*解密,还原出客⼾端发送的对称密钥C。并且使⽤这个对称密钥加密给客户端返回的响应数据。

 漏洞

该方式也只能再服务器与客户端握手连接成功后才能保证信息的安全,如果黑客再服务器与客户端握手时进行劫持,那么就会出现与只使用非对称加密方式一样的漏洞。在服务器与发送公钥S给客户端时,黑客将公钥S替换为自己的公钥P,那么客户端接受公钥P后,再以此公钥加密对称密钥M给服务器时,黑客就能截获此密钥。所以再后续的信息传送的过程中,该密钥M已不能保证信息的安全了。

这种黑客攻击的方式也称为“中间人攻击(MITM)”。

4.非对称加密+对称加密+CA认证

 在探讨该方式前需要先几个概念:

a.数据摘要

  • 数据摘要(数字指纹):其基本原理是利⽤单向散列函数(Hash函数)对信息进⾏运算,⽣成⼀串固定⻓度的数字摘要。数字指纹并不是⼀种加密机制,但可以⽤来判断数据有没有被窜改。
  • 摘要常⻅算法:有MD5、SHA1、SHA256、SHA512等,算法把⽆限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率⾮常低)
  • 摘要特征:和加密算法的区别是,摘要严格意义不是加密,因为没有解密,只不过从摘要很难反推原信息,通常⽤来进⾏数据对⽐

b.数字签名

  • 摘要经过加密后就得到数字签名

 CA认证
服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端公钥的权威性。CA认证也就是相当于第三方,为我们提供一个辅助验证的功能。

当服务端申请CA证书的时候,CA机构会对该服务端进⾏审核,并专⻔为该⽹站形成数字签名,过程如下:
1. CA机构拥有⾮对称加密的私钥A和公钥A'
2. CA机构对服务端申请的证书明⽂数据进⾏hash,形成数据摘要
3. 然后对数据摘要⽤CA私钥A'加密,得到数字签名S
服务端申请的证书明⽂和数字签名S共同组成了数字证书,这样⼀份数字证书就可以颁发给服务端了。

加密原理

服务器需要先向CA机构申领一份数字证书,在客户端和服务器刚⼀建⽴连接的时候,服务器给客户端返回⼀个证书,证书包含了之前服务端的公钥,也包含了网站的身份信息。
当客户端获取到这个证书之后,会对证书进⾏校验(防止证书是伪造的)。

  • 判定证书的有效期是否过期
  • 判定证书的发布机构是否受信任(操作系统中已内置的受信任的证书发布机构).
  • 验证证书是否被篡改:从系统中拿到该CA机构的公钥,对签名解密,得到⼀个hash值(称为数据摘要),设为hash1.然后计算整个证书的hash值,设为hash2.对⽐hash1和hash2是否相等.如果相等,则说明证书是没有被篡改过的。

只有当客户端验证该证书不是伪造的后,客户端再使用证书上的公钥对对称密钥进行加密,然后再发送给服务器,服务器再用自己的私钥进行解密,就得到了对称密钥,后续服务器与客户端就使用该对称密钥进行通信。

 解答你的几个疑问:

1.中间⼈有没有可能篡改该证书?

答:中间⼈即使篡改了证书的明⽂,由于他没有CA机构的私钥,所以⽆法hash之后⽤私钥加密形成签名,那么也就没法办法对篡改后的证书形成匹配的签名如果强⾏篡改,客⼾端收到该证书后会发现明⽂和签名解密后的值不⼀致,则说明证书已被篡改,证书不可信,从⽽终⽌向服务器传输信息,防⽌信息泄露给中间⼈。
2.中间⼈可能整个掉包证书吗?

答:因为中间⼈没有CA私钥,所以⽆法制作假的证书,所以中间⼈只能向CA申请真证书,然后⽤⾃⼰申请的证书进⾏掉包这个确实能做到证书的整体掉包,但是别忘记,证书明⽂中包含了域名等服务端认证信息,如果整体掉包,客户端依旧能够识别出来。永远记住:中间⼈没有CA私钥,所以对任何证书都⽆法进⾏合法修改,包括⾃⼰的。
 

六、总结

对称加密虽然性能好但是有密钥泄漏的风险,非对称加密(2组公钥+2私钥双向传输)安全但性能低下,因此考虑用非对称加密来传输对称加密所需的密钥,然后进行对称加密,但是为了防止非对称过程产生的中间人攻击,我们就引入第三方辅助认证,需要对服务器公钥和服务器身份进行配对的数字认证,CA认证+非对称加密+对称加密的方式。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习,过拟合与欠拟合,正则化与交叉验证

目录 机器学习 过拟合与欠拟合 正则化与交叉验证 正则化 交叉验证 机器学习 的目的是使学到的模型不仅对已知数据而且对未知数据都能有很好的预测能力。 不同的机器学习方法会给出不同的模型。当损失函数给定时,基于损失函数的模型的训练误差(tra…

neo4jd3拓扑节点显示为节点标签(自定义节点显示)

需求描述:如下图所示,我的拓扑图中有需要不同类型的标签节点,我希望每个节点中显示的是节点的标签 在官方示例中,我们可以看到,节点里面是可以显示图标的,现在我们想将下面的图标换成我们自定义的内容 那…

4.18 TCP 和 UDP 可以使用同一个端口吗?

目录 TCP 和 UDP 可以同时绑定相同的端口吗? 多个 TCP 服务进程可以绑定同一个端口吗? 重启 TCP 服务进程时,为什么会有“Address in use”的报错信息? 重启 TCP 服务进程时,如何避免“Address in use”的报错信息…

MAVEN利器:一文带你了解IDEA中如何使用Maven

前言: 强大的构建工具——Maven。作为Java生态系统中的重要组成部分,Maven为开发人员提供了一种简单而高效的方式来构建、管理和发布Java项目。无论是小型项目还是大型企业级应用,Maven都能帮助开发人员轻松处理依赖管理、编译、测试和部署等…

最新CMS指纹识别技术

指纹识别 1.CMS简介 CMS(Content Management System,内容管理系统),又称整站系统或文章系统,用于网站内容管理。用户只需下载对应的CMS软件包,部署、搭建后就可以直接使用CMS。各CMS具有独特的…

【Linux】进程通信 — 信号(上篇)

文章目录 📖 前言1. 什么是信号1.1 认识信号:1.2 信号的产生:1.3 信号的异步:1.4 信号的处理: 2. 前后台进程3. 系统接口3.1 signal:3.1 - 1 不能被捕捉的信号 3.2 kill:3.2 - 1 killall 3.3 ra…

vue 简单实验 自定义组件 局部注册

1.概要 2.代码 <html> </html> <script src"https://unpkg.com/vuenext" rel"external nofollow" ></script> <body><div id"counter"><component-a></component-a></div> </body&g…

浅尝OpenResty

文章目录 1. 写在前面2. 下载安装openresty2.1 下载Openresty2.2 设置nginx启动 3. 嵌入lua脚本4. 实践5. 小结 1. 写在前面 当一个域名中衍生出多个服务的时候&#xff0c;如果想要保持对外服务始终是一个域名&#xff0c;则需要通过nginx反向代理来实现。如果在转发的时候需…

HyperMotion高度自动化云迁移至华为HCS8.1解决方案

项目背景 2020 年以来&#xff0c;金融证券已经成为信创落地最快的领域。2021 年证监会发布的《证券期货业科技发展十四五规划》中&#xff0c;将“加强信创规划与实施”作为证券行业重点建设任务之一。为了符合国家信创标准&#xff0c;某证券企业计划将网管系统、呼叫中心管…

sql server 、mysql CTE 公用表表达式

sql server 详细 mysql CTE CTE 是一个命名的临时结果集&#xff0c;作用范围是当前语句。CTE可以理解成一个可以复用的子查询&#xff0c;当然跟子查询还是有点区别的&#xff0c;CTE可以引用其他CTE&#xff0c;但子查询不能引用其它子查询。所以&#xff0c;开发中建议…

6、Spring_Junit与JdbcTemplate整合

Spring 整合 1.Spring 整合 Junit 1.1新建项目结构 1.2导入依赖 导入 junit 与 Spring 依赖 <!-- 添加 spring 依赖--> <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version…

es的索引管理

概念 &#xff08;1&#xff09;集群&#xff08;Cluster&#xff09;&#xff1a; ES可以作为一个独立的单个搜索服务器。不过&#xff0c;为了处理大型数据集&#xff0c;实现容错和高可用性&#xff0c;ES可以运行在许多互相合作的服务器上。这些服务器的集合称为集群。 &…

【Terraform学习】使用 Terraform 将 EC2 实例作为 Web 服务器启动(Terraform-AWS最佳实战学习)

使用 Terraform 将 EC2 实例作为 Web 服务器启动 实验步骤 前提条件 安装 Terraform&#xff1a; 地址 下载仓库代码模版 本实验代码位于 task_ec2 文件夹中。 变量文件 variables.tf 在上面的代码中&#xff0c;您将声明&#xff0c;aws_access_key&#xff0c;aws_secr…

wx.request配置服务器域名,只能包含英文大小写字母、数字,解决办法

前言.小程序服务器域名配置常见错误及解决方法 1.配置入口&#xff1a; 小程序后台->-开发->开发设置->服务器域名 2.常见错误及原因分析&#xff1a; 3.实战中出现的错误 4.解决办法&#xff1a;应把域名后边的路径去掉&#xff0c;只写域名即可

Leetcode78. 子集

给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 回溯法 class Solution {public List<List<Integer>> subsets(int[] nums) {List…

腾讯云V265/TXAV1直播场景下的编码优化和应用

// 编者按&#xff1a;随着视频直播不断向着超高清、低延时、高码率的方向发展&#xff0c; Apple Vision的出现又进一步拓展了对3D, 8K 120FPS的视频编码需求&#xff0c;视频的编码优化也变得越来越具有挑战性。LiveVideoStackCon 2023上海站邀请到腾讯云的姜骜杰老师分享腾…

结合源码拆解Handler机制

作者&#xff1a;Pingred 前言 当初在讲App启动流程的时候&#xff0c;它的整个流程涉及到的类可以汇总成下面这张图&#xff1a; 那时着重讲了AMS、PMS、Binder这些知识点&#xff0c;有一个是没有对它进行详细讲解的&#xff0c;那就是常见的Handler&#xff0c;它不仅在这个…

k8s之工作负载、Deployment、DaemonSet、StatefulSet、Job、CronJob及GC

文章目录 1、工作负载1.1、定义1.2、分类 2、Deployment2.1、定义2.2、Deployment创建2.3、Deployment 更新机制2.3.1、比例缩放&#xff08;Proportional Scaling&#xff09;2.3.2、HPA&#xff08;动态扩缩容&#xff09;2.3.2.1、需要先安装metrics-server2.3.2.2、配置hpa…

STM32--SPI通信与W25Q64(1)

文章目录 前言SPI通信硬件电路移位过程 SPI时序起始与终止条件交换一个字节 W25Q64硬件电路框图 FLASH操作注意事项软件SPI读写W25Q64 前言 USART串口链接入口 I2C通信链接入口 SPI通信 SPI&#xff08;Serial Peripheral Interface&#xff09;是一种高速的、全双工、同步的串…

实战:大数据Spark简介与docker-compose搭建独立集群

文章目录 前言技术积累Spark简介Spark核心功能及优势Spark运行架构 Spark独立集群搭建安装docker和docker-composedocker-compose编排docker-compose编排并运行容器 Spark集群官方案例测试写在最后 前言 很多同学都使用过经典的大数据分布式计算框架hadoop&#xff0c;其分布式…