← 最新论文
💻 computer science

Protecting Cryptographic Libraries against Side-Channel and Code-Reuse Attacks

本文分析了主流密码库在侧信道攻击和内存破坏攻击面前的安全漏洞,评估了其现有防御措施,并针对其开发流程提出了改进建议。

原作者: Rodothea Myrsini Tsoupidi, Elena Troubitsyna, Panos Papadimitratos

发布于 2026-05-21
📖 1 分钟阅读☕ 轻松阅读

原作者: Rodothea Myrsini Tsoupidi, Elena Troubitsyna, Panos Papadimitratos

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

想象一下,加密库就像是互联网的高科技金库。它们是锁定你的密码、加密你的消息并验证你身份的软件工具。没有它们,我们的数字世界将完全暴露。然而,本文认为,即使是最好的金库也有薄弱环节,而建造它们的人(开发者)以及他们用来建造的工具(编译器)并不总是能充分保护它们。

以下是使用简单类比对该论文主要观点的分解。

1. 两种类型的窃贼

论文确定了攻击者试图攻破这些数字金库的两种主要方式:

  • “秒表窃贼”(侧信道攻击):
    想象一个不试图撬锁的窃贼。相反,他们站在金库外面倾听。他们注意到,当守卫尝试某把特定的钥匙时,金库门关闭发出“咔哒”声所花的时间,比尝试错误钥匙时略长。通过测量这些微小的差异,窃贼可以在不触碰锁的情况下推算出秘密代码。

    • 论文观点: 加密代码通常包含“依赖秘密”的步骤。如果代码的运行时间根据秘密密码的不同而有所变化,黑客就可以利用秒表窃取该密码。
  • “复制粘贴劫持者”(代码重用攻击):
    想象一个用混乱、不安全语言写成的图书馆。窃贼发现地板有个洞(内存错误),并扔下一颗炸弹炸坏了地板。一旦地板破裂,窃贼就不需要制造新武器;他们只需从图书馆的储藏室里拿起原本就放在那里的锤子、锯子和梯子。他们将这些现有的工具“缝合”在一起,爬出去并接管大楼。

    • 论文观点: 许多库是用 C 或 C++ 等允许内存错误的语言编写的。黑客利用这些错误劫持程序的流程,使用库内部已有的微小、无害的代码片段来发动大规模攻击。

2. 金库的现状

作者研究了11 个流行的加密库(如被数百万网站使用的 OpenSSL),以查看它们的保护程度。

  • “秒表”问题: 大多数开发者了解定时攻击,并试图通过编写无论何种情况都花费完全相同运行时间的代码来修复它们。然而,论文发现,11 个库中只有 2 个实际上对其最终产品进行了测试,以确保“秒表”伎俩无效。这就像厨师在上菜前尝了汤,却忘了检查盐是否真的溶解了。
  • “复制粘贴”问题: 开发者使用标准安全工具(如“栈金丝雀”,类似于绊线)来阻止内存错误。虽然这些工具有所帮助,但并不完美。论文发现,大多数库未使用可用的最强安全设置,使它们容易受到复杂的劫持攻击。

3. 破碎的蓝图(编译器问题)

这是论文论证的核心。开发者编写代码(蓝图),但编译器是将该蓝图转换为实际工作机器码的机器。

  • 冲突: 编译器旨在使代码快速且高效。它们就像一位非常热切的编辑,想要剪掉任何“废话”以使故事更短。
  • 错误: 有时,编译器剪掉的“废话”实际上是安全措施。例如,开发者可能会编写额外的代码以确保某个过程花费相同的时间(以阻止“秒表窃贼”)。编译器认为这些额外代码是无用的浪费,便将其删除。结果呢?代码再次变快,但安全漏洞又回来了。

4. 工作的新工具(安全编译)

论文建议我们需要一种新的“编辑”或编译器,它在理解安全方面与理解速度一样好。他们测试了四种不同的实验工具:

  1. “守护者”(SecComp): 该工具允许开发者将代码的某些部分标记为“禁止触碰”。它强制编译器保留安全措施。缺点:目前尚不可免费使用。
  2. “洗牌者”(多编译器/MCR): 该工具在每次构建程序时都会重新排列代码中的“家具”。这就像每天将锤子和锯子移到不同的房间。如果窃贼闯入,他们找不到所需的工具,因为布局已经改变。缺点:如果用于阻止“秒表窃贼”,它会显著减慢程序速度。
  3. “建筑师”(SecDivCon): 该工具从一开始就将安全规则融入代码构建中,确保最终产品既快速又安全。缺点:构建时间非常长,且仅适用于小型特定任务。
  4. “线性化器”(PCFL): 该工具自动将混乱的代码重写为一条笔直、可预测的线,使其无法被计时。缺点:它无法阻止“复制粘贴劫持者”攻击。

5. 最终裁决

论文得出结论,我们目前陷入了速度安全之间的差距。

  • 开发者正试图手动编写安全代码,但往往失之毫厘。
  • 编译器过于关注速度,无意中删除了安全功能。
  • 现有工具要么太慢,要么太复杂,要么无法涵盖所有类型的攻击。

解决方案: 作者呼吁进行三方努力:

  1. 编译器制造商需要赋予开发者更多控制权,使他们能够说:“即使这看起来很慢,也不要删除这个安全功能。”
  2. 安全编译器制造商需要构建能够同时处理定时攻击和劫持攻击的工具,而不仅仅是其中一种。
  3. 库开发者需要停止依赖运气,开始使用这些新的、更安全的编译工具,以确保他们的金库真正上锁。

简而言之:我们拥有安全金库的蓝图,但建造它们的机器太急于走捷径。我们需要教导这些机器将安全置于与速度同等重要的地位。

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

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

试用 Digest →