← 最新论文
💻 computer science

Trusting the Null: Positive-Control Fuzzing of Post-Quantum Decode and Verify Paths in Java

本文表明,尽管大规模模糊测试活动未在 Bouncy Castle 1.85 的后量子解码与验证路径中发现缺陷,但阳性对照方法通过成功揭示 Bouncy Castle 1.84 及多个 JDK 版本中的关键长度校验漏洞,验证了测试套件的有效性,并显示这些实现仅在检查的时机上存在差异,而非决策逻辑上的差异。

原作者: Arpan Sharma

发布于 2026-09-10
📖 1 分钟阅读☕ 轻松阅读

原作者: Arpan Sharma

原始论文采用 CC BY 4.0 许可(https://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

在互联网的隐形架构中,一个庞大的数字锁与钥匙系统保护着从银行账户到私人消息的一切。几十年来,这些锁依赖于那些易于创建但即使是最强大的计算机也几乎无法破解的数学问题。然而,科学家们早已预言,一种基于量子物理奇特规则运行的新型计算机终将到来。当它到来时,它能在几秒钟内破解那些旧锁。为了应对这个未来,研究人员现在正在推出基于不同数学结构的下一代数字锁,这些结构是量子计算机难以破解的。政府和大型技术公司正在采用这些新系统,以确保未来几十年互联网的安全。

这种新安全系统中最关键的时刻发生在计算机第一次接收到消息时。在检查消息是否真实或解锁秘密之前,它必须首先将一段原始数据流转换为可用的密钥或签名。这个转换步骤是系统的“前门”。如果门造得不好,攻击者不需要破解锁,只需要用错误的形状物体去推把手即可。如果门接受了一个畸形的物体,整个系统可能会崩溃、挂起,甚至更糟——被诱骗接受一个伪造的钥匙。确保这些前门能够拒绝每一种可能的错误形状,与确保锁本身坚不可摧同样重要。

最近,独立研究员 Arpan Sharma 的一项研究专门针对这些新型抗量子系统的这个“前门”,特别是针对运行着世界上大部分软件的 Java 编程语言。研究人员测试了这两个主要的实现方式:一个是提供给广泛使用的安全库 Bouncy Castle 的实现,另一个是直接构建在 Java 平台内部的实现。其目标不是看数学在完美数据上是否运作正确,而是观察当软件被喂入数百万个随机、破碎且具有攻击性的输入时会发生什么。研究人员想知道,软件是会通过拒绝这些坏输入来优雅地处理,还是会踉跄、崩溃,或者在不知情的情况下接受一个危险的错误。

为了做到这一点,研究人员构建了一台充当无情的自动化攻击者的测试机。它生成了 90 种不同的数据变体,从稍微修改的有效密钥到完全无意义的字节流,并将它们喂给软件。这台机器密切观察软件的反应。它寻找任何崩溃的迹象、任何软件不该显示的意外错误消息,或者任何软件将坏密钥当作好密钥接受的情况。当前版本 Bouncy Castle 库的结果非常干净。在 90 万次尝试中,软件准确地拒绝了每一个畸形的输入,没有抛出任何意外错误,也没有接受任何坏密钥。

然而,在科学测试中,一个表示“没有出错”的结果往往难以令人信任。很有可能测试机本身太笨拙,没能发现问题,或者软件只是运气好。为了证明该测试确实有能力发现缺陷,研究人员使用了一个被称为“阳性对照”(positive control)的聪明技巧。他们让同样的测试机对运行着已知存在特定现实世界缺陷的旧版本 Bouncy Castle 软件进行测试。在几秒钟内,机器就找到了缺陷。它发现旧软件会接受一个尺寸错误的公钥,这种错误可能导致后续过程中的崩溃。由于机器成功找到了旧版本中的已知问题,因此在处理新版本时未发现问题的结果,就成为了一个值得信赖的确认,证明新软件确实是健壮的。

当研究人员将这种严谨的测试应用于直接构建在 Java 平台中的新型抗量子代码时,结果揭示了另一种类型的问题。Java 软件并没有崩溃或接受伪造签名(这是最危险的结果),但它在处理坏数据的方式上表现出了细微的差异。Java 系统会接受任何长度的公钥,即使是空密钥或过短的密钥,也不会在进入瞬间发出警报。它只会在实际执行任务使用该密钥时才进行检查。如果密钥太小,系统才会停止并报告错误。虽然这最终防止了灾难,但这意味着软件曾短暂地持有了一个损坏的密钥,并在短时间内将其视为有效。

这种行为在三个不同版本的 Java 平台上表现一致。软件最终做出了与 Bouncy Castle 库相同的决定:拒绝了坏密钥。区别纯粹在于时机。Bouncy Castle 库在收到密钥时立即检查其大小并立即拒绝;而 Java 平台先接受密钥并存储它,直到使用它时才拒绝。这种区别很重要,因为它表明虽然两个系统都能防止即时崩溃,但它们处理准入规则的方式不同。这项研究还强调了对于任何测试此类复杂软件的人来说的一个更广泛的教训:有时,缺陷只有在两个不同的系统部分相互作用时才会显现,例如有效的签名配对一个坏的密钥。孤立地测试各个部分往往会错过这些隐藏的危险。

研究还揭示了测试过程本身的一个隐藏障碍。运行测试的计算机系统有一个内置功能,旨在通过简化重复出现的错误消息来加速操作。在涉及数十万个输入的庞大测试中,这个功能会悄悄地剥离错误的细节,使得测试机无法分辨一个崩溃是真实的意外失败,还是一个已知问题。研究人员必须手动禁用此功能,以确保测试结果的准确性。这一发现表明,对于现代软件的大规模安全测试,标准设置有时会掩盖研究人员试图寻找的问题。

最终,这项研究为这些新型抗量子锁在现实环境中的表现提供了清晰且经过验证的图景。当前版本的 Bouncy Castle 库表现出高度的韧性,能够立即且一致地拒绝坏输入。Java 平台也是安全的,尽管它采取了略微不同的路径,在拒绝之前会短暂持有坏密钥。通过使用阳性对照来验证测试方法,研究人员确保了针对新软件的“未发现问题”的结果是真正的强大表现,而非测试本身的失败。随着互联网准备转向这些新的安全标准,这种详细且经过压力测试的保证,对于确保这些新门能够抵御充满敌意的世界至关重要。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →