密码学
Twofish
定义
由 Schneier 等人设计的 128 位分组、128/192/256 位密钥的对称密码,曾是 AES 候选决赛算法;安全但因 AES 成为标准而使用较少。
Twofish 是一种基于 Feistel 结构的 16 轮分组密码,分组长度 128 位,密钥长度 128、192 或 256 位,由 Bruce Schneier、Niels Ferguson、John Kelsey、Doug Whiting、David Wagner 与 Chris Hall 设计。它是 AES 竞赛(1997–2000)五大决赛算法之一,使用密钥相关的 S 盒、伪 Hadamard 变换以及复杂的密钥编排。Twofish 不受专利与版权约束,至今未被破解,但在 AES 决赛中因性能与简洁性而败给 Rijndael。今天,它在 TrueCrypt/VeraCrypt、GnuPG 等工具中作为备选密码出现而非默认选择。新系统通常选用 AES,或在追求算法多样化时,与 ChaCha20 等流密码并用。
示例
- VeraCrypt 允许将 Twofish 与 AES、Serpent 组合实现级联加密。
- GnuPG 将 Twofish 作为可选的对称加密算法之一。
相关术语
Blowfish
Bruce Schneier 于 1993 年设计的 Feistel 分组密码,分组长度 64 位、密钥长度可变;算法本身安全,但因分组过小已被 AES 取代。
AES(高级加密标准)
由 NIST 标准化的 128 位分组密码,密钥长度可为 128、192 或 256 位,由 Daemen 与 Rijmen 设计,是全球占主导地位的对称加密算法。
分组密码
对固定长度明文分组使用密钥进行加密的对称密码,通常结合工作模式以处理任意长度的数据。
对称加密
加密和解密使用同一个秘密密钥的加密方案,在密钥安全分发的前提下提供高速度和强机密性。
加密
使用算法和密钥将明文转换为密文的密码学过程,使只有授权方才能恢复原始数据。
密码套件
由密钥交换、身份认证、数据加密和完整性算法组合而成的命名集合,由 TLS 等协议在每次会话中协商使用。