Skip to content

Commit a9cd5e2

Browse files
committed
Update Doc.
1 parent 9098719 commit a9cd5e2

3 files changed

Lines changed: 82 additions & 8 deletions

File tree

README.md

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,9 @@ APK文件可以 [**在 Release 中下载**](https://github.com/SheepChef/Abracad
118118
### 加解密过程
119119

120120
```
121-
明文 -> 压缩 -> AES-256-CTR -> Base64 -> 三重转轮 -> 映射汉字 -> 组句(仅仿真加密时) -> 密文
121+
明文 -> 压缩 -> 加密/高级加密 -> Base64 -> 三重转轮 -> 映射汉字 -> 组句(仅仿真加密时) -> 密文
122122
123-
密文 -> 解仿真(仅仿真加密) -> 转轮逆映射 -> Base64 -> AES-256-CTR 解密 -> 解压缩 -> 明文
123+
密文 -> 解仿真(仅仿真加密) -> 转轮逆映射 -> Base64 -> 解密 -> 解压缩 -> 明文
124124
```
125125

126126
### 映射表
@@ -137,6 +137,19 @@ Abracadabra 以最常用的 3000 个汉字为密本,对大小写拉丁字母
137137

138138
AES 加密密钥和转轮密钥是同一个,均采用哈希值。
139139

140+
### 高级加密套件
141+
142+
魔曰提供高级密码学套件支持,使用者可藉此执行更高安全性的加密。
143+
144+
除 AES-256-CTR 外,下列密码套件受支持:
145+
146+
- **强IV** (初始化向量,16Bytes)
147+
- **HMAC-SHA256** (消息签名,32Bytes)
148+
- **PBKDF2** (密钥衍生算法,200000次哈希迭代,盐值长度 16Bytes)
149+
- **TOTP** (时效性密钥,作为 PBKDF2 之盐值,可自定义多个参数)
150+
151+
启用高级加密套件将导致密文长度显著增加,所有组件均可独立开启和关闭。
152+
140153
### 三重转轮混淆
141154

142155
模拟古老的转轮,每次加密均会对密本映射进行偏移。

docs/document/enc.md

Lines changed: 63 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,66 @@
88

99
然后,对第一次哈希的结果附加两个随机字节,再次哈希,取其值作为加密的 IV。
1010

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+
1171
## 三重转轮混淆
1272

1373
转轮混淆之前的原文,是一个使用 AES 加密后数据编码而成的 Base64 字符串,转轮混淆对其的处理为彻底打乱 Base64 字符串的字母/数字/符号,使其无法被正常解码为上一层 AES256 加密后的字节数据(包括两字节 IV 在内)。
@@ -107,9 +167,9 @@ fjhigkabcde....
107167
graph TD
108168
109169
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"]
113173
end
114174
115175
subgraph "编码和混淆"

docs/index.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ features:
2222
details: 魔曰的密文看起来像逼真的古文,用算法构造字面意义,使加密具有文学色彩。
2323
- icon: 🔐
2424
title: 固若金汤
25-
details: 魔曰重视数据安全,明文数据经过 AES-256 加密。所有代码完全在本地离线执行
25+
details: 魔曰重视数据安全,标配 AES 加密,可选高级加密套件,完全在本地离线执行
2626
- icon: 🌈
2727
title: 不拘一格
2828
details: 魔曰允许你调整加密参数,使用不同的模式,生成高度随机化,不同风格的密文。
@@ -76,7 +76,7 @@ Abracadabra(魔曰) 是开源,安全,高效的文本加密工具。
7676

7777
- **仿真,使用文言语法句式**
7878
- 开源,所有源代码公开可查。
79-
- 安全,完全离线的 AES 加密
79+
- 安全,标配 AES,可选高级加密套件
8080
- 可靠,代码经过严格单元测试。
8181
- 便捷,易于本地部署和使用。
8282

@@ -103,11 +103,12 @@ Abracadabra(魔曰) 是开源,安全,高效的文本加密工具。
103103
以下是本项目的依赖项:
104104

105105
- [**Unishox2**](https://github.com/siara-cc/Unishox2) 短字符串压缩实现 _©Siara-cc_, **Apache-2.0** License.
106-
- [**crypto-js**](https://github.com/brix/crypto-js) AES 加密实现 _©Jeff Mott/Evan Vosberg_, **MIT** License.
106+
- [**crypto-js**](https://github.com/brix/crypto-js) 加密算法实现 _©Jeff Mott/Evan Vosberg_, **MIT** License.
107107
- [**pako**](https://github.com/nodeca/pako) GZIP 压缩实现 _©Vitaly Puzrin/Andrei Tuputcyn_, **MIT** License.
108108
- [**js-base64**](https://github.com/dankogai/js-base64) Base64 编码工具实现 _©Dan Kogai_, **BSD-3-Clause** License.
109109
- [**mersenne-twister**](https://github.com/boo1ean/mersenne-twister) 梅森旋转算法实现 _©Makoto Matsumoto/Takuji Nishimura_, **BSD-3-Clause** License.
110110
- [**opencc-js**](https://github.com/nk2028/opencc-js) 简繁体转换实现 _©nk2028_, **MIT** License.
111+
- [**otplib**](https://github.com/yeojz/otplib) TOTP 实现 _©Gerald Yeo_, **MIT** License.
111112

112113
本项目许可证与所有依赖项的许可证兼容。
113114

0 commit comments

Comments
 (0)