抗量子密码(PQC),也称后量子密码,是能够抵抗量子计算对公钥密码算法攻击的新一代密码算法,旨在研究密码算法在量子环境下的安全性,并设计在经典和量子环境下均具有安全性的密码系统。
基于哈希的签名算法由Ralph Merkel提出,被认为是传统数字签名(RSA、DSA、ECDSA等)的可行代替算法之一。基于哈希的签名算法由一次性签名方案演变而来,并使用Merkle的哈希树认证机制。哈希树的根是公钥,一次性的认证密钥是树中的叶子节点。
一、基于哈希的方案
基于哈希的签名算法的安全性依赖哈希函数的抗碰撞性。由于没有有效的量子算法能快速找到哈希函数的碰撞,因此(输出长度足够长的)基于哈希的构造可以抵抗量子计算机攻击。此外,基于哈希的数字签名算法的安全性不依赖某一个特定的哈希函数。即使目前使用的某些哈希函数被攻破,还可用更安全的哈希函数直接代替被攻破的哈希函数。
二、基于编码的方案
基于编码的算法使用错误纠正码对加入的随机性错误进行纠正和计算。一个著名的基于编码的加密算法是McEliece。McEliece使用随机二进制的不可约Goppa码作为私钥,公钥是对私钥进行变换后的一般线性码。Courtois、Finiasz和Sendrier使用Niederreiter公钥加密算法构造了基于编码的签名方案。基于编码的算法(例如McEliece)的主要问题是公钥尺寸过大。基于编码的算法包括加密、密钥交换等。基于多变量(Multivariate-based)的方案,被认为是能够抵御基于量子计算机攻击的新型公钥密码体制之一。
三、基于多变量的方案
基于多变量的算法使用有限域上具有多个变量的二次多项式组构造加密、签名、密钥交换等算法。多变量密码的安全性依赖于求解非线性方程组的困难程度,即多变量二次多项式问题。该问题被证明为非确定性多项式时间困难。目前没有已知的经典和量子算法可以快速求解有限域上的多变量方程组。与经典的基于数论问题的密码算法相比,基于多变量的算法的计算速度快,但公钥尺寸较大,因此适用于无需频繁进行公钥传输的应用场景,例如物联网设备等。
四、基于格的方案
格(Lattice)是一种数学结构,定义为一组线性无关的非0向量(称作格基)的整系数线性组合。格密码的主要数学基础是格中的两个困难问题:格的最短矢量问题(SVP)和格的最近矢量问题(CVP)。SVP是对于给定的一组基,找出其所生成的格中欧氏距离(两点之间的距离)最小的非零向量。即在格上找到一个非零向量v,满足对格上的任意非零向量u,均有||v||≤||u||。CVP是对于给定的格及任一向量,找出格中与该向量距离最近的向量。即在格上找到一个向量v,满足对格上的任意非零向量u,均有||v-y||≤||u-y||。格是一个困难的问题,并且难度还能控制,满足了成为密码学算法核心的必要条件。
PQC算法中,对格的研究是最活跃、最灵活的。基于格的算法在安全性、公私钥大小、计算速度上可达到较好的平衡。第一,基于格的算法可以实现加密、数字签名、密钥交换、属性加密、函数加密、全同态加密等各类功能的密码学构造。第二,基于格的算法的安全性依赖于求解格中问题的困难性。这些问题在达到相同的安全强度时,基于格的算法的公私钥大小比上述其他三种方案更小,计算速度更快,且能被用于构造多种密码学原语,更适用于真实世界中的应用。因此,基于格的算法被认为是最有前景的PQC算法之一。
五、基于同源的方案
随着量子计算机的出现与发展,使用Shor算法来快速分解整数可能在不久的将来会成为一件非常简单的事情,这就对传统的公钥密码学提出了一个巨大的挑战。就目前而言,绝大多数公钥加密算法都是基于整数分解或是求解离散对数,但在量子计算之下,这些问题被证明都是可以在多项式时间内被轻易解决的。干是,对能够抵抗量子攻击的后量子密码体制的研究开始逐步火热起来,基干椭圆曲线同源的密码体制正是其中一个重要的研究方向。
椭圆曲线同源最早于1997年被应用到密码学中,但直到2006年才有相关论文被正式发表出来,尽管这些论文提出的方案能够满足基本的公钥加密和秘钥交换的功能,但当时的方案不仅实现效率低下,并且在2010年被证明在量子计算下都是不安全的。
到了2011年,Jao提出了超奇异椭圆曲线同源问题,同源密码学又再次引起了大家的兴趣。超奇异的同源问题在计算效率上比普通的同源快了几个数量级,并且不依赖干椭圆曲线离散对数问题,同时被证明可以抵抗已知的量子攻击。此后,对椭圆曲线同源的密码体制的研究都主要集中在超奇异椭圆曲线同源上。
2017年,基于同源的加密方案和秘钥封装协议SIKE被提交到美国NIST,参与后量子密码方案的候选,并且在2019年成功进入到了第二轮。
2022年7月,美国商务部的国家标准与技术研究院(NIST)从第3轮中选择了第一批将被标准化的算法,以及将在第4轮期间进行分析的其他算法,以实现潜在的额外标准化。选择用于标准化的算法包括用于密钥建立的CRYSTALS-Kybe,以保护通过公共网络交换的信息和用于数字签名、身份认证的CRYSTALS-Dilithium、Falcon、SPHINCS+。这四种选定的加密算法将成为NIST抗量子密码标准的一部分,预计将在两年内完成。其他算法Classic McEliece、Bike、HQC和SIKE在第4轮中被选中进行进一步研究。
对于访问安全网站时使用的一般加密,NIST选择了CRYSTALS-Kyber算法。其优点包括相对较小的加密密钥,双方可以轻松地交换,以及其运行速度。对于数字签名,NIST选择了三种算法CRYSTALS-Dilithium、FALCON和SPHINCS+,前两者具有高效率,NIST推荐CRYSTALS-Dilithium作为主要算法,FALCON用于需要比Dilithium提供的更小的签名的应用程序。第三个SPHINCS+比其他两个更大且速度稍慢,但它作为备份很有价值,因为它基于一种不同于NIST其他三种选择的数学方法。
SPHINCS+使用哈希函数,而其他三个选定的算法是基于结构化格的一系列数学问题。仍在考虑的另外四种算法是为一般加密而设计的,并且在其方法中不使用结构化格或哈希函数。NIST在第4轮期间没有需评估的其他签名算法,担心它们可能没有足够的多样性。因此,呼吁提交更多新的签名方案,补足多样性,提交截止日期为2023年6月1日。他们正在寻找不基于结构化格且具有短签名和快速验证的签名方案。在此次新评估期间提交的任何新算法都将经过数年的彻底分析。