第12篇-勒索软件加密技术解析

admin 2026-08-23 05:24:31 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文深度剖析勒索软件加密体系,从密码学基础到混合加密模型,详细解析AES、ChaCha20、RSA、ECC等算法在勒索软件中的运用。核心结论是勒索软件采用对称加密快速加密文件,非对称加密保护密钥,实现高效且安全的加密。理解这些技术有助于安全分析人员识别和防御勒索软件攻击。 综合评分: 86 文章分类: 恶意软件,二进制安全


cover_image

第12篇-勒索软件加密技术解析

原创

pandazhengzheng pandazhengzheng

安全分析与研究

2026年8月17日 22:00 广东

在小说阅读器读本章

去阅读

深度剖析勒索软件加密体系的技术实现,从密码学数学基础到实战加密架构,全面解析 AES、ChaCha20、RSA、ECC 及混合加密模型在勒索软件中的运用。


一、密码学基础

1.1 对称加密与非对称加密

勒索软件的加密体系建立在两大密码学分支之上:对称加密与非对称加密。理解二者的差异是分析勒索软件加密机制的起点。

对称加密使用同一密钥完成加密与解密操作,其核心特征如下:

| 特性 | 说明 | | — | — | | 密钥数量 | 加密与解密使用同一密钥 | | 加密速度 | 极快,适合大体积数据加密 | | 密钥分发 | 密钥必须安全传输,否则可被截获 | | 典型算法 | AES、ChaCha20、Salsa20、3DES | | 密钥长度 | AES-128/192/256;ChaCha20-256 | | 应用场景 | 勒索软件中对文件数据的批量加密 |

非对称加密使用密钥对(公钥/私钥),公钥加密、私钥解密,其核心特征如下:

| 特性 | 说明 | | — | — | | 密钥数量 | 公钥与私钥组成密钥对,互不相同 | | 加密速度 | 极慢,仅适合小数据量加密 | | 密钥分发 | 公钥可公开分发,私钥由持有者保管 | | 典型算法 | RSA、ECC(ECDH/ECIES)、ElGamal | | 密钥长度 | RSA-2048/4096;ECC-256/384 | | 应用场景 | 勒索软件中对对称密钥的封装保护 |

勒索软件之所以必须采用混合加密体系,根源在于两种加密方式的互补特性:对称加密速度快但密钥无法安全传输,非对称加密可安全传输密钥但速度过慢。二者结合即可实现”快速加密大量文件 + 安全保护加密密钥”的目标。

1.2 哈希函数与密钥派生函数

哈希函数在勒索软件加密体系中承担多重角色:密钥派生、完整性校验、密钥标识生成。

密码学哈希函数的核心性质:

| 性质 | 数学描述 | 安全意义 | | — | — | — | | 原像抗性 | 给定 ,计算上不可行找到  使得 | 防止从哈希值反推原始数据 | | 第二原像抗性 | 给定 ,计算上不可行找到  使得 | 防止替换攻击 | | 碰撞抗性 | 计算上不可行找到任意  使得 | 防止生日攻击 | | 雪崩效应 | 输入微小变化导致输出剧烈变化 | 确保哈希分布的随机性 |

勒索软件中常用的哈希函数:

| 哈希算法 | 输出长度 | 勒索软件应用场景 | | — | — | — | | SHA-256 | 256 bit | LockBit 3.0 密钥派生、文件完整性校验 | | SHA-1 | 160 bit | 部分旧版勒索软件的密钥标识(已不安全) | | MD5 | 128 bit | 早期勒索软件的受害者标识生成 | | SHA-3 | 可变 | 新型勒索软件的密钥派生 | | BLAKE2 | 256/512 bit | 部分基于 Rust 的勒索软件(如 BlackCat) |

密钥派生函数(KDF)将低熵输入(如密码、主密钥种子)转化为高熵的密码学密钥:

KDF 的核心设计目标包括:

  • 密钥拉伸(Key Stretching):通过迭代计算增加暴力破解的时间成本
  • 盐值(Salt)引入:防止彩虹表攻击和预计算攻击
  • 可调计算成本:适应硬件性能增长,动态调整安全参数

1.3 勒索软件中的混合加密模型

现代勒索软件普遍采用”对称加密 + 非对称加密”的混合加密模型,其工作流程如下:

┌─────────────────────────────────────────────────────────────────┐
│                    勒索软件混合加密模型                           │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  [受害者系统]                      [攻击者C2服务器]              │
│                                                                 │
│  1. 生成随机对称密钥 SK                                          │
│       │                                                         │
│       ▼                                                         │
│  2. 使用 SK 加密文件 ──────────► 加密文件 (AES/ChaCha20)        │
│       │                                                         │
│       ▼                                                         │
│  3. 使用攻击者公钥 PK_enc 加密 SK                                │
│       │                                                         │
│       ▼                                                         │
│  4. 加密后的 SK 存储在本地                                       │
│       │                     私钥 SK_dec 安全存储在 C2            │
│       ▼                     │                                   │
│  5. 销毁明文 SK           ◄─┘                                   │
│                                                                 │
│  [解密流程]                                                      │
│  受害者支付赎金 → 攻击者用 SK_dec 解密 SK → 发送明文 SK          │
│  → 受害者用 SK 解密文件                                          │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

混合加密模型的关键安全属性:

| 安全属性 | 实现方式 | 勒索软件意义 | | — | — | — | | 机密性 | 对称密钥加密文件数据 | 确保受害者无法自行解密 | | 密钥保护 | 非对称加密封装对称密钥 | 确保对称密钥仅攻击者可恢复 | | 前向安全 | 每次感染使用独立密钥对 | 防止一个密钥泄露影响所有受害者 | | 密钥销毁 | 安全擦除内存中的明文密钥 | 防止内存取证恢复密钥 | | 完整性 | HMAC/GCM 认证标签 | 防止文件被篡改导致解密失败 |


二、AES加密技术深度解析

2.1 数学基础

AES(Advanced Encryption Standard)的数学基础建立在有限域(Galois Field) 之上。

有限域  的定义:

 是由所有 8 位二进制数组成的有限域,其上的运算定义如下:

  • 加法:对应比特位的异或(XOR)运算

    其中

  • 乘法:基于不可约多项式的模乘运算

    其中不可约多项式为:

    对应十六进制值 0x11B

xtime 运算(乘以  的运算)是 AES 乘法的基础:

其中  表示左移位运算。任意乘法  可通过反复调用 xtime 和 XOR 实现。

AES 的 SPN(Substitution-Permutation Network)结构:

AES 采用代换-置换网络(SPN)结构,每一轮包含以下操作:

┌──────────────────────────────────────────┐
│           AES 单轮结构 (SPN)              │
│                                          │
│  输入状态 (16字节)                        │
│       │                                  │
│       ▼                                  │
│  SubBytes (S盒代换)  ← 非线性混淆        │
│       │                                  │
│       ▼                                  │
│  ShiftRows (行移位)  ← 线性扩散          │
│       │                                  │
│       ▼                                  │
│  MixColumns (列混合)  ← 线性扩散         │
│       │                                  │
│       ▼                                  │
│  AddRoundKey (轮密钥加) ← 密钥引入       │
│       │                                  │
│       ▼                                  │
│  输出状态 (16字节)                        │
└──────────────────────────────────────────┘

2.2 AES-128/192/256 算法详解

AES 支持三种密钥长度,对应不同的轮数:

| 参数 | AES-128 | AES-192 | AES-256 | | — | — | — | — | | 密钥长度 | 128 bit | 192 bit | 256 bit | | 轮数 | 10 | 12 | 14 | | 轮密钥长度 | 128 bit | 128 bit | 128 bit | | 扩展密钥字数 | 44 | 52 | 60 | | 安全级别 | 足够 | 高 | 极高 |

AES 状态矩阵:

AES 将 16 字节的输入数据组织为  的字节矩阵(State),按列优先排列:

其中  表示第  行第  列的字节。

2.2.1 SubBytes 变换

SubBytes 对状态矩阵中的每个字节通过 S 盒(S-Box)进行非线性代换:

S 盒的构造过程:

  1. 求字节在  中的乘法逆元:

  2. 对逆元字节进行仿射变换:

    其中 。

S 盒的部分值(十六进制):

| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | — | | 0 | 63 | 7C | 77 | 7B | F2 | 6B | 6F | C5 | 30 | 01 | 67 | 2B | FE | D7 | AB | 76 | | 1 | CA | 82 | C9 | 7D | FA | 59 | 47 | F0 | AD | D4 | A2 | AF | 9C | A4 | 72 | C0 | | 2 | B7 | FD | 93 | 26 | 36 | 3F | F7 | CC | 34 | A5 | E5 | F1 | 71 | D8 | 31 | 15 | | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … |

S 盒的设计提供了良好的非线性特性,其非线性度为 112(最大可能值为 128),差分分布表的最大值为 4,有效抵抗差分密码分析和线性密码分析。

2.2.2 ShiftRows 变换

ShiftRows 对状态矩阵的每一行进行不同偏移量的循环左移:

| 行号 | 偏移量 | | — | — | | 0 | 0 | | 1 | 1 | | 2 | 2 | | 3 | 3 |

变换效果示意:

原始状态:                    ShiftRows 后:
┌───┬───┬───┬───┐          ┌───┬───┬───┬───┐
│s00│s01│s02│s03│          │s00│s01│s02│s03│  (不移动)
├───┼───┼───┼───┤          ├───┼───┼───┼───┤
│s10│s11│s12│s13│   ──►    │s11│s12│s13│s10│  (左移1)
├───┼───┼───┼───┤          ├───┼───┼───┼───┤
│s20│s21│s22│s23│          │s22│s23│s20│s21│  (左移2)
├───┼───┼───┼───┤          ├───┼───┼───┼───┤
│s30│s31│s32│s33│          │s33│s30│s31│s32│  (左移3)
└───┴───┴───┴───┘          └───┴───┴───┴───┘

ShiftRows 的作用是在列方向上实现扩散,确保一列中的字节被分散到不同的列中,与 MixColumns 配合实现”宽轨迹”扩散策略。

2.2.3 MixColumns 变换

MixColumns 对状态矩阵的每一列进行  上的矩阵乘法:

其中矩阵元素为  中的值,乘法基于前述的不可约多项式 。

展开计算:

MixColumns 矩阵是 MDS(Maximum Distance Separable)矩阵,其分支数为 5(最大可能值),确保每轮变换后输出字节与输入字节的最大关联数为 4,提供最优的扩散效果。

2.2.4 AddRoundKey 变换

AddRoundKey 将轮密钥与状态矩阵进行逐字节异或:

其中  为第  轮轮密钥的第  行第  列字节。

2.2.5 密钥扩展算法

AES 密钥扩展将原始密钥扩展为  个 128 位轮密钥。以 AES-128 为例:

初始密钥划分: 将 128 位密钥分为 4 个 32 位字

扩展规则:

其中:

  • RotWord:将 4 字节字循环左移一字节,即
  • SubWord:对 4 字节字的每个字节应用 S 盒代换
  • Rcon:轮常量,定义为 ,其中 ,

| 轮常量 | 值 | | — | — | | Rcon[1] | 01000000 | | Rcon[2] | 02000000 | | Rcon[3] | 04000000 | | Rcon[4] | 08000000 | | Rcon[5] | 10000000 | | Rcon[6] | 20000000 | | Rcon[7] | 40000000 | | Rcon[8] | 80000000 | | Rcon[9] | 1B000000 | | Rcon[10] | 36000000 |

完整 AES 加密流程:

明文 (128 bit)
    │
    ▼
AddRoundKey (轮密钥 0)        ← 初始轮密钥加
    │
    ▼
┌──────────────────────────┐
│  第 1 到 Nr-1 轮循环      │
│  ┌────────────────────┐  │
│  │ SubBytes           │  │
│  │ ShiftRows          │  │
│  │ MixColumns         │  │
│  │ AddRoundKey        │  │
│  └────────────────────┘  │
└──────────────────────────┘
    │
    ▼
SubBytes                      ← 最后一轮(无 MixColumns)
ShiftRows
AddRoundKey (轮密钥 Nr)
    │
    ▼
密文 (128 bit)

2.3 AES 工作模式对比

AES 分组密码本身只能加密固定长度(128 bit)的数据,工作模式定义了如何处理超过一个分组的数据。

| 工作模式 | 全称 | 并行加密 | 并行解密 | 随机访问 | 认证 | 典型勒索软件 | | — | — | — | — | — | — | — | | ECB | Electronic Codebook | 是 | 是 | 是 | 否 | WannaCry(部分) | | CBC | Cipher Block Chaining | 否 | 是 | 否 | 否 | Ryuk、Conti | | CTR | Counter | 是 | 是 | 是 | 否 | LockBit 2.0 | | GCM | Galois/Counter | 是 | 是 | 是 | 是 | 部分新型家族 | | XTS | XEX-based Tweaked-codebook | 是 | 是 | 是 | 否 | 部分磁盘加密 | | CFB | Cipher Feedback | 否 | 是 | 否 | 否 | 早期家族 |

2.3.1 CBC 模式详解

CBC(Cipher Block Chaining)模式通过将前一密文分组与当前明文分组异或后再加密,实现分组间的链接:

加密:

解密:


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:安全分析与研究 pandazhengzheng pandazhengzheng《第12篇-勒索软件加密技术解析》

评论:0   参与:  0