CoderTools

Twofish 加密/解密

AES 决赛算法 - 128 位分组密码,支持最高 256 位密钥

安全提示

本工具完全在浏览器本地处理数据。请勿分享您的加密密钥。生产环境请使用强随机生成的密钥。

Twofish 支持固定密钥长度:128 位(16 字节)、192 位(24 字节)或 256 位(32 字节)。分组大小始终为 128 位(16 字节)。
格式选项

关于 Twofish

Twofish 是由 Bruce Schneier、John Kelsey、Doug Whiting、David Wagner、Chris Hall 和 Niels Ferguson 组成的 Counterpane Internet Security 六人团队设计的对称 128 位分组密码。1998 年提交给 NIST AES 竞赛,与 Rijndael、Serpent、RC6 和 MARS 一起进入最终轮。其基本设计创新是密钥相关 S 盒:在密钥设置期间,四个 8 到 8 位 S 盒中的每一个都通过两个固定置换(q0 和 q1)和 GF(2⁸) 上的 4×4 最大距离可分(MDS)矩阵乘法从密钥材料构建,确保替换层对每个不同的密钥都不同。

每个 16 轮 Feistel 步骤应用一个 g() 函数,该函数通过四个密钥相关 S 盒和 MDS 矩阵映射两个 32 位字,然后通过伪 Hadamard 变换(PHT)——一个使用 32 位加法的简单但有效的扩散步骤——组合两个结果。输入白化(第 1 轮前与四个子密钥异或)和输出白化(第 16 轮后与四个子密钥异或)防止滑动攻击。自 1998 年推出以来,没有发布任何针对完整 16 轮 Twofish 的攻击。

主要特性

  • 密钥相关 S 盒:所有四个 8 到 8 位 S 盒在设置时通过 q0/q1 固定置换和 MDS 矩阵乘法从密钥唯一派生——每个密钥不同的 S 盒配置防止对替换层的预计算差分分析
  • MDS(最大距离可分)矩阵:每轮 g() 函数中使用的 GF(2⁸) 上的 4×4 MDS 矩阵保证任何非零输入差分产生最大权重输出差分,在每个线性层中给出最优抗差分密码分析能力
  • PHT(伪 Hadamard 变换):每个 16 轮 Feistel 步骤使用 32 位加法组合两个 g() 输出,提供快速且硬件高效的扩散,无需额外的 S 盒评估
  • 输入和输出白化:明文在第 1 轮前与四个 32 位子密钥异或,第 16 轮后的状态在输出前与另外四个子密钥异或——防止针对两端没有完整分组密钥混合的任何密码的已知明文滑动攻击

加密模式

  • CBC: Twofish 的 CBC 模式——128 位块在每次 16 轮 Feistel 传递前与前一密文异或。128 位分组大小消除了 Sweet32 生日攻击(碰撞阈值为 2⁶⁴ 块,约 2³² 泽字节——实际上无法达到)。重新生成密钥由策略需求驱动,不受分组生日约束。
  • ECB: Twofish 的 ECB 模式——每个 128 位(16 字节)块使用相同密钥派生的 S 盒独立通过 16 轮 Feistel 处理。相同明文块产生相同密文。仅用于单块操作:密钥包装、令牌加密或格式保留测试。
  • CFB: Twofish 的 CFB 模式——16 轮块函数加密运行中的密文状态(IV 初始化),输出与明文位异或。Twofish 的 128 位分组消除 Sweet32;适合偏好 Twofish 密钥相关 S 盒构造而非 AES 的流式会话。
  • OFB: Twofish 的 OFB 模式——块函数对反馈寄存器(IV 初始化)独立于明文进行迭代,生成确定性密钥流。128 位内部状态使生日循环长度为 2¹²⁸ 块(本质上无限)。适合需要流密码模式中 Twofish 密钥相关扩散的应用。

算法对比

算法 密钥长度 分组大小 安全性 速度
Twofish 128/192/256 bits 128 bits 优秀 快速
AES 128/192/256 bits 128 bits 优秀 快速
Blowfish 32-448 bits 64 bits 良好 快速
3DES 112/168 bits 64 bits 中等 较慢

安全注意事项

  • 自 1998 年 AES 提交以来,没有发布任何针对完整 16 轮 Twofish 的攻击。最好的有记录的简化轮次结果涵盖非标准假设下最多 6 轮。MDS 矩阵和密钥相关 S 盒 25 年公开密码分析中未显示结构弱点。
  • Twofish 的密钥相关 S 盒提供 AES 没有的额外攻击抗性层:攻击者必须破坏密钥材料才能确定替换层结构。该特性专门设计用于对抗固定 S 盒密码的预计算差分攻击。
  • Twofish 被推荐作为 Blowfish 的精神继承者,适用于需要用具有相似设计传承但有 128 位分组保护的密码替换 BF-CBC(在 64 位分组上易受 Sweet32 攻击)的应用。Twofish-256-CBC 或 Twofish-256-CTR 提供此升级路径。
  • 对于新应用,AES-256-GCM 配合硬件加速(AES-NI)是性能敏感部署的标准推荐。Twofish-256 是以下场景的优秀选择:离线加密、VeraCrypt 多密码级联(Twofish+AES+Serpent)、AES 专利历史顾虑的环境、以及不需要 AES-NI 的最大裕度对称加密。

应用场景

  • VeraCrypt 多密码级联加密:Twofish-256 是 VeraCrypt AES-Twofish-Serpent 级联中的三个标准层之一,任何单一密码算法的破坏不会破坏组合加密——特别因其与 AES 不同的设计血统而被选中
  • Blowfish BF-CBC 迁移:将遗留 OpenVPN BF-CBC 或 PGP Blowfish 配置替换为 Twofish,提供相同的 Schneier 设计传承,但在消除 Sweet32 漏洞的 128 位分组密码中
  • 无 AES-NI 硬件的环境:Twofish 的纯软件实现在 AES-NI 不可用的微控制器、旧 CPU 和嵌入式目标上提供强大的 128 位分组加密
  • 长期高安全性密码存储:Twofish-256 用于需要与 AES 算法多样性的加密卷和密钥派生记录——VeraCrypt 文档将 Twofish 列为独立于 AES 认证假设的安全保证

参考资料

快捷菜单

暂无访问记录