解析HTTPS的加密

简介

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加密的密码等敏感信息。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱打辅助的小可爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值