现代科学的前沿阵地
原文:https://blog.cryptographyengineering.com/2024/04/16/a-quick-post-on-chens-algorithm/
作者:Matthew Green
译者:Kurt Pan
如果你是一个普通人——也就是说,一个不痴迷于关注最新密码学新闻的人——你可能错过了上周的密码学重磅炸弹。这一消息以陈一镭 (Yilei Chen) 撰写的e-print论文《格问题的量子算法》的形式发布,引起了密码学学术界的轰动。现在,格和量子算法设计方面的专家正在评估这个结果(需要明确的是,我不是其中之一!),但如果结论成立,对于应用密码学社区来说,这将是非常糟糕的一天/一周/一个月/一年。
这里没有详细阐述,而是快速通过五个要点给出背景。
密码学家喜欢在被认为“困难”的数学问题之上构建现代公钥加密方案。实践中,我们需要具有特定结构的问题:我们可以为那些持有秘密密钥或“陷门”的人构建高效的解法,同时认为对于不持有秘密密钥的人没有高效的解法。虽然已经考虑了许多问题(并且经常被弃用),但我们今天使用的大多数方案都基于三个问题:因子分解(RSA 密码系统)、离散对数(Diffie-Hellman、DSA)和椭圆曲线离散对数问题(EC-Diffie-Hellman、ECDSA 等)。
虽然我们愿意相信我们喜欢的那些问题从根本上来说是“难的”,但我们知道事实并非如此。研究者已经设计出算法(Kurt Pan注:原文链接到Shor算法。)可以非常高效地(即在多项式时间内)解决所有上述问题——前提是有人知道如何构建一台足够强大的量子计算机来运行攻击算法。幸运的是,这样的计算机还没有被制造出来!
尽管量子计算机还没有强大到足以破解我们的公钥密码,但仅仅是未来的量子攻击的威胁已经激励工业界、政府和学术界联手以“护戒使者”式的方式(Kurt Pan 注:原文链接为NIST PQC竞赛,用《魔戒》中人类、精灵、矮人、巫师、霍比特人联合组成的护戒分队进行比喻。)现在就开始进行应对。这不仅仅是为了让我们的系统面向未来:即使量子计算机需要几十年的时间来建造,未来的量子计算机也可能破解我们今天发送的加密消息!
这些是新结果的背景。
陈的(尚未经过同行评议的)预印本提出一种新的量子算法,可以高效解决具有特定参数的格中的“最短独立向量问题”(SIVP 以及 GapSVP)。如果成立,该结果可能(使得未来的量子计算机(带有许多重要需要注意点地)可以攻破依赖于这些问题的特定实例的难度的方案。好消息是,即使结果正确,易受攻击的参数也非常具体:陈的算法并不立即适用于最近标准化的 NIST 算法,比如 Kyber 或 Dilithium。此外,该算法确切的具体复杂度尚不清楚:即使量子计算机变得可用,该算法也可能无法实际运行。
但我们领域有一句话,攻击只会变得更好。如果陈的结果可以得到改进,那么量子算法可能会淘汰一整代基于格的所谓“后量子”方案,迫使密码学家和业界(https://security.apple.com/blog/imessage-pq3/ ,https://signal.org/blog/pqxdh/ ,https://bughunters.google.com/blog/5108747984306176/google-s-threat-model-for-post-quantum-cryptography)重新开始。
换句话说,这既是一项伟大的技术成果,也可能是一场微型灾难。(Kurt Pan注:对于相关方向诸多PhD和项目工程师,可能就是沉重的打击。)
如前所述:我既不是基于格的密码学也不是量子计算方面的专家。这些人正忙于验证这篇文章:之前历史上不少重大的结果经过详细检查后都分崩离析了。对于那些寻找最新进展的人来说,这里是 Nigel Smart 写的一篇不错的文章,没有解决这个问题量子算法的正确性(也请参阅下述更新),但确实讨论了对 FHE 和 PQC 方案的可能影响(简而言之:对某些 FHE 方案不利,但实际上取决于算法运行时间的具体细节。) [[近期量子攻击对 LWE 的影响]]
https://eprint.iacr.org/2024/583.pdf 这是关于发现论文中“错误”的另一个简短笔记,作者陈一镭似乎很快就解决了这个问题。
直到本周,我还打算写另一篇关于复杂性理论、格及其对应用密码学意味着什么的长篇文章。但基于现状,我希望你能原谅我,如果再延迟些发布的话。
https://nigelsmart.github.io/LWE.html
阅读论文的更新
今天我更详细地查看了论文的第 3 节, 其中更详细地给出了攻击参数。
这部分将输入的LWE问题(现在LWE维度被称为而不是,并且作者设置以便于分析)与选择自错误分布的密钥,但是选择为攻击者所选择的个值的问题相对应。
基本上为, 带有参数的错误分布的输入问题
与问题
之间存在映射关系。
然后选择奇互素值 , 使得
其中。对于较小的值,可以预期会等于1或2,除非选择(从而)为很大的值。因此,的选择也会影响需要从多少个LWE样本(即)开始(请参见下面关于增加对具体LWE问题实例意味着什么的评论)。
秘密密钥的个部分被选择为。现在的关键是求解方程
,其中向量 b 具有特殊形式
该算法的工作原理是猜测。引理 3.6 告诉我们, 对于至少有个这样的选择。事实上, 有很高概率有
要点一:这意味着此时的复杂度似乎至少为,因为需要从大约大小的范围中猜测。
之后,3.3 节定义了一系列常量和约束,使主量子子程序能够工作,并成功解决底层的LWE 问题。
约束 C. 3 似乎是一个问题。对于 的猜测值, 我们需要找到一个值使得
并且我们需要选择使得
我能让事情按顺序解决的唯一方法如下(这几乎就是作者所建议的):
为选择一个值。
设置。
使用引理中的界来猜测 的值, 即 。我们有约束 , 因此只需要考虑的粗略估计值 。
现在将 分解为互素的 以获得某个 值。
尽管使用此方法, 我仍无法使条件成立。注意作者在论文中的示例是 而不是 。所以也许这是一个拼写错误!
假设我们猜测的是素数, 并且是一个正确的值。然后我们必须有和。此时似乎没有理由应该有 。还会有
这显然不能成立。因此, 为了使分解为有意义, 我们确实需要为特殊值。所以有些事情看起来很奇怪!
例如, 假设我们输入的 LWE 样本是对方阵的
然后, 为了生成新样本, 可以将右侧的方程乘以一个矩阵, 该矩阵包含小值, 不是太稀疏, 但小值也不是太小。即将形成系统
但现在噪声值已从上升到。这会增加的值, 从而增加上面的值, 从而增加攻击的复杂度。
https://nigelsmart.github.io/LWE.html
所以昨天我遇到了条件 C. 3 的两个问题。这些都通过和一镭的沟通得到了一定的解决。
了解这些后, 考虑假设或假设已固定的这两个修复后,让我们重新审视 C. 3 并提出一种算法,
选项 A:设置
问题是,我们应该选择多大的?
同样,我们知道,并且也知道(假设)的大小将由项主导。由于与相比很小,我们基本上会得到类似这样的东西
回想一下, 对 Kyber 和 BGV ,, 对Dilithium, 对TFHE。如上所述,这是假设对需要生成更多样本不需要增加, 因此对的这些假设是最好的可能情况。
当时,需要
即,
注意, 要得到,需要比这里的大。不管怎么想, 这都是非常大量的 LWE 样本数。
当时,我们得到
即
注意, 这里总是会得到, 无论值如何。
选项 B:设置
现在的问题是,我们应该选择多大的互素值?
同样, 我们知道并且我们也知道(假设)的大小将由项主导。由于相比很小,我们基本上会得到类似下式的东西
所以
使用,需要
即
但是要获得这样的互素值我们需要, 即。这又是大量的样本数。
使用,需要
即
任意值都会导致这样的互素值存在。
通过削弱近似因子, 我们可以为互素的和值选择实用值。我们看到, 对于 Kyber、Dilthium 和 BGV, 需要的样本数量将非常大才能选择此类互素值, 但是对于 TFHE, 值非常大,这种互素数的存在是直接的, 因为这迫使确实非常大。
第二个要点:对于较小的值, 使攻击起作用所需的样本数量确实会非常大。
选择了的值后, 我们就固定了对的猜测。但这个猜测可能是错误的。事实上, 其正确的概率约为
因此, 我们需要继续执行攻击, 通过随机化输入样本来调整参数(如上所述)。直到攻击起作用。
所以需要重申上述的要点一。要点一(回顾),复杂度至少为因此, 如果很大, 比如在TFHE中, 这已经是不行的了。我们继续假设是正确的。因此, 选择互素值后, 需要为选择一个值, 论文称该值应该是奇数以及 。目前我们假设它已被选择。
然后设置
现在我们需要确定以确保条件C.2满足,定义为
注意到
所以条件 C. 1 已经满足。条件 C. 1 中唯一不满足的是。
然后需要从条件 C. 4 中选择的值。相关的不等式是
和
注意第二个不等式蕴含下式
即
代入我们上面的值, 有
值我们可以忽略 。
要点三:注意这意味着该攻击不适用于 TFHE 的标准参数, 因为, 并且TFHE中乘以得到的太小, 无法应用攻击。
要点四:该攻击不适用于 Kyber、Dilithium 或 BGV,因为此处所需的的大值(如上所述)也意味着这些方案中使用的值太小了。
在条件 C. 7 中,的值实际上被选择为
最后要选择的参数是, 它是通过
从条件 C. 5 中选择的。
然后还有一些额外的条件, 即条件 C. 6 和 C.7, 它们定义了各种参数的范围。我的理解是这些会影响算法获得的近似因子。