目录
背景
后量子密码学的诞生背景,得从量子计算说起。量子计算是一种新型的计算模式,它利用量子比特来存储和处理信息。和传统计算机的比特只能是 0 或 1 不同,量子比特可以同时处于 0 和 1 的叠加态,这使得量子计算机在处理某些特定问题时,速度远远超过传统计算机。就好比有一条很窄的路,传统汽车(传统计算机)一次只能通过一辆,而量子汽车(量子计算机)一次能同时通过好几辆,所以在一些复杂的计算任务上,量子计算机就有巨大的优势。
然而,这种优势对于传统的密码学来说,却是一个巨大的威胁。传统的很多密码算法,比如我们前面提到的 RSA 算法,它的安全性是建立在这样一个假设上的:大数分解很困难。简单来说,就是把两个很大的质数相乘得到一个更大的数很容易,但是反过来,已知这个更大的数,想要把它分解成原来的两个质数却很难。传统计算机要花费很长时间才能完成这个分解过程,所以 RSA 算法在传统计算机环境下是安全的。但是量子计算机不一样,它有 Shor 算法,这个算法能让量子计算机在相对较短的时间内完成大数分解,这就意味着 RSA 算法在量子计算机面前就像纸糊的一样,很容易就被攻破了。
除了 RSA 算法,还有一些其他的传统密码算法,比如椭圆曲线密码算法,它也是基于一些数学难题来保证安全性的,而这些难题在量子计算机面前也可能变得不再难。这就像是我们原本以为很坚固的城堡(传统密码算法),突然出现了强大的敌人(量子计算机),随时有可能被攻破。
为了应对这个威胁,后量子密码学就应运而生了。后量子密码学的目标就是设计出一种新的密码算法,即使在量子计算机的帮助下,也很难被破解。它主要依赖于一些量子计算机目前还难以解决的数学问题。这些问题和传统密码学所依赖的问题不太一样,它们在量子计算环境下依然能够保持较高的难度,就像是给我们的信息城堡换上了一种新的、更坚固的防御系统,让量子计算机这个强大的敌人也无从下手。
打个更形象的比方,传统密码学就像是我们用一种古老的、只有特定钥匙才能打开的锁来锁住我们的信息宝藏,而量子计算就像是出现了一种能够快速复制和尝试各种钥匙的神奇工具。后量子密码学就是要设计出一种全新的锁,这种锁的开启方式非常复杂,即使是这种神奇工具也很难破解,从而保护我们的信息宝藏不受量子计算的威胁。
主要算法介绍
基于格的密码学
格的概念
在数学中,格是一种代数结构,也可以看作是多维空间中的点阵。想象一下在一个二维平面上,按照一定的规律排列着无数个点,这些点之间的相对位置是固定的,形成一个规则的网格结构,这就是一个简单的格。在高维空间中,格的结构更加复杂,但基本原理类似。例如,在三维空间中,可以按照一定的间距在 x、y、z 三个方向上排列点,形成一个三维的点阵。这些点可以通过一组基向量来表示,基向量就像是构建格的 “积木”,通过基向量的线性组合(可以理解为基向量的整数倍相加)可以得到格中的所有点。
格密码学中的难题
基于格的密码学算法主要依赖于格中的一些难题,其中最著名的就是 “最短向量问题”(SVP)和 “最近向量问题”(CVP)。SVP 就是在给定的格中找到一个非零向量,使得它的长度最短。这听起来似乎很简单,但实际上在高维空间中是非常困难的。因为随着维度的增加,格中的点数量呈指数级增长,要找到最短的那个向量需要尝试大量的可能性。CVP 则是给定一个不在格上的点,找到格中距离这个点最近的向量。这个问题同样在高维情况下很难解决。这些问题的难度为基于格的密码学算法提供了安全性保障,因为即使量子计算机有强大的计算能力,目前也很难在短时间内解决这些问题。
加密和解密过程
在基于格的密码学中,加密过程可以这样理解。假设我们要加密一条信息,首先会生成一个格,这个格是由一些特定的参数(比如基向量)定义的。然后,会把要加密的信息和这个格的一些特性结合起来,生成一个密文。这个密文就像是在一个复杂的格结构上隐藏了我们的信息。解密过程则是利用与加密相关的私钥,这个私钥包含了关于格的一些关键信息,能够帮助我们从密文中提取出原始信息。具体来说,解密过程可以利用格的某些特殊性质,绕过 SVP 或 CVP 这些难题,快速地找到正确的解。例如,有一种著名的基于格的密码算法叫 NTRU 加密算法,它就是利用了格的特性来实现加密和解密的。在 NTRU 加密中,公钥和私钥都是基于格的多项式表示的,加密时通过一些多项式运算将信息隐藏在密文中,解密时利用私钥中的多项式进行运算,从而恢复出原始信息。
基于多变量多项式的密码学
多变量多项式基础
多变量多项式是指包含多个变量的多项式表达式。例如,f(x, y, z) = 2x²y + 3xz - 5y² + 7z - 4 就是一个包含三个变量 x、y、z 的多变量多项式。在基于多变量多项式的密码学中,通常会使用一组这样的多变量