勒索软件最佳实践
加密原理
椭圆曲线难解性
椭圆曲线密码学(ECC)的安全性基于椭圆曲线离散对数问题(ECDLP)的难解性。
基本概念
椭圆曲线是满足方程 $y^2 = x^3 + ax + b$ 的点的集合(在有限域上)。在椭圆曲线上定义了一种特殊的加法运算,使得曲线上的点构成一个群。
离散对数问题
给定椭圆曲线上的两个点 $P$ 和 $Q = kP$(其中 $k$ 是一个标量),已知 $P$ 和 $Q$,求 $k$ 是计算困难的。
难解性原因
- 没有已知的高效算法:与整数分解不同,目前没有找到能够在多项式时间内求解 ECDLP 的算法。
- 指数级复杂度:最好的已知算法(如 Pollard’s rho)的时间复杂度为 $O(\sqrt{n})$,其中 $n$ 是椭圆曲线的阶。
- 与素数分解的区别:椭圆曲线上的离散对数问题比基于整数分解的 RSA 更难解。同样的密钥长度下,ECC 提供更强的安全性。
应用
由于 ECDLP 的难解性,椭圆曲线被广泛用于:
- ECDSA(椭圆曲线数字签名算法)
- ECDH(椭圆曲线 Diffie-Hellman 密钥交换)
- 现代区块链和加密货币(如比特币)
对称加密
对称加密是指使用同一密钥进行加密和解密的加密方法。加密者和解密者需要共享同一个秘密密钥。
特点
| 特性 | 描述 |
|---|---|
| 密钥 | 加密和解密使用同一密钥 |
| 效率 | 非常快速,适合大数据加密 |
| 密钥管理 | 难度大(需要安全分发密钥) |
| 可扩展性 | 不适合大规模应用(N个参与方需要N(N-1)/2个密钥) |
常见对称加密算法
1. DES(Data Encryption Standard)
- 密钥长度:56 位(已过时,已破解)
- 块大小:64 位
- 用途:已废弃,仅用于遗留系统
2. 3DES(Triple DES)
- 密钥长度:168 位(3 × 56)
- 原理:对数据进行三次 DES 加密
- 安全性:较好,但速度较慢
3. AES(Advanced Encryption Standard)
- 密钥长度:128、192、256 位
- 块大小:128 位
- 工作模式:ECB、CBC、CTR、GCM 等
- 安全性:强,目前最广泛使用
1 | |
4. ChaCha20:
- 密钥长度:256 位
- 流密码:实时加密流
- 用途:用于 TLS 1.3、移动设备
对称加密的工作模式
ECB(Electronic Code Book)- 电子码本
- 简单,但不安全(相同明文块加密后相同)
- 不推荐使用
CBC(Cipher Block Chaining)- 密码块链接
1 | |
- 每个块依赖前一个块
- 需要初始向量 IV
- 广泛应用
CTR(Counter Mode)- 计数器模式
1 | |
- 可并行处理
- 实时性好
GCM(Galois/Counter Mode)- 伽罗瓦计数器模式
- 提供认证加密
- 同时保证机密性和完整性
对称加密的优缺点
优点:
- 速度快(通常比非对称加密快 1000 倍以上)
- 算法简单,易于实现
- 安全性好(密钥保密的情况下)
缺点:
- 密钥分发困难
- 无法实现数字签名
- 参与方多时密钥管理复杂
- 无法证明数据来源
非对称加密
非对称加密(也称为公钥加密)使用一对相关的密钥:公钥(可公开)和私钥(必须保密)。
特点
| 特性 | 描述 |
|---|---|
| 密钥 | 使用公钥加密,私钥解密 |
| 效率 | 较慢,通常比对称加密慢 1000 倍 |
| 密钥管理 | 简单(只需分发公钥) |
| 可扩展性 | 良好(每个参与方只需一对密钥) |
常见非对称加密算法
1. RSA(Rivest-Shamir-Adleman)
- 密钥长度:1024、2048、4096 位
- 原理:基于大数分解的困难性
- 用途:广泛用于 HTTPS、数字签名
1 | |
- 其中 n = p × q(两个大素数的乘积)
- e 是公钥指数,d 是私钥指数
2. ECC(椭圆曲线密码)
- 密钥长度:256、384、521 位
- 原理:基于椭圆曲线离散对数问题
- 优势:密钥短但安全性等同于 RSA(256 位 ECC ≈ 3072 位 RSA)
- 用途:现代应用首选
3. ElGamal
- 原理:基于离散对数问题
- 特点:生成的密文长度是明文的两倍
- 用途:较少使用
非对称加密的工作原理
1 | |
非对称加密的应用
1. 保密通信
- Alice 用 Bob 的公钥加密消息
- 只有 Bob 的私钥能解密该消息
2. 数字签名
- 用私钥对数据签名(只有本人能做)
- 用公钥验证签名(任何人都能验证)
- 实现身份认证和不可否认性
1 | |
3. 密钥交换
- 使用 Diffie-Hellman 或 ECDH 协议
- 双方协商出共同的对称密钥
- 即使通信被监听也无法得知密钥
非对称加密的优缺点
优点:
- 密钥管理简单(只需分发公钥)
- 可以构建完整的 PKI 体系
- 支持数字签名和不可否认性
- 支持密钥交换
- 适合大规模应用
缺点:
- 性能较差(速度慢)
- 不适合加密大数据
- 密钥长度较长
- 计算复杂度高
加密和密钥交换
勒索软件需要解决三个问题:
1.在加密时应当占用资源少并且耗时短。
2.加密的密钥应该能正确回传。
3.加密的密钥即使被流量监听到也不应能成功解密。
要解决这三个问题,一种混合的加密模式出现:
1. 生成非对称密钥对
- 攻击者预先生成一对非对称密钥(公钥 PK 和私钥 SK)。
- 私钥 SK 保存在攻击者的服务器上,不会泄露。
- 公钥 PK 被用来加密文件密钥(对称密钥 K),并发送给受害者的机器。
2. 下载公钥(PK)
- 当勒索软件被植入受害者的机器后,勒索软件会从攻击者的 C2(Command and Control)服务器 下载 公钥 PK,即攻击者用于加密文件密钥的公钥。
3. 生成对称密钥(K)
- 勒索软件在受害者的机器上随机生成一个 对称密钥 K。通常使用高效的对称加密算法,如 AES-256,因为对称加密的速度比非对称加密快,适合加密大量数据(例如受害者的文件)。
4. 加密受害者文件
- 勒索软件使用生成的 对称密钥 K 来加密受害者的文件。由于 AES-256 等对称加密算法的效率,文件加密操作非常快速,适合加密大量数据。
5. 加密对称密钥(K)
- 一旦文件加密完成,勒索软件会用攻击者的 公钥 PK 加密受害者本地生成的 对称密钥 K。这样做是为了确保只有攻击者能够解密这个密钥。
- 由于 PK 是公钥,任何人都可以用它加密数据,但只有攻击者手中的私钥 SK 可以解密。
6. 保存加密的对称密钥(Encrypted_K)
- Encrypted_K = PK(K) 是 加密后的对称密钥。勒索软件会将这个加密后的密钥(Encrypted_K)上传到攻击者的 C2 服务器 或者保存在本地,并删除明文对称密钥 K。
- 一旦删除了对称密钥 K,受害者就无法自行解密他们的文件。
7. 勒索和恢复
- 受害者无法解密自己的文件,除非他们从攻击者手中购买私钥 SK,攻击者声称持有该私钥,并且能用它解密 Encrypted_K(从而恢复 K)。
- 使用私钥 SK 解密 Encrypted_K 得到 K,然后可以用 K 解密受害者的文件。
关键优点和解释
- 对称加密(如 AES)适用于大文件,因为它比非对称加密快。
- 非对称加密(使用公钥 PK)用于加密对称密钥 K,确保只有攻击者能解密密钥。
- 这种混合加密方案避免了使用纯非对称加密的效率瓶颈,因为非对称加密(例如 RSA)处理大文件时会非常慢。
常见勒索软件中类似的加密流程
这一加密过程与许多实际的勒索软件攻击相似,常见的勒索软件,如 WannaCry、NotPetya、CryptoLocker 等,都使用了 对称加密 + 非对称加密 的混合方法来加密受害者文件。
勒索软件的整体流程:
- 植入受害者机器。
- 下载攻击者公钥 PK。
- 生成对称密钥 K。
- 用 K 加密文件。
- 用 PK 加密 K。
- 将加密后的 K 上传或保存在本地。
- 删除明文 K,使得受害者无法自行解密文件。
- 要求支付赎金,以换取私钥 SK,进而解密文件。
勒索软件最佳实践
https://yicizhang00.github.io/posts/网络安全/encrypt/