面向非密码学家的 PQC(后量子密码学)

这篇文章主要介绍了 NIST 标准化的三种新算法(ML-KEM、ML-DSA 和 SLH-DSA)以及混合算法 X-Wing,包括它们的原理、性能、安全性等方面的内容:

  • 概述:NIST 标准化了 ML-KEM(又名 FIPS 203 又名 Kyber)、ML-DSA(又名 FIPS 204 又名 Dilithium)和 SLH-DSA(又名 FIPS 205 又名 SPHINCS+)三种新算法,分别是密钥封装方法、数字签名方案。还讨论了混合密钥封装方法 X-Wing,它结合了经典和 PQ 算法。
  • 密钥封装(KEM)

    • 什么是 KEM:KEM 是一种具有特定接口的密码学原语,与非对称加密密切相关,可简化算法设计,避免加密固定消息。以 RSA-KEM 和 ECIES-KEM 为例说明了其原理和实现。KEM 比非对称加密方案有一个缺点,即不能对同一消息加密给多个接收者,但可以通过使用 mKEM 恢复此能力。
    • 安全级别:ML-KEM 有 512、768 和 1024 三种尺寸,安全参数与公钥/密文大小大致呈线性关系,性能与安全参数呈二次关系。X-Wing 是一种混合 KEM,结合了 X25519 和 ML-KEM-768。安全级别方面,多数人认为默认使用 ML-KEM768,但 NSA 推荐 ML-KEM-1024。
    • 隐式拒绝和误绑定:ML-KEM 有隐式拒绝的特性,其解封装方法会检测到对手对密文的操纵,但不会失败,而是返回只有私钥方知道的“共享”秘密。这会影响 ML-KEM 的绑定属性,通过使用 64 字节的种子作为私钥可以解决更强大的攻击。
    • 更多关于性能:ML-KEM 的性能受 SHAKE 解压缩矩阵和矩阵向量乘法的影响,加速这些操作可以提高性能。ML-KEM 的缓存行为也很重要,在内存充足的情况下可以缓存矩阵以提高性能。X-Wing 的性能主要取决于 X25519 和 ML-KEM 的性能。
  • 数字签名方案

    • 安全讨论:ML-DSA 有三种口味,ML-DSA-44、ML-DSA-65 和 ML-DSA-87,安全参数与公钥/签名大小呈线性关系。SLH-DSA 的安全性与底层哈希函数有关,适用于公共密钥不易旋转的用例,但其签名大小较大。NSA 要求在所有应用中使用 ML-DSA-87。
    • 性能讨论:SLH-DSA 使用大量哈希函数调用,加速这些调用有助于提高性能。SLH-DSA 的安全性还取决于创建的签名数量,NIST 已承诺编写关于修改参数集的 SP 以帮助进行安全-性能权衡。ML-DSA 的算法与 ML-KEM 密切相关,缓存矩阵较大,签名过程可能需要重复。
    • 随机签名:ML-DSA 和 SLH-DSA 可以以随机或确定性方式创建签名,在 PQ 签名的情况下,应始终使用随机选项,除非有特殊要求。
    • 混合签名:签名也可以被混合,对于 ML-DSA,如果能够更改公钥,可以在意识到弱点时切换 PQ 方案。对于 SLH-DSA,与其他方案结合不是很有用,但可以添加经典签名以防止数学进展。
    • 预哈希,一个牢骚:预哈希在 ML-DSA 和 SLH-DSA 中存在,但在 ML-DSA 中意义不大。在 SLH-DSA 中,不应该进行预哈希,而应在协议层面指定消息的哈希。

总之,这些新的 PQC 算法在性能、安全性等方面各有特点,需要根据具体应用场景进行选择和使用。

阅读 35
0 条评论