电磁攻击、对策与蒙哥马利乘法泄漏解析
电磁攻击与防护基础
电磁攻击是一种利用设备电磁辐射泄漏信息的攻击方式。在许多系统中,存在一些不良指令,特别是智能卡中,ALU 密集型指令比总线密集型指令更容易导致信息泄漏,这些指令为攻破抗功耗分析的实现提供了途径。
很多功耗分析对策基于这样一个假设:一旦基本执行序列能抵御简单功耗分析(SPA)攻击,每个功耗轨迹中的噪声和不确定性就足以防止直接恢复敏感信息。然后,可以使用诸如掩码和非线性密钥更新等技术进一步放大这种不确定性,防止攻击者从多个样本中获取信息。然而,如果在抗差分功耗分析(DPA)的实现中使用了不良指令,那么单个样本泄漏有限的假设就会被打破,从而产生安全漏洞。例如,如果电磁泄漏非常大,那么抗 DPA 的实现可能容易受到单发射电磁分析(SEMA)攻击;如果电磁泄漏适中,就有可能对掩码 DPA 对策进行高阶电磁攻击。
要评估设备对电磁和其他侧信道攻击的脆弱性,必须有一套评估方法来确定泄漏的程度和对策的有效性。由于电磁攻击存在多个可能的拦截点,且在每个拦截点通过考虑不同的载波和解调方式可以获得多个电磁信号,因此评估过程相当复杂。需要考虑不同类型的攻击者和攻击类别,从只能一次捕获一个信号的低成本攻击者,到能够捕获多个信号并执行复杂信号处理操作的强大攻击者,甚至是能够从有限的传感器集合中捕获任意数量信号并对这些信号进行任何可行处理的无界攻击者。
电磁攻击防护对策
电磁分析的防护对策包括重新设计电路以减少无意的辐射,以及降低攻击者观察到的信噪比(S/N)的技术。具体如下:
-
电磁屏蔽和添加噪声
:使用电磁屏蔽材料或引入额外的噪声可以降低 S/N 比。
-
设置物理安全区域
:限制进入的物理安全区域可以防止攻击者捕获强电磁信号。
一种系统地最小化电磁暴露的方法是在设备或系统的设计和开发的每个阶段都关注这个问题。然而,在实际的基带通信或数据处理电路设计中,很少关注抑制无意的辐射。设计工程师往往没有意识到组件选择、互连或布局在最小化信号辐射方面的重要性,这导致在设备需要证明无 TEMPEST 危害时,可能会检测到不期望的信号辐射。
当基本的电磁泄漏被最小化以防止 SEMA 式攻击后,可以使用在 DPA 中使用的其他基于随机化的对策,如随机掩码、使用共享计算或对敏感信息进行非线性更新,来对抗差分电磁分析(DEMA)攻击。
电磁攻击相关项目实践
进行这些项目需要一个宽带无线电和嵌入式设备,如手机或 PDA。
1.
确定处理器时钟频率和谐波
:使用宽带无线电确定处理器的时钟频率和谐波,并通过检查设备规格进行验证。也可以使用专业设备快速确定设备内的时钟信号。
2.
检测潜在电磁侧信道
:
- 编写一个程序,使其以大约 1000 Hz 或其他可听范围内的频率循环,直到按下某个键或按钮。
- 在 PDA 上执行该程序,然后使用 AM 或 FM 解调缓慢扫描无线电覆盖的频谱部分。如果处理器时钟和谐波在无线电覆盖的频段内,应该能够在几个不同的中心频率听到 1000 Hz 的音调,每个频段都代表一个潜在的电磁侧信道,泄漏处理器内计算的信息。
3.
设置电磁捕获设备进行攻击
:在确定了 CPU 泄漏的电磁频段后,可以根据这些信息设置电磁捕获设备,并对设备进行 SEMA/DEMA 攻击。
4.
定位设备显示的有害辐射
:在操作设备显示的信息时,缓慢扫描无线电覆盖的频谱部分。当屏幕变化时,在几个频率上应该能够听到可听声音,这些频率就是屏幕内容信息可能泄漏的频率。实际捕获屏幕的攻击将取决于显示刷新的具体方式。
5.
电磁传播实验
:
- 首先进行实验 2,获得指示设备电磁泄漏的 1000 Hz 音调。
- 将运行程序的设备放在完全封闭的金属盒(或用铝箔覆盖的纸板盒)内,观察接收器是否能在金属盒外捕获 1000 Hz 音调。
- 然后将设备放在有一个或几个小开口的金属盒上,再次尝试用接收器获得 1000 Hz 音调,并移动接收器以确定信号最强的位置。
蒙哥马利乘法算法概述
模乘法 (P = A×B \mod M) 是大多数公钥密码学中的基本操作,其效率通常对系统的整体效率至关重要,因为它是模幂运算和椭圆曲线点乘法的主要组成部分。有几种算法可以用于执行模乘法,其中 Barrett、蒙哥马利和 Quisquater 的算法最为著名。大多数可以应用于一种模乘法算法的优化也可以应用于其他算法,因此它们的总体复杂度相同。然而,蒙哥马利方法的实现更为直接,通常在实现优化时所需的工作量较少。
蒙哥马利约简
模乘法实际上是乘法和模约简两个过程的组合。这两个过程通常为了空间效率而交错进行,这使得中间值保持在模数的很小倍数范围内,这种方法也称为集成方法。而分离技术则是先完全执行乘法,然后再对乘积进行模约简。
蒙哥马利约简的定义如下:
- 假设正整数 (M) 和 (R) 没有公因数,若 (A’) 满足 (A’ \equiv AR^{-1} \mod M) 且 (AR^{-1} \leq A’ < AR^{-1} + M),则 (A’) 称为 (A) 模 (M) 相对于 (R) 的蒙哥马利约简。
- 反之,若 (A) 满足 (A \equiv AR \mod M),则 (A) 称为 (A) 相对于 (R) 的蒙哥马利表示或蒙哥马利余数。当 (R) 明确时,(A) 称为 (M) - 余数。
蒙哥马利约简 (A’) 可以通过找到满足 (A’R - QM = A) 且 (Q) 在区间 ([0…R[) 内的整数 (A’) 和 (Q) 来获得。当 (R = r^n) 时,可以使用与 Hensel 引理相同的过程迭代求解该方程。
以下是实现蒙哥马利模约简的代码:
Function MonRed(A,M,r,n): A′
Pre-condition: M and r are co-prime.
Post-condition: A′ ≡Ar−n mod M with Ar−n ≤A′ < Ar−n+M.
A′ ←A
For i ←0 to n−1 do
qi ←−a′0m−10 mod r
A′ ←(A′ +qiM) div r
Return A′
在这个过程中,循环中 (q_i) 的选择保证了除以 (r) 的操作是精确的。通过选择合适的 (n),使得 (A < Mr^n),输出 (A’) 满足 (A’ < 2M),再进行一次额外的条件减法就可以得到 (AR^{-1} \mod M) 的最小非负余数。与经典的模约简不同,商数字 (q_i) 的选择不依赖于 (A’) 的最高有效位,而是最低有效位,这意味着可以在不等待前一次循环迭代中的进位传播完成的情况下精确确定 (q_i),这对于在执行数字级计算的脉动阵列中的应用非常有利。
蒙哥马利模乘法
蒙哥马利模乘法可以通过将乘法和约简过程交错进行来获得 (A×B \mod M) 的蒙哥马利约简。以下是实现蒙哥马利模乘法(无条件减法)的代码:
Function MonPro(A,B,M,r,n): C
Pre-condition: M and r are co-prime, B = ∑n−1i=0 biri < rn.
Post-condition: C ≡ABr−n mod M and ABr−n ≤C < M+ABr−n.
C ←0
For i ←0 to n−1 do
qi ←−(c0 +a0bi)m−10 mod r
C ←(C +biA+qiM) div r
Return C
在计算过程中,部分积 (C) 始终小于 (M + A),这为存储 (C) 的寄存器大小提供了一个边界。对于大多数应用,(M < r^n) 且 (A < r^n),因此 (C) 需要比 (r^n) 多一位。在除以 (r) 对应的移位操作之前,可能还需要一个额外的字来存储中间结果。
通常,蒙哥马利模乘法的算法会包含一个最终的条件减法,以得到小于 (M) 的输出。但在上述第一个版本中省略了这一步,原因有三:一是在用于幂运算时不需要;二是它是侧信道泄漏的一个重要来源;三是对于非完全约简的输入,可能需要多次减去 (M)。不过,有两个有用的版本包含了最终的条件减法:
Function MonPro(M)(A,B,M,r,n): C
Pre-condition: M and r are co-prime, A < M, B < rn.
Post-condition: C ≡ABr−n mod M and C < M.
C ←MonPro(A,B,M,r,n)
if C ≥M then C ←C −M
Function MonPro(R)(A,B,M,r,n): C
Pre-condition: M and r co-prime, A<R, B<R, M<R for R = rn.
Post-condition: C ≡ABr−n mod M and C < R.
C ←MonPro(A,B,M,r,n)
if C ≥R then C ←C −M
这两个版本的输入边界决定了输出边界,并且输出可以作为同一算法另一次执行的输入,这对于涉及幂运算的应用非常方便。其中,第二个版本(以 (R) 为边界)效率略高,因为比较操作更容易实现,通常只需要查看溢出位,而不需要进行可能的减法操作。
综上所述,无论是电磁攻击的防护还是蒙哥马利乘法算法的实现,都需要在保证功能和效率的同时,充分考虑安全问题,采取相应的措施来减少信息泄漏和提高系统的安全性。
以下是蒙哥马利模约简和模乘法的流程对比表格:
| 算法 | 流程步骤 | 特点 |
| — | — | — |
| 蒙哥马利模约简 | 1. 初始化 (A’) 为 (A);2. 循环 (n) 次,计算 (q_i) 并更新 (A’);3. 返回 (A’) | 商数字 (q_i) 依赖最低有效位,利于脉动阵列应用 |
| 蒙哥马利模乘法(无减法) | 1. 初始化 (C) 为 0;2. 循环 (n) 次,计算 (q_i) 并更新 (C);3. 返回 (C) | 乘法和约简交错,部分积 (C) 有边界限制 |
以下是蒙哥马利模乘法(有条件减法)的 mermaid 流程图:
graph TD;
A[开始] --> B[执行 MonPro(A,B,M,r,n)得到 C];
B --> C{C ≥ M 或 C ≥ R?};
C -- 是 --> D[C = C - M];
C -- 否 --> E[输出 C];
D --> E;
通过以上的分析和实践,我们可以更深入地理解电磁攻击和蒙哥马利乘法算法的原理和应用,为提高系统的安全性和性能提供有力的支持。
电磁攻击、对策与蒙哥马利乘法泄漏解析
蒙哥马利乘法的侧信道泄漏问题
虽然蒙哥马利乘法算法在实现和效率上有诸多优势,但其中的最终条件减法步骤存在侧信道泄漏的风险。侧信道攻击利用系统在执行加密操作时泄露的额外信息,如功耗、电磁辐射等,来推断敏感信息,而最终条件减法可能会通过这些侧信道泄露关于计算结果的关键信息。
为了深入研究这个问题,需要分别分析蒙哥马利算法的主循环和最终条件减法。通过精确确定输出的规范,可以明确通过条件减法侧信道泄露的数据量,从而有针对性地解决泄漏问题。
解决蒙哥马利乘法侧信道泄漏的思路
为了在保留蒙哥马利算法简单高效代码优势的同时,解决侧信道泄漏问题,可以采取以下步骤:
1.
精确分析输出
:分别详细研究主循环和最终条件减法,确定输出的精确规范,明确通过条件减法侧信道泄露的数据量。
2.
改进算法实现
:根据分析结果,对算法进行改进,减少或消除侧信道泄漏。例如,可以采用随机化技术,使条件减法的执行不依赖于敏感信息,或者对关键数据进行掩码处理,增加攻击者分析侧信道信息的难度。
电磁攻击与蒙哥马利乘法的关联
电磁攻击和蒙哥马利乘法的侧信道泄漏问题存在一定的关联。电磁攻击可以通过捕获设备的电磁辐射来获取信息,而蒙哥马利乘法中的侧信道泄漏可能会以电磁辐射的形式表现出来。因此,在防范电磁攻击时,也需要考虑蒙哥马利乘法算法的安全性,采取相应的措施来减少电磁泄漏。
综合防护策略
为了全面保护系统免受电磁攻击和蒙哥马利乘法侧信道泄漏的影响,可以采取以下综合防护策略:
| 防护方面 | 具体措施 |
| — | — |
| 电磁攻击防护 | 重新设计电路减少无意辐射,使用电磁屏蔽和添加噪声降低信噪比,设置物理安全区域防止攻击者捕获强电磁信号 |
| 蒙哥马利乘法防护 | 精确分析输出,改进算法实现,采用随机化和掩码技术减少侧信道泄漏 |
实践应用建议
在实际应用中,可以按照以下步骤来实施防护策略:
1.
评估风险
:对系统进行全面的风险评估,确定电磁攻击和蒙哥马利乘法侧信道泄漏的潜在风险程度。
2.
选择合适的防护措施
:根据评估结果,选择适合系统的防护措施,如电磁屏蔽、随机化算法等。
3.
实施防护措施
:按照选定的防护措施,对系统进行相应的改进和优化。
4.
测试和验证
:对实施防护措施后的系统进行测试和验证,确保系统的安全性和性能满足要求。
总结与展望
电磁攻击和蒙哥马利乘法的侧信道泄漏问题是当前密码学和信息安全领域面临的重要挑战。通过对电磁攻击的防护和蒙哥马利乘法算法的优化,可以有效减少信息泄漏,提高系统的安全性。
在未来的研究和实践中,需要不断探索新的防护技术和算法,以应对日益复杂的安全威胁。同时,还需要加强对系统的安全评估和监测,及时发现和解决潜在的安全问题,保障信息系统的安全稳定运行。
以下是综合防护策略的 mermaid 流程图:
graph TD;
A[开始] --> B[评估风险];
B --> C[选择防护措施];
C --> D[实施防护措施];
D --> E[测试和验证];
E --> F{是否满足要求?};
F -- 是 --> G[结束];
F -- 否 --> C;
通过以上的分析和建议,我们可以更好地理解电磁攻击和蒙哥马利乘法的相关问题,并采取有效的措施来保护系统的安全。在实际应用中,需要根据具体情况灵活选择和实施防护策略,不断提高系统的安全性和可靠性。
超级会员免费看
28

被折叠的 条评论
为什么被折叠?



