|
8 | 8 |
|
9 | 9 | 然后,对第一次哈希的结果附加两个随机字节,再次哈希,取其值作为加密的 IV。 |
10 | 10 |
|
| 11 | +## 高级加密 |
| 12 | + |
| 13 | +魔曰支持数个高级加密套件,允许资深用户增强密文的安全性。 |
| 14 | + |
| 15 | +除 AES-256-CTR 外,下列密码套件受支持: |
| 16 | + |
| 17 | +- **StrongIV** |
| 18 | +- **HMAC-SHA256** |
| 19 | +- **PBKDF2** |
| 20 | +- **TOTP** |
| 21 | + |
| 22 | +启用高级加密套件将导致密文长度显著增加,所有组件均可独立开启和关闭。 |
| 23 | + |
| 24 | +### StrongIV |
| 25 | + |
| 26 | +为了节省密文长度,魔曰默认使用熵为 16bits 的 2 字节初始化向量(IV)来执行 AES 加密。 |
| 27 | + |
| 28 | +开启 StrongIV 后,魔曰将使用熵为 128bits 的 16 字节初始化向量来执行 AES 加密。 |
| 29 | + |
| 30 | +开启本功能后,在多次使用相同密钥加密的情况下,出现密钥流重用的概率会大大降低。 |
| 31 | +同时会将密文增长 16 字节,导致输出结果变长。 |
| 32 | + |
| 33 | +### HMAC-SHA256 |
| 34 | + |
| 35 | +魔曰默认不对消息进行强完整性验证,仅使用 [**卢恩算法**](https://zh.wikipedia.org/zh-cn/%E5%8D%A2%E6%81%A9%E7%AE%97%E6%B3%95)(US2950048, ISO/IEC 7812-1) 来对解密结果做简单校验。 |
| 36 | + |
| 37 | +打开 HMAC 后,魔曰将对密文执行 SHA-256 哈希签名,并将签名附加在密文之后。 |
| 38 | + |
| 39 | +开启本功能可防止针对密文的恶意篡改,同时会将密文增长 32 字节,导致输出结果变长。 |
| 40 | + |
| 41 | +### PBKDF2 |
| 42 | + |
| 43 | +::: tip 提示 |
| 44 | + |
| 45 | +启用 PBKDF2 后,由于需要执行二十万次密钥迭代,会导致加密/解密卡顿。 |
| 46 | + |
| 47 | +::: |
| 48 | + |
| 49 | +魔曰默认直接使用密钥的一次 SHA-256 哈希作为加密密钥。 |
| 50 | + |
| 51 | +打开 PBKDF2 后,魔曰将会取 16 字节的随机盐值,对密钥执行 200000 次哈希迭代,用迭代后的密钥执行加密,并将盐值附加在加密数据之后。 |
| 52 | + |
| 53 | +开启本功能可防止针对密钥哈希的彩虹表攻击,同时会将密文增长 16 字节,导致输出结果变长。 |
| 54 | + |
| 55 | +### TOTP |
| 56 | + |
| 57 | +::: tip 提示 |
| 58 | + |
| 59 | +TOTP 不是安全性的保证,它可以减少 PBKDF2 算法对密文长度的影响,但并不显著增加密钥熵。 |
| 60 | + |
| 61 | +用户必须先启用 KDF 才能启用 TOTP。 |
| 62 | + |
| 63 | +::: |
| 64 | + |
| 65 | +TOTP 是 PBKDF2 的附加功能,允许用户向密文增加解密时效性。 |
| 66 | + |
| 67 | +魔曰使用经过简单修改的 TOTP 算法,使其最终输出 16 位数字而非传统的 6~8 位。并不直接将 TOTP 密钥用于加密,而是将其作为盐值参与 PBKDF2 的密钥派生。 |
| 68 | + |
| 69 | +允许用户自定义 TOTP 加密解密所使用的时间戳(默认为系统时间),每步时间大小,和预共享密钥(默认为加密主密钥)。 |
| 70 | + |
11 | 71 | ## 三重转轮混淆 |
12 | 72 |
|
13 | 73 | 转轮混淆之前的原文,是一个使用 AES 加密后数据编码而成的 Base64 字符串,转轮混淆对其的处理为彻底打乱 Base64 字符串的字母/数字/符号,使其无法被正常解码为上一层 AES256 加密后的字节数据(包括两字节 IV 在内)。 |
@@ -107,9 +167,9 @@ fjhigkabcde.... |
107 | 167 | graph TD |
108 | 168 |
|
109 | 169 | subgraph "加密" |
110 | | - RANDBYTES["Random IV Generation<br/>2 bytes"] |
111 | | - AES256["AES_256_CTR_E()"] |
112 | | - KEYDERIV["SHA256 Key Derivation"] |
| 170 | + RANDBYTES["Random IV Generation"] |
| 171 | + AES256["AES-256-CTR/高级加密"] |
| 172 | + KEYDERIV["Key Derivation"] |
113 | 173 | end |
114 | 174 |
|
115 | 175 | subgraph "编码和混淆" |
|
0 commit comments