← 最新论文
💻 computer science

Retrofit or Redesign? Hardware-Validated Constant-Time Defense and Cost Analysis for the M-Step Side-Channel on TrustZone-M

本文通过在 Arm TrustZone-M 上的真实硅片验证表明,针对常数时间执行对加密算法进行重新设计优于后期补救,因为后者不仅会产生高出约两个数量级的成本,而且还存在保留可被利用的控制流泄漏的风险,而这类泄漏只有通过逐指令验证才能检测出来。

原作者: Arash Razban

发布于 2026-07-17
📖 1 分钟阅读☕ 轻松阅读

原作者: Arash Razban

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

想象一下,你是一位秘密金库的守护者,开启金库的唯一方法是解开一个复杂的数学谜题。在数字安全世界中,这个谜题通常是一个“模逆”(modular inversion)计算,它是用来锁定和解锁信息的工具。多年来,专家们一直认为,如果让解开谜题所需的时间每次都保持一致,那么没有人能窃取秘密。这被称为“常数时间”(constant-time)安全。其核心思想是,如果窃贼无法通过观察门开启所需的时间长短来判断你是在苦思冥想还是在随手猜测,那么你的安全就是可靠的。

但现在出现了一种狡猾的新技巧,叫做“单步攻击”(single-stepping attack)。想象一下,一个窃贼不仅是在等待门开启,他还拥有一个神奇的秒表,可以在你解谜过程中的每一步之后都冻结时间。他可以观察你在迷宫中采取的具体路径。如果你的迷宫中有只有在知道答案时才会使用的秘密捷径,窃贼一旦看到你走了捷径,就能识破你的秘密。这篇论文探讨了安全工程师面临的一个高风险抉择:当发现漏洞时,你应该尝试修补那个漏水的旧迷宫,让它看起来整齐划一(即“补丁/改装”,retrofit),还是应该将其拆除,并从设计之初就构建一个没有任何捷径的新迷路(即“重新设计”,redesign)?答案不仅仅关乎哪种方式更快,更关乎哪种方式能真正阻止窃贼窥视你的秘密。


大迷宫补丁:改装还是重构

在这项研究中,Arash Razban 及其团队解决了一个现实世界的安全漏洞(编号为 CVE-2025-54764),该漏洞存在于一个广泛用于保护小型嵌入式计算机(如智能卡或医疗设备)数据的流行库中。漏洞位于“二进制 GCD”和“模逆”例程中——这本质上是处理密钥的数学引擎。一名使用“M-Step”技术的黑客可以通过在计算机执行每条指令后将其冻结,从而观察数学运算所经过的路径,进而窃取秘密密钥。

研究人员在真实的硅片硬件(Cortex-M33 芯片)上进行了一场正面交锋,以测试哪种防御策略效果更好:改装(The Retrofit)还是重构(The Redesign)

改装(补丁工程):
团队试图修复原本有漏洞的数学例程。他们采用了原始代码(该代码带有依赖于秘密的捷径,就像一个带有隐藏门的迷宫),并强迫它每次都走相同的路径。他们通过让代码运行经过每一个可能的步骤(即使是那些并不需要的步骤),并使用“无分支”(branchless)技巧来隐藏实际采取的路径。这就像是强迫一名跑步者无论出口在哪里,都必须跑遍房子里的每一个房间,这样观察者就无法得知他实际上是从哪个房间离开的。

重构(新建工程):
另一种选择是完全抛弃旧的数学算法,取而代之的是一个全新的算法(称为 safegcd),它是从底层开始构建,旨在确保没有任何捷径。这个新迷宫拥有一条固定的路径,无论秘密是什么,看起来都完全一样。

令人震惊的结果:速度与隐秘的泄漏

研究人员测量了两件事:运行这些防御措施的成本(时间与能量),以及它们是否真的阻止了窃贼。

1. 补丁的代价
结果令人震惊。“重构”方案极其高效。然而,“改装”在速度方面简直是一场灾难。

  • 对于 GCD 例程,改装比重构慢了 192 倍
  • 对于模逆运算,改装比重构慢了 532 倍

为了让你有直观的概念,在他们测试的硬件上,重构后的例程只需毫秒级即可完成。而改装后的例程呢?它需要秒级时间。具体来说,改装后的 GCD 每次调用大约需要 4.5 秒,而模逆运算竟然耗时 25 秒。对于一个需要瞬间解锁门锁或签署信息的设备来说,等待 25 秒几乎是毫无意义的。重构不仅更好,而且是让设备能够正常使用的唯一选择。

2. “幽灵”泄漏
这里是故事变得最有趣的地方。研究人员原本以为“改装”是成功的。当他们测量运行总时长时,改装看起来非常完美。不同秘密之间的运行时间差异不到 2%,这在通常情况下被认为是“安全”的。

但是,随后他们使用了一种超高精度的工具,逐步检查计算机执行的精确指令。他们发现了一个“幽灵泄漏”。

  • 在“改装”中,在数学过程的最末端存在一个微小的、隐藏的循环。对于大多数输入,它运行固定次数;但对于一个特定的秘密,它会多运行一次
  • 这个额外的步骤仅增加了几十个时钟周期。由于总运行时间非常巨大(数十亿个周期),这个微小的差异在标准的计时测试中是完全不可见的。这就像是在一部 25 秒长的电影中,窃贼注意到了一次额外的眨眼。
  • 而 M-Step 攻击者,这种观察每一步动作的攻击者,就会看到这次额外的眨眼,并由此精准推断出秘密。
  • 研究人员不得不回头去修复这个微小的循环,将其替换为固定序列,才真正关上了这扇门。

结论:重建,而非修补

论文向安全工程师传达了一个明确的信息:不要尝试修补这类特定的数学例程。

  1. 重构才是王道: “由设计实现常数时间”(constant-time-by-design)的方法(即“重构”)具有压倒性优势。它比尝试修补旧代码要快约 两个数量级(100 倍)
  2. 计时测试会撒谎: 你不能信任标准的计时测试来告诉你一个补丁是否安全。一个补丁在秒表下看起来很完美,但仍可能存在微小的、可被利用的泄漏,而这种泄漏只有“单步”攻击者才能察觉。
  3. 检查步骤,而非时钟: 要确定防御是否奏效,你必须验证精确的指令序列(所走的路径),而不只是总共花费了多少时间。

研究人员发现,即使在修复了幽灵泄漏之后,仍然存在极微小的时间变化(约 2%)。然而,他们证明了这并非秘密泄漏,而是硬件本身根据处理的数据产生行为差异的现象——这是一个即使是最优秀的软件也无法消除的“硬件底噪”。但至关重要的是,计算机采取的路径现在变得完全一致了,这意味着窃贼无法再通过观察步骤来学习秘密。

简而言之:当涉及到这些关键的数学秘密时,不要试图修补旧房子。把它拆掉,从头开始建造一座设计之初就具备安全性的新房子。它更快、更安全,而且你不会错过补丁留下的那些细微裂缝。

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

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

试用 Digest →