文章总结: 本文深度剖析勒索软件加密体系,从密码学基础到混合加密模型,详细解析AES、ChaCha20、RSA、ECC等算法在勒索软件中的运用。核心结论是勒索软件采用对称加密快速加密文件,非对称加密保护密钥,实现高效且安全的加密。理解这些技术有助于安全分析人员识别和防御勒索软件攻击。 综合评分: 86 文章分类: 恶意软件,二进制安全
第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 盒的构造过程:
-
求字节在 中的乘法逆元:
-
对逆元字节进行仿射变换:
其中 。
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篇-勒索软件加密技术解析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论