1 什么是后量子密码?
后量子密码是能够抵抗量子计算机对现有密码算法攻击的 新一代密码算法。所谓“后”,是因为量子计算机的出现,现有的绝大多数公钥密码算法(RSA、Diffie-Hellman、椭圆曲线等)能被足够大和稳定的量子计算机攻破,所以可以抵抗这种攻击的密码算法可以在量子计算和其之后时代存活下来,所以被称为“后量子密码”或“抗量子密码”。
2 主要构造技术
实现后量子密码算法主要有以下 4 种途径 :
(1)基于哈希 (Hash-based):最早出现于 1979 年,主要用于构造数字签名。代表算法:Merkle 哈希树签名、XMSS、Lamport 签名等。基于哈希的签名算法由 Ralph Merkel 提出,被认为是传统数字签名 (RSA、DSA、ECDSA 等 ) 的可行代替算法之一。基于哈希的签名算法由一次性签名方案演变而来,并使用 Merkle 的哈希树认证机制。哈希树的根是公钥,一次性的认证密钥是树中的叶子节点。基于哈希的签名算法的安全性依赖哈希函数的抗碰撞性。由于没有有效的量子算法能快速找到哈希函数的碰撞,因此(输出长度足够长的)基于哈希的构造可以抵抗量子计算机攻击。此外,基于哈希的数字签名算法的安全性不依赖某一个特定的哈希函数。即使目前使用的某些哈希函数被攻破,则可以用更安全的哈希函数直接代替被攻破的哈希函数。
(2)基于编码 (Code-based):最早出现于 1978 年,主要用于构造加密算法。代表算法:McEliece。基于编码的算法使用错误纠正码对加入的随机性错误进行纠正和计算。一个著名的基于编码的加密算法是 McEliece。McEliece 使用随机二进制的不可约 Goppa 码作为私钥,公钥是对私钥进行变换后的一般线性码。Courtois、Finiasz 和Sendrier 使用 Niederreiter 公钥加密算法构造了基于编码的签名方案。基于编码的算法(例如 McEliece)的主要问题是公钥尺寸过大。基于编码的算法包括加密、密钥交换等。
(3)基于多变量 (Multivariate-based):最早出现于 1988 年,主要用于构造数字签名、加密、密钥交换等。代表方法/算法:HFE (Hidden Field Equations)、Rainbow (Unbalanced Oil and Vinegar (UOV) 方法)、HFEv- 等。基于多变量的算法使用有限域上具有多个变量的二次多项式组构造加密、签名、密钥交换等算法。多变量密码的安全性依赖于求解非线性方程组的困难程度,即多变量二次多项式问题。该问题被证明为非确定性多项式时间困难。目前没有已知的经典和量子算法可以快速求解有限域上的多变量方程组。与经典的基于数论问题的密码算法相比,基于多变量的算法的计算速度快,但公钥尺寸较大,因此适用于无需频繁进行公钥传输的应用场景,例如物联网设备等。
(4)基于格(Lattice-based):最早出现于 1996 年,主要用于构造加密、数字签名、密钥交换,以及众多高级密码学应用,如:属性加密 (Attribute-based encryption)、陷门函数 (Trapdoor functions)、伪随机函数 (Pseudorandom functions)、同态加密 (Homomorphic Encryption) 等。代表算法:NTRU 系列、NewHope (Google 测试过的)、一系列同态加密算法 (BGV、GSW、FV 等)。由于其计算速度快、通信开销较小,且能被用于构造各类密码学算法和应用,因此被认为是最有希望的后量子密码技术。