对称密钥密码

对称密钥密码(如 AESChaCha20RC6TwofishCAST 等)使用相同的密钥(或密码)来加密解密数据。它们常与其他算法组合成对称加密方案(如 ChaCha20-Poly1305AES-128-GCMAES-256-CTR-HMAC-SHA256),也经常搭配将密码转换为密钥的密钥派生算法(如 ScryptArgon2)。对称密钥密码具有抗量子性,这意味着只要使用足够长的密钥,强大的量子计算机也无法攻破其安全性。对称密码既可以加密按固定大小分块的数据(分组密码),也可以加密以字节序列形式到来的数据(流密码)。通过称为“分组密码工作模式”的特定构造,可以将分组密码转换为流密码。

对称加密与解密

对称加密和解密使用秘密密钥或口令(从中派生密钥)。用于加密和解密数据的秘密密钥通常为 128 位或 256 位,称为“加密密钥”。它有时以十六进制或 base64 编码的整数形式给出,也可以通过基于密码的密钥派生方案生成。

输入数据经过加密后会转换为密文;密文经过解密后,则会还原为原始输入数据。

对称加密使用一组算法

需要理解的一个重要概念是:对称密钥加密算法通常不会单独工作。它们会与其他相关密码算法协同使用,组成对称加密方案对称加密构造

在大多数加密方案中,加密会与密码到密钥派生算法及消息认证方案结合使用(参见认证加密)。典型的对称加密过程包含一系列步骤,涉及不同的密码算法:

  • 基于密码的密钥派生算法(如 Scrypt 或 Argon2):允许使用密码代替密钥,并使密码破解过程困难且缓慢。
  • 分组密码到流密码转换算法(如 CBCCTR 等分组密码模式)+ 消息填充算法(在某些模式中使用,如 PKCS7):让分组密码算法(如 AES)能够加密任意大小的数据。
  • 分组密码算法(如 AES):使用秘密密钥安全地加密固定长度的数据块。
  • 消息认证算法(如 HMAC):检查解密后得到的结果是否与加密前的原始消息一致。

本节后续将通过更多细节和示例,介绍如何配置并使用对称分组密码(如 AES)以及上述所有算法,安全地加密和解密任意大小的消息。

results matching ""

    No results matching ""