#algorithm #encryption #security #key #encryption-decryption #function #octavo

octavo-crypto

Octavo - 密码系统。警告!!!不适用于生产环境

2个版本

使用旧的 Rust 2015

0.1.1 2016年4月12日
0.1.0 2016年4月8日

#155#encryption-decryption


用于 2 crates

MIT 许可证

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