2个版本
使用旧的 Rust 2015
0.1.1 | 2016年4月12日 |
---|---|
0.1.0 | 2016年4月8日 |
#155 在 #encryption-decryption
用于 2 crates
42KB
807 行
密码系统原语
密码系统是一组算法,用于描述特定的安全服务,通常用于实现机密性。通常这是三组算法:密钥生成、加密函数和解密函数。
数学上可以描述为元组 (P, C, K, E, D)
,其中
P
是一个称为“明文空间”的集合C
是一个称为“密文空间”的集合K
是一个称为“密钥空间”的集合E
是一组函数e :: k -> p -> c
称为“加密函数”D
是一组函数d :: k -> c -> p
称为“解密函数”
对于每个 ke ∈ K
,存在 kd ∈ K
,使得 d(kd, e(ke, p)) = p
。如果 kd = ke
,则我们称其为“对称加密”,否则我们称其为“非对称加密”。
在实际应用中,我们使用“非对称加密”,在这种情况下从 ke
计算出 kd
是计算上困难或不可能的。
凯克霍夫原则
即使系统中的所有信息(除密钥外)都是公开的,密码系统也应该是安全的。
这是现代密码学的基本定律。遗憾的是,很多人理解成“隐藏密码系统是坏事”。这完全误解了该原则的含义。保密地保持密码系统并没有什么不好,这只是窃听者需要克服的另一个障碍,但不要依赖保密。
密钥长度
根据ECRYPT II 年度报告:算法和密钥大小,此表展示了不同算法类型的密钥长度等效性
对称 | 因子模数 | 离散对数 | 椭圆曲线 |
---|---|---|---|
48 | 480 | 480/96 | 96 |
56 | 640 | 640/112 | 112 |
64 | 816 | 816/128 | 128 |
80 | 1248 | 1248/160 | 160 |
112 | 2432 | 2432/224 | 224 |
128 | 3248 | 3248/256 | 256 |
160 | 5312 | 5312/320 | 320 |
192 | 7936 | 7936/384 | 384 |
256 | 15424 | 15424/512 | 512 |
安全性表格
根据ECRYPT II 年度报告:算法和密钥大小的安全性等级
安全性等级 | 安全性(位) | 保护 | 注释 |
---|---|---|---|
1. | 32 | 个人进行的“实时”攻击 | 仅适用于认证标签大小 |
2. | 64 | 对小组织提供短期保护 | 不应用于新系统的机密性 |
3. | 72 | 对中等组织提供短期保护,对小组织提供中长期保护 | |
4. | 80 | 对机构提供非常短期保护,对小组织提供长期保护 | 最小通用级,≤4年保护 |
5. | 96 | 传统标准级 | 2密钥3DES限制在~10^6明文/密文,~10年保护 |
6. | 112 | 中期保护 | ~20年保护 |
7. | 128 | 长期保护 | 良好的、与应用程序无关的通用推荐,~30年保护 |
8. | 256 | “可预见的未来” | 除非应用Shor算法,否则对量子计算机具有良好的保护 |
我们建议至少128位的安全等级。
依赖关系
~0.9–1.2MB
~20K SLoC