爬虫逆向加密技术详解之对称加密算法:原理、过程与关键技术详解

一、对称加密简介

对称密钥算法(Symmetric-key algorithm),又称为对称加密、私钥加密、共享密钥加密,是一种使用‌相同密钥‌进行加密和解密的密码学技术。其核心思想是:发送方和接收方需预先共享一个密钥,加密时用密钥将明文转换为密文,解密时用同一密钥将密文还原为明文。
在这里插入图片描述

典型算法:AES(高级加密标准)、DES(数据加密标准)、3DES(三重数据加密算法)、SM4(国密算法)、RC4(流加密算法)、Rabbit(流加密算法)等。

特点:

    1. 对称加密算法是加密/解密可逆的算法。
    1. 其加密和解密使用相同的密钥。
    1. 对输入数据无长度要求,加密速度快。
    1. 密钥可随机生成,但有位数要求(一般定义为key)。
    1. 不同算法的密钥长度:
    • AES:16、24、32字节(对应AES - 128、AES - 192、AES - 256)
    • DES:8字节
    • 3DES:24字节
    • SM4:16字节
    • RC4:1 - 256字节(位数)

对称加密分类:

  • 分组加密(将明文分组后逐组加密):AES、DES、3DES、SM4 。
  • 序列加密/流加密(以字节流方式依次加密(解密)每个字节):RC4、Rabbit。

二、对称加密的基本过程

对称加密的核心流程可概括为以下三步:

  1. 密钥生成

    • 加密双方需预先共享一个相同的密钥(Key),密钥长度通常为128位(AES-128)、192位或256位,密钥的安全性直接决定加密强度。
  2. 加密过程

    • 发送方使用密钥和加密算法(如AES)将明文(Plaintext)转换为密文(Ciphertext)。
    • 数学表达:密文 = E(明文, 密钥),其中E为加密函数。
  3. 解密过程

    • 接收方使用相同的密钥和对应的解密算法将密文还原为明文。
    • 数学表达:明文 = D(密文, 密钥),其中D为解密函数。

示例

  • 用户A使用AES-256密钥加密邮件内容,通过互联网发送给用户B。
  • 用户B使用相同的密钥解密,恢复原始邮件。

三、对称加密的运算模式

对称加密算法通常以固定大小的块(如AES的128位块)处理数据。当明文长度非块大小的整数倍时,需结合运算模式(Mode of Operation,简称:mode)实现高效加密。

最常见的加密模式(经验总结):ECB和CBC

3.1 ECB(电子密码本模式)

ECB(电子密码本模式,Electronic Codebook)是最简单的对称加密运算模式。它将明文划分为固定长度的块(如 AES 中为 128 位),每个块独立使用密钥进行加密,生成相应的密文块。

  • 优点:实现简单,加密和解密速度快
  • 缺点:由于相同的明文块会生成相同的密文块,容易暴露明文的数据模式,在安全性要求较高的场景下存在被破解的风险。例如,在加密图像数据时,重复的图案可能会在密文中呈现出规律,攻击者可借此进行分析。

3.2 CBC(密码分组链接模式)

CBC(密码分组链接模式,Cipher Block Chaining)克服了 ECB 模式的部分缺陷。在 CBC 模式中,每个明文块在加密前会与前一个密文块进行异或运算,然后再使用密钥进行加密。第一个明文块则与一个初始向量(IV)进行异或运算。这样,即使明文存在相同的块,由于异或运算的作用,生成的密文块也会不同,大大提高了加密的安全性。但 CBC 模式的缺点是加密过程存在顺序性,必须按顺序处理每个分组,无法进行并行处理,在一定程度上影响了加密效率。

  • 初始化向量(IV):首个明文块需与随机IV异或,IV无需保密但需唯一。
  • 优点:隐藏明文模式,安全性高于ECB。

3.3 CFB(密码反馈模式)

CFB(密码反馈模式,Cipher Feedback)将加密算法作为流密码的密钥流生成器。它将前一个密文块加密后生成的结果,与当前明文块进行异或运算,得到当前密文块。CFB 模式不需要填充明文,能够按字节或比特进行加密,适用于实时数据加密,如网络通信中的数据流。不过,由于其加密过程依赖于前一个密文块,一旦密文在传输过程中出现错误,会影响后续所有密文块的解密。

  • 适用场景:需要部分解密或错误传播可控的场景(如实时语音加密)。

3.4 OFB(输出反馈模式)

OFB(输出反馈模式,Output Feedback)与 CFB 模式类似,也是将加密算法作为密钥流生成器。不同的是,OFB 模式使用加密算法的输出直接作为密钥流,与明文进行异或运算。OFB 模式同样不需要填充明文,对密文传输中的错误不敏感,即使部分密文出错,也不会影响后续密文块的解密,但它在安全性方面相对 CBC 模式较弱。

  • 特点:错误仅影响当前块,但需严格同步。

3.5 CTR(计数器模式)

CTR(计数器模式,Counter Mode)是一种较新且高效的运算模式。它使用一个计数器,每个明文块对应一个不同的计数器值,计数器值经过加密后生成密钥流,与明文块进行异或运算得到密文块。CTR 模式支持并行处理,加密和解密速度快,并且对密文传输错误不敏感,在现代密码学应用中得到广泛使用。

  • 优点:并行计算高效,支持随机访问(如磁盘加密)。

3.6 CTS(密文窃取模式)

CTS(密文窃取模式,Cipher Text Stealing)用于解决块密码加密中最后一个数据块长度不足的问题。 在加密过程中,最后一个数据块长度不足时,会使用部分密文块填充明文块,然后进行加密。 在解密过程中,最后一个数据块长度不足时,会使用部分密文块解密,然后去除填充部分。保持了加密前后数据长度的一致性。

四、填充模式

在对称加密中,由于加密算法通常要求明文的长度是固定块大小的整数倍(如 AES 的块大小为 128 位),当明文长度不满足要求时,就需要使用填充模式(Padding Schemes,简称:padding)。

  • 当明文长度不足一个分组时,需填充到一个分组长度。
  • 当明文长度恰好为一个分组时,需再填充一个分组长度。

4.1 PKCS#7填充

PKCS#7 填充是一种常见的填充方式。它会在明文的末尾填充一定数量的字节,每个字节的值等于填充的字节数。例如,如果明文长度为 120 位,距离 128 位的块大小还差 8 位,就填充 8 个字节的 0x08。在解密时,接收方根据最后一个字节的值,去除相应数量的填充字节,还原出原始明文。

  • 填充值为填充字节数(如明文 “ABCD” → 填充 4 字节 0x04 → “ABCD\x04\x04\x04\x04”)。
  • 优点:解密时可直接丢弃填充字节。

4.2 ANSIX923填充

ANSIX923 填充与 PKCS#7 类似,也是在明文末尾进行填充。不同的是,它除了最后一个字节表示填充的字节数外,其余填充字节都为 0。例如,若需要填充 8 个字节,前 7 个字节为 0,最后一个字节为 0x08。

4.3 ISO10126填充

填充字符串由一个字节序列组成,此字节序列的最后一个字节填充字节序列的长度,其余字节填充随机数据。例如:明文 “ABCD” → 填充随机字节 + 0x04 → “ABCD\xA1\xB2\xC3\x04”

4.4 零填充(‌Zero Padding)

零填充是最简单的填充方式,直接在明文末尾填充 0,使明文长度达到块大小的整数倍。但零填充存在一定的安全隐患,因为在解密时,无法准确判断填充的 0 是原始数据中的 0 还是填充的 0,可能导致解密错误或数据泄露风险。例如:明文 “ABCD” → “ABCD\x00\x00\x00\x00”(可能混淆数据边界)

  • 缺点:无法区分填充与真实数据(如二进制文件)。

4.5 无填充(No Padding)

  • 要求明文长度为块大小的整数倍,否则报错。
  • 适用场景:已知长度的结构化数据(如哈希值)。

五、偏移量

偏移量(Initialization Vector, IV)是对称加密中用于增强安全性的随机值,在 CBC、CFB 等模式中必需。

  1. 其核心作用
  • ‌随机化输入‌:即使相同明文和密钥,不同 IV 会生成不同密文,防止模式分析攻击。

  • 抵御重放攻击‌:每次加密使用唯一 IV,避免攻击者重复发送旧密文。

  1. 使用规范‌:
  • IV 无需保密,但需与密文一起传输。
  • IV 必须随机生成(如通过 CSPRNG),且长度与块大小一致(如 AES-CBC 的 IV 为 128 位)。
  1. 与密钥的关系
  • IV≠密钥。密钥需严格保密,而IV可公开。
  1. 示例‌:
  • 在 AES CBC 中,加密流程为:密文块 = 加密(当前明文块 XOR 前一块密文),首块使用 IV。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值