解析HTTPS的加密

news2024/10/5 13:00:05

文章目录

    • 简介
    • 加密原理
      • 对称加密
        • 常用的对称加密算法:
        • 简单解析DES
      • 非对称加密
        • 常用的非对称加密算法:
        • 简单解析RSA算法
        • 公钥和私钥的制作:
        • 加密和解密过程:
    • 加密过程
    • 数字证书
    • 摘要算法
      • 解析一下MD5算法

简介

HTTPS 使用了 SSL (Secure Sockets Layer) 和 TLS (Transport Layer Security) 这两种协议来实现安全通信。TLS 是 SSL 的后续版本,两者在基本原理上相似。

加密原理

TLS 和 SSL 使用了两种主要的加密机制:对称加密和非对称加密(混合加密),同时也使用了摘要算法和数字证书来保证数据的完整性和身份认证。

对称加密

对称加密又称单密钥加密,整个加密过程中只使用一个密钥。所谓对称其实就是使用一把密钥加密,并使用同一把密钥进行解密。

常用的对称加密算法:

DES、3DES、AES、TDEA、Blowfish、RC2、RC4 和 RC5

简单解析DES

DES算法的基本思想是通过多次迭代运算和置换,将输入的64位明文数据加密成64位的密文数据

DES算法的加密过程可以分为以下步骤:

  1. 密钥的生成:从用户提供的密钥中,通过一系列置换和替换操作生成16个48位的子密钥,用于后续的加密操作。

  2. 初始置换(IP):将64位的明文数据进行初始置换,得到L0和R0两个32位的数据块。

  3. 16次迭代运算:将L0和R0交替作为输入,进行16次迭代运算,每次迭代都包括以下步骤:

    1)将Ri-1进行扩展置换,扩展为48位的数据块。

    2)将扩展后的48位数据块与子密钥Ki进行异或运算,得到一个48位的中间结果。

    3)将异或后的中间结果分为8个6位的数据块,通过8个S盒进行代替置换,得到一个32位的中间结果。

    4)将32位的中间结果进行置换,得到一个32位的数据块。

    5)将Li-1与上一步的Ri-1相加(模2加),得到Ri。

    6)将Ri-1与上一步的Li-1相加(模2加),得到Li。

  4. 逆置换(IP-1):将最后一次迭代运算得到的L16和R16合并,进行逆置换,得到最终的64位密文数据。

​ DES算法的解密过程与加密过程基本相同,只是使用的子密钥是加密过程中生成的子密钥的逆序。因此,DES算法是一种可逆加密算法。但由于DES算法的密钥长度较短,易受到暴力破解攻击

非对称加密

​ 在加密过程中,使用密钥对(分别是私钥和公钥。公钥可以对外发布,人人可见。而私钥则自己保管,不外泄)中的一个密钥进行加密,另一个密钥进行解密。比如用公钥加密,那么用私钥解密;用私钥加密,就用公钥来解密。

常用的非对称加密算法:

RSA、Elgamal、Rabin、D-H、ECC(椭圆曲线加密算法)等

问题:为什么私钥可以解密被公钥加密的数据?

答:欧拉函数、欧拉定理、互为质数。

简单解析RSA算法

​ RSA的安全基于大数分解的难度。其公钥和私钥是一对大素数(100到200位十进制数或更大)的函数。从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积(这是公认的数学难题)。

RSA的公钥、私钥的组成,以及加密、解密的公式可见于下表:

image-20230512152559207

公钥和私钥的制作:

image-20230512154207545

加密和解密过程:

image-20230512154322692

加密过程

TLS 和 SSL 的加密过程可以分为三个阶段:握手阶段、密钥交换阶段和数据传输阶段。

(1)握手阶段

选择加密算法、服务器给客户端传递公钥、客户端给服务器传递对称加密的密钥

​ 1、客户端向服务器发送一个连接请求,请求中包含了客户端支持的加密算法和其他信息。

​ 2、服务器会回复一个消息,其中包含了服务器的证书和公钥,以及服务器支持的加密算法和其他信息。

​ 3、客户端使用服务器的公钥来验证证书的有效性,并选择一个加密算法,生成一个随机数作为对称加密密 钥,并使用服务器的公钥来加密这个密钥并发送给服务器。

(2)密钥交换阶段

服务器获取到对称加密的密钥

​ 在密钥交换阶段,服务器使用私钥来解密客户端发送的密钥,并使用该密钥来生成会话密钥,即对称加密密钥。服务器和客户端都持有该对称加密密钥,并用它来加密和解密后续的通信数据。

(3)数据传输阶段

​ 在数据传输阶段,服务器和客户端使用对称加密密钥来加密和解密通信数据。通信数据使用摘要算法计算摘要值,以保证数据的完整性。

数字证书

​ 数字证书是一种由权威机构颁发的电子文档,用于证明证书中公钥对应的私钥是属于服务器的。在 TLS 的加密过程中,客户端需要验证服务器的身份,这就需要使用数字证书。

​ 服务器会将自己的数字证书发送给客户端,客户端会使用内置的证书信任列表来验证证书的有效性,如果验证通过,则可以安全地建立连接。

摘要算法

​ 摘要算法是一种用于保证数据完整性的算法。在 TLS 的加密过程中,数字证书的验证以及数据传输的完整性都需要使用摘要算法。常用的摘要算法包括 MD5、SHA-1、SHA-256 等,其中 SHA-256 是最常用的。

​ 摘要算法会将输入的数据转换为一个唯一的固定长度的值,这个值通常称为摘要或哈希值。摘要值可以用于检测数据是否被篡改过。在 TLS 的加密过程中,服务器会将摘要值发送给客户端,客户端会使用同样的摘要算法来计算接收到的数据的摘要值,并将其与服务器发送的摘要值进行比较,从而确定数据是否被篡改过。

解析一下MD5算法

​ MD5 是一种单向哈希函数,它将任意长度的输入数据转换成一个固定长度的输出(通常是 128 位),该输出值称为哈希值或摘要值。MD5 的主要作用是用于验证数据的完整性,因为只要数据稍微有一点改动,其生成的摘要值就会完全不同。

MD5 的加密过程可以简述为以下几步:

1、初始化

​ MD5 算法在开始之前需要进行初始化。初始化过程中,算法会预处理一些常量和初始向量,以及初始化哈希缓存区。

2、数据填充

​ 在填充数据之前,需要将原始数据进行一些处理。MD5 算法会将输入数据按照 512 位进行分组,并在每个分组末尾填充一些位,以确保每个分组的长度都是 512 位。

3、数据处理

​ 在数据填充之后,MD5 算法会对每个分组进行处理。处理过程中,算法会使用一些基本的位运算、逻辑运算、算术运算和置换运算,对每个分组进行迭代处理。处理过程中,算法会使用一个 128 位的缓存区来保存中间结果,最终得到一个 128 位的哈希值。

4、输出

处理完成后,MD5 算法会将生成的哈希值输出。

​ MD5 算法已经被证明不够安全,因为它容易被碰撞攻击。因此,现在已经有更安全的哈希算法可以代替 MD5,例如 SHA-256 和 SHA-3 等。

  1. 碰撞攻击:碰撞攻击是指在MD5算法中构造出两个不同的输入明文,但它们的哈希值相同的情况。这意味着攻击者可以通过构造这样的输入明文,使其经过MD5算法后得到和正常明文相同的哈希值,从而欺骗系统进行身份验证等操作。
  2. 彩虹表攻击:彩虹表攻击是一种基于预先计算哈希值的攻击方式。攻击者事先计算出一张包含大量明文和哈希值对应关系的表,这个表称为彩虹表。然后攻击者在实际攻击中,只需要对被攻击的哈希值进行查询即可快速找到对应的明文。这种攻击方式虽然需要大量的计算资源和时间来预先构建彩虹表,但在实际攻击中却能够迅速破解MD5加密的密码等敏感信息。

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

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

相关文章

2023最新软件测试八股文,能不能拿心仪Offer就看你背得怎样了

很多同学会问测试面试八股文有必要背吗? 我的回答是:很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。 个人感觉目前各个大中厂面试不好的地方是,都在朝着背面试八股文的方向发展(曾…

Android Studio实现文件管理器

项目目录 一、项目概述二、开发环境三、详细设计1、布局设计2、程序运行时申请权限3、查看文件4、删除文件5、搜索文件6、新建文件 四、运行演示 一、项目概述 本次带来的文件管理器,能够对SD卡的目录进行管理。主要功能包括新建文件(夹)、查…

【shell】shell编程之函数

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、概述二、函数的查看和删除1.查看 declare2.删除 declare 三、函数的返回值1.return 返回值2.echo 返回值 四、函数的参数传入与变量范围五、函数的应用1.阶乘2.…

分库分表如何处理主键ID

当关系型数据库数据量过大时,通常会采用分库分表降低数据库查表压力。分库分表有多种,有分一个库多张分表额,有分多个库多张表的。一般分库分表使用ShardingSphere分表,建分片键等。但是分库分表之后,主键ID如何处理呢…

Goby 漏洞更新 |Telesquare TLR-2005Ksh 路由器 getUsernamePassword 信息泄露漏洞

漏洞名称:Telesquare TLR-2005Ksh 路由器 getUsernamePassword 信息泄露漏洞 English Name:Telesquare TLR-2005Ksh getUsernamePassword Information Disclosure CVSS core: 9.0 影响资产数:25826 漏洞描述: Telesquare Tlr…

MATLAB--控制语句--数组操作--符号运算--绘图--文件和数据的处理

控制语句 MATLAB 常用的控制语句有for, while, if, switch 等。 一、循环语句 通过循环控制语句,可以重复执行代码块。循环有两类:for 循环和while 循环。 for 循环是一组语句重复固定的,指定的次数,while 循环是满足条件执行。…

【鸿蒙应用ArkTS开发系列】- http网络库使用讲解和封装

目录 前言http网络库组件介绍http网络库封装创建Har Module创建RequestOption 配置类创建HttpCore核心类创建HttpManager核心类对外组件导出添加网络权限 http网络库依赖和使用依赖http网络库(httpLibrary)使用http网络库(httpLibrary&#x…

“虐人的”双亲委派机制

这些问题,看看你能回答上来多少个: 1、什么是双亲委派? 2、为什么需要双亲委派,不委派有什么问题? 3、”父加载器”和”子加载器”之间的关系是继承的吗? 4、双亲委派是怎么实现的? 5、我能不能…

国外空间服务器是否有利于SEO优化?

​  购买国外空间服务器,这是许多人在做网站时会考虑到的选择。在国内,由于网络环境和限制,所以选择国外的空间似乎是一个不错的选择。但是,国外空间服务器是否对SEO优化有影响?这是一个值得讨论的问题。 1.服务器响应速度 如果…

跟着LearnOpenGL学习4--着色器

文章目录 一、前言二、GLSL2.1、着色器结构2.2、数据类型2.2.1、向量 2.3、输入与输出2.4、uniform2.5、更多属性 三、着色器类 一、前言 在之前绘制三角形的博文中,我们已经接触到了着色器,但是肯定有许多疑问,本文来详细了解一下着色器&am…

【17】SCI易中期刊推荐——计算机信息系统电子与电气(中科院4区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…

Flink从入门到精通之-09状态编程

Flink从入门到精通之-09状态编程 Flink 处理机制的核心&#xff0c;就是“有状态的流式计算”。我们在之前的章节中也已经多次提到了“状态”&#xff08;state&#xff09;&#xff0c;不论是简单聚合、窗口聚合&#xff0c;还是处理函数的应用&#xff0c;都会有状态的身影出…

Spring Cloud第二季--Spring Cloud Bus

文章目录 Spring Clud Bus什么是总线基本原理 牛刀小试 Spring Clud Bus 在Spring Cloud学习–配置中心&#xff08;Config&#xff09;中实现了集中管理微服务配置、不同环境不同配置、运行期间也可动态调整、配置修改后可以自动更新的需求&#xff0c;但同时也有一个弊端&am…

服务器电源线:同为科技(TOWE)机房工程专用电源延长线

工程机房电源延长线 众所周知&#xff0c;世界上不同国家或地区所使用的插头、插座标准有所不同&#xff0c;在庞大复杂的数据中心计算集群内&#xff0c;需要电源供电才能正常工作&#xff0c;因此&#xff0c;服务器电源线是连接电源分配器和服务器的基本配件。在机房服务器…

如何通过优化服务器提升网站的SEO排名

在当今数字化时代&#xff0c;拥有一个高效、稳定的服务器对于网站的成功至关重要。然而&#xff0c;服务器不仅仅是为了提供网站的基本运行&#xff0c;它还可以对搜索引擎优化(SEO)起到关键作用&#xff0c;于是就有了多IP站群服务器这样对SEO非常友好的服务器。通过优化服务…

Goby 漏洞更新 |Telesquare TLR-2005Ksh 路由器 setSyncTimeHost 命令执行漏洞

漏洞名称&#xff1a;Telesquare TLR-2005Ksh 路由器 setSyncTimeHost 命令执行漏洞 English Name&#xff1a;Telesquare TLR-2005Ksh setSyncTimeHost RCE CVSS core: 9.8 影响资产数&#xff1a;25826 漏洞描述&#xff1a; Telesquare Tlr-2005Ksh是韩国Telesquare公司…

5月12日作业

作业1&#xff1a; 作业2&#xff1a;

make_shared知识点

背景 普通创建shared_ptr的方法如&#xff1a; shared_ptr<int> sp1(new int(11));sp1所开辟的动态内存分为如下两部分 uses是持有该资源shared_ptr数量&#xff0c;weaks表示持有该资源weak_ptr数量。 有可能出现 new int(10) 成功&#xff0c;但是引用计数 ref 的内…

应用程序服务器监控

什么是应用程序服务器监视 为了确保业务应用程序的最佳性能&#xff0c;必须使用应用程序服务器监视工具&#xff0c;以深入了解应用程序的运行状况和正常运行时间。应用程序服务器监视可帮助您识别性能不足的服务器组件以及性能问题的根本原因&#xff0c;修复它们并确保应用…

IDEA 导入 spring 源码

文章目录 前言一、下载源码二、安装 Gragle1. 下载 Gragle2. 配置环境变量 三、导入前准备四、编译源码1. 导入源码2. 我所遇见的问题 五、测试1. 创建 module2. 编写测试代码3. 我所遇到的问题 六、总结 前言 我们在学习 spring 源码的时候&#xff0c;有时候是需要在阅读源码…