常用对称算法

数学家和密码学家在设计对称密钥加密算法(如 AES)时,目标是在没有加密密钥的情况下,解密密文在实践中不可行。对于现代安全对称加密算法(如 AES 和 ChaCha20),这一点成立;而对于被视为不安全对称加密算法的其他算法(如 DES 和 RC4),则可能存在争议或并不成立。

一些常用的对称加密算法包括:AESChaCha20CASTTwofishIDEASerpentRC5RC6CamelliaARIA。在正确配置和使用的情况下,这些算法都被认为是安全的

AES(Rijndael

AES(高级加密标准,也称 Rijndael)是现代 IT 行业最流行、应用最广泛的对称加密算法。这是因为 AES 已被证明高度安全、速度快、标准化程度高,并且几乎在所有平台上都得到良好支持。AES 是一种 128 位分组密码,使用 128、192 或 256 位秘密密钥。它通常以 AES-CTRAES-GCM分组模式处理流式数据。在大多数分组模式下,AES 还需要一个随机的 128 位初始化向量(IV、nonce)。

RijndaelNIST 组织的 AES 竞赛(1997-2000 年)中胜出,并以“AES”之名正式公布(成为继 DES 之后的下一代官方对称分组密码)。2001 年,AES 被美国政府采纳为官方推荐标准,此后尚未发现重大弱点或攻击。

Rijndael(AES)算法可免费用于任何用途:公共或私人用途、商业或非商业用途均可。

Salsa20 / ChaCha20

Salsa20 及其改进变体 ChaChaChaCha8ChaCha12ChaCha20)和 XSalsa20,是由著名密码学家 Daniel Bernstein 设计的一系列现代、快速的对称流密码Salsa20 密码是旨在设计新型对称流密码的 eSTREAM 竞赛(2004-2008 年)的最终候选算法之一,随后与相关的 BLAKE 哈希函数一起被广泛采用。Salsa20 及其变体免版税且未申请专利。

Salsa20 密码以一个 128 位256 位对称秘密密钥 + 随机生成的 64 位 nonce(初始化向量)以及不限长度的数据流作为输入,输出与输入流长度相同的加密数据流。与 Salsa20 相关的 ChaCha20 流密码通常与 Poly1305 组合成认证加密构造:ChaCha20-Poly1305

其他常用对称密码

以下是其他现代安全对称密码。它们的使用频率低于 AES 和 ChaCha20,但在软件开发者和信息安全社区中仍然流行:

  • Serpent)——安全的对称密钥分组密码(密钥大小:128、192 或 256 位),属于公有领域,未申请专利
  • Twofish——安全的对称密钥分组密码(密钥大小:128、192 或 256 位),免版税,未申请专利
  • Camellia)——安全的对称密钥分组密码(分组大小:128 位;密钥大小:128、192 和 256 位),已申请专利,但可免费用于非商业用途
  • RC5——安全的对称密钥分组密码(密钥大小:128 至 2040 位;分组大小:32、64 或 128 位;轮数:1 ... 255),使用短密钥时不安全(56 位密钥已被成功暴力破解),专利于 2015 年到期,现已免版税
  • RC6——安全的对称密钥分组密码,与 RC5 类似但更复杂(密钥大小:128 至 2040 位;分组大小:32、64 或 128 位;轮数:1 ... 255),专利于 2017 年到期,现已免版税
  • IDEA——安全的对称密钥分组密码(密钥大小:128 位),专利于 2012 年到期,现已免版税
  • CASTCAST-128 / CAST5CAST-256 / CAST6)——一系列安全的对称密钥分组密码(密钥大小:40 ... 256 位),商业和非商业用途均免版税
  • ARIA)——与 AES 类似的安全对称密钥分组密码(密钥大小:128、192 或 256 位),韩国官方标准,可免费公开使用
  • SM4)——与 AES 类似的安全对称密钥分组密码(密钥大小:128 位),中国官方标准,可免费公开使用

不安全的对称算法

另一些对称加密算法过去曾很流行,但如今被认为不安全(已被攻破的算法)或其安全性存在争议,因此不再推荐使用:

  • DES——56 位密钥,实际上已被攻破,可以暴力破解
  • 3DES(三重 DES)——64 位密码,被认为已被攻破
  • RC2——64 位密码,被认为已被攻破
  • RC4——流密码,已被攻破,已有实用攻击得到验证
  • Blowfish)——旧式 64 位密码,已被攻破,已有实用攻击得到验证
  • GOST)——俄罗斯的 64 位分组密码,安全性存在争议,被认为有风险

对称加密方案/构造

除上述对称密钥密码外,密码学家还提出了许多对称加密方案(构造),例如以下最流行的认证加密(AEAD)方案:

  • ChaCha20-Poly1305
    • 集成 Poly1305 认证器的 ChaCha20 流密码(集成式 AEAD 认证加密)
    • 需要一个 256 位密钥和随机 96 位 nonce
    • 性能极高
    • 大多数现代密码库均已实现
  • AES-256-GCM
    • AES-GCM 是采用 GCM 分组模式的 AES(Rijndael)分组密码(集成式 AEAD 认证加密),其行为类似流密码
    • 需要 256 位密钥和每条消息唯一的 nonce(通常推荐 96 位)
    • 大多数现代密码库均已实现

如今,大多数应用在进行对称加密时都应优先选择上述某种加密方案,而不是自行构造加密方案。上述方案高度安全、经过验证和充分测试,并由密码库开箱即用地提供。

请注意,ChaCha20-Poly1305 是一种高性能密码(在移动设备上比 AES-128-GCM 快 3 倍),因此建议使用它代替 AES-GCM。

results matching ""

    No results matching ""