47、随机幂运算算法的分析与攻击

随机幂运算算法的分析与攻击

在密码学领域,随机幂运算算法在保障数据安全方面起着重要作用。然而,这些算法并非无懈可击,不同的算法都有其优势和潜在的安全风险。下面将详细介绍几种随机幂运算算法及其可能面临的攻击。

1. 关于算法使用的总体考虑

在使用算法时,需要谨慎考虑其使用场景。对于某些算法,若侧信道泄漏的不确定性增加,会显著提高密钥提取的难度。特别是当侧信道泄漏较低时,才可以在不进行盲化处理的情况下重复使用同一密钥,否则应避免这种做法。

2. Oswald–Aigner 幂运算算法
  • 算法原理
    • 该算法是一种随机化算法,基数固定为 $m = 2$,数字集为 ${-1, 0, 1, 2}$。在数字重编码阶段,随机化发生在数字选择函数 $\text{mod}’$ 中。当 $D$ 为奇数时,选择 $-1$ 或 $1$;当 $D$ 为偶数时,选择 $0$ 或 $2$。不过,选择是有条件的:只有当前一个非零数字为 $-1$ 时才允许选择 $2$;只有在没有进位传播时才允许选择 $-1$。当 $D = 1$ 时选择 $1$,当 $D = 2$ 时选择 $2$ 来终止算法。以下是其数字生成的代码实现:
Input: D ≥0
Outputs: n, and representation of D = (dn−1 ...d2d1d0)2
i ←0
Carry ←False
While D > 0 do
Begin
    If D = 1 then di ←1 else
        If D = 2 then di ←2 else
            If Carry then
                Begin
                    If (D mod 2) = 1 then di ←1 else di ←0 or 2
                    If di ̸= 0 then Carry ←False
                End
            else
                Begin
                    If (D mod 2) = 0 then di ←0 else di ←1 or −1
                    If di = −1 then Carry ←True
                End
    D ←(D−di)/2
    i ←i+1
End
n ←i
  • 幂运算特点

    • 对于幂运算,更倾向于使用从右到左的方法,因为这样数字的消费顺序与生成顺序相同。在椭圆曲线环境中,数字 $-1$ 不会带来问题,因为点减法和点加法一样容易。数字 $2$ 的处理方式是重新排序循环迭代,在点加倍之后而不是之前执行点加法。平均而言,重编码后的数字一半是奇数($+1$ 或 $-1$),一半是偶数($0$ 或 $2$),具体比例为 ${-1, 0, 1, 2}$ 以 $1/8 : 3/8 : 3/8 : 1/8$ 的比例出现。因此,平均时间效率比平方 - 乘法算法略差,因为数字 $2$ 的出现比数字 $0$ 更耗时。
  • 算法攻击

    • 攻击假设 :假设在每次幂运算过程中,能够可靠地区分加法($A$)和加倍($D$)操作,并且同一密钥在未盲化的情况下多次用作指数。
    • 攻击原理 :算法在任何点的行为取决于密钥二进制表示中的局部位模式,这种位模式会反映在 ${A, D}$ 的受限模式集合中。通过分析这些模式,可以推断出位模式。例如,模式 $DAAD$ 仅由重编码 $12$ 或 $\overline{1}2$ 产生,这意味着二进制表示中必然出现对应的位模式 $111$。
    • 攻击步骤
      • 若有足够的跟踪记录来生成给定位位置附近的所有可能操作模式,就可以确定所有 $111$ 的出现位置。
      • 位对 $00$ 总是导致两次加倍且无中间加法,而其他位对可能有中间加法,因此可以识别所有 $00$ 的出现位置。
      • 位模式 $10$ 在其两个位位置的 $D$ 之间总是有一个 $A$,而其他位模式在某些重编码下允许 $D$ 相邻,所以可以确定所有 $10$ 的出现位置。
      • 通过以上两种情况,可以确定每个位 $0$ 以及 $0$ 左侧的每个位。剩余未确定的位必然都是 $1$。
      • 若攻击者的跟踪记录不足,可以查看位对的 $D$ 之间有零个、一个或两个 $A$ 的跟踪记录数量的比例,为每个位对的值分配概率。例如,没有中间 $A$ 会使 $00$ 成为最可能的位对,且随着可检查跟踪记录数量的增加,概率也会增加。
    • 攻击限制 :攻击的准确性关键取决于跟踪记录中所有加倍操作的精确对齐。若使用平衡的加法和加倍代码,可能难以区分加法和加倍操作,即使知道密钥的位,也不清楚如何令人满意地对齐跟踪记录。不准确的对齐似乎会使除两端之外的位的有用数据平均化。因此,该算法的安全性依赖于每次使用时密钥不同,或者难以通过侧信道泄漏可靠地区分加法和加倍操作。

以下是 $29$ 的重编码及其跟踪记录示例:
| 重编码 | 跟踪记录 |
| — | — |
| $1\ 1\ 1\ 0\ 1$ | $DA\ DA\ DA\ D\ DA$ |
| $2\ \overline{1}\ 1\ 0\ 1$ | $AD\ DA\ DA\ D\ DA$ |
| $1\ 2\ \overline{1}\ 0\ 1$ | $DA\ AD\ DA\ D\ DA$ |
| $2\ 0\ \overline{1}\ 0\ 1$ | $AD\ D\ DA\ D\ DA$ |
| $1\ 1\ 1\ 1\ \overline{1}$ | $DA\ DA\ DA\ DA\ DA$ |
| $2\ \overline{1}\ 1\ 1\ \overline{1}$ | $AD\ DA\ DA\ DA\ DA$ |
| $1\ 2\ \overline{1}\ 1\ \overline{1}$ | $DA\ AD\ DA\ DA\ DA$ |
| $2\ 0\ \overline{1}\ 1\ \overline{1}$ | $AD\ D\ DA\ DA\ DA$ |

3. Ha–Moon 算法
  • 第一个算法

    • 算法原理 :该算法基数固定为 $m = 2$,在基数转换算法中采用最通用的二进制有符号数字(BSD)编码。当 $D \equiv 0 \pmod{2}$ 时,选择数字 $d = 0$;当 $D \equiv 1 \pmod{2}$ 时,随机选择 $d = \pm 1$。当 $D$ 为奇数时,随机选择使下一个 $D$ 值为奇数或偶数的概率相等,因此乘法的出现与否并不指示原始输入值 $D$ 中下一位的值。
    • 算法攻击 :与 Oswald–Aigner 方法类似,当该指数被重复使用约 $10$ 次时,加法和乘法的模式可以通过可行的计算揭示指数。
  • 第二个算法(Yen–Chen–Ha–Moon 算法)

    • 算法原理 :使用任何固定的 $2$ 次幂基数,从最高有效位到最低有效位进行数字重编码,以便在从左到右的幂运算过程中实时进行转换。以基数 $4$ 为例,其数字重编码过程如下:
Input: Base 4 representation of D = (bn−1 ...b2b1b0)4, bn−1 > 0
Output: Base 4 representation of D = (dn−1 ...d2d1d0)4 +δ
Carry ←bn−1
i ←n−1
While i > 0 do
Begin
    Borrow ←4∗Carry
    Carry ←Random from 1,2,3
    di−1 ←Borrow −Carry +bi−1
    i ←i−1
End
δ ←Carry
- **时间和空间效率**:该方法在时间效率上与 $m$ 元幂运算类似(这里 $m = 4$),具有相同数量的平方运算。但由于所有数字现在都非零,乘法数量与平方数量相同,而 $m$ 元幂运算的乘法数量仅为平方数量的 $\frac{m}{m - 1} = \frac{3}{4}$。预计算也会略微增加时间,额外的数字 $\delta$ 也是如此。空间需求接近 $m^2$ 元幂运算,因为预计算表包含 $m^2 - 2 = 14$ 个值。由于数字是非负的,该技术可用于模幂运算以及椭圆曲线上的点乘法。

- **算法攻击**
    - **攻击限制**:数字的非零属性确保了平方和乘法的模式始终相同,没有可应用安全错误攻击的虚拟操作,因此无法对 Liardet–Smart 和 Oswald–Aigner 算法进行的攻击在此不适用。
    - **攻击方法**:Park 和 Lee 观察到数字 $d_{i - 1}$ 的平均值为 $6 + b_{i - 1}$(其中 Carry 为 $2$,Borrow 为 $8$)。因此,从足够的跟踪记录中获取重编码数字值的最小泄漏就足以以高概率正确确定 $b_{i - 1}$。攻击者可以轻松对齐位置 $i - 1$ 的操作,汇集任何微弱的泄漏以找到平均值 $6 + b_{i - 1}$,从而以很少的错误恢复秘密密钥 $D$。若信噪比不足以提供足够的正确数字,只需收集更多的跟踪数据加入平均值计算。因此,若使用这种重编码重复使用密钥,应结合随机盲化处理,使 $b_{i - 1}$ 的使用值随机变化,其平均值不包含任何信息。
4. Itoh 的重叠窗口算法
  • 算法原理
    • 该算法是一种滑动窗口技术,一般形式上本质上包含了前面除数字为非负之外的所有算法。它允许由可变基数表示算法给出的任何表示,前提是基数为 $2$ 次幂。与第二个 Ha–Moon 算法一样,作者将从二进制的转换描述为从左到右的重编码,使基于表的幂运算能够按生成顺序消费数字。
    • 以重叠窗口方法(O - WM)为例,有两个主要参数 $k$ 和 $h$,其中 $k > h$,推荐关系为 $h \geq \frac{k}{2}$。输入和输出的基数固定为 $m = 2^{k - h}$。$k$ 位变量 $\text{Left}$ 由两部分组成,其最低 $k - h$ 位是要处理的 $D$ 的下一组位,即基数 $m$ 的数字 $b_{i - 1}$;其最高 $h$ 位 $\text{Top}$ 是处理 $D$ 的更高有效位后剩余的余数。输出数字 $d_{i - 1}$ 不大于 $\text{Left}$,因此数字范围是从 $0$ 到 $2^k - 1$。该过程可以看作是具有 $h$ 位重叠的 $k$ 位滑动窗口方法。其重编码过程如下:
Input: h,k with 0 < h < k, n > 0, D = (bn−1 ...b2b1b0)m where m = 2k−h
Output: Random base m representation of D = (dn−1 ...d2d1d0)m
m ←2k−h
Top ←0
i ←n
While i > 0 do
Begin
    Left ←m∗Top+bi−1
    If i = 1 then Top ←0
    else Top ←Random from {0,1,...,min{Left,2h −1}}
    di−1 ←Left −Top
    i ←i−1
End
- **效率特点**:该算法产生的从左到右的幂运算方法在时间效率上与 $m$ 元幂运算类似,空间效率与 $2^k$ 元幂运算相同。对于智能卡应用,$k$ 需要保持非常小,这限制了可以引入的随机性数量。需要 $h \geq \frac{k}{2}$ 才能添加与密钥 $D$ 相同的随机性。
  • 算法攻击
    • 攻击原理 :O - WM 方法与第二个 Ha–Moon 算法在固定基数 $m = 2^{k - h}$ 时非常相似,主要区别在于图 17.10 中 Carry 的范围。因此,可能适用于这两种算法的攻击方法相似,但这里更复杂。
    • 攻击步骤
      • 若能识别平方操作,乘法操作可以像 Liardet–Smart 算法的表 17.1 那样正确对齐。假设泄漏模型中可以通过汉明重量泄漏来实现这一点。
      • 使用 Park 和 Lee 的平均技术,通常通过忽略 $\text{Left}$ 对分配给 $\text{Top}$ 的随机数范围的影响,可以得到 $b_{i - 1}$ 的良好初步近似值。当 $\text{Top}$ 的前一个值非零时,$\text{Left}$ 的值至少为 $m = 2^{k - h}$,若 $h \leq \frac{k}{2}$,则至少为 $2^h$。即使 $h > \frac{k}{2}$,很少有 $\text{Top}$ 的前一个值小到足以缩小 $\text{Top}$ 的下一个值的范围。因此,$\text{Top}$ 的平均值略小于 $\frac{1}{2}(2^h - 1)$,使得 $d_{i - 1}$ 的平均值略小于 $b_{i - 1} + \frac{1}{2}(m - 1)(2^h - 1)$。
      • 一旦跟踪记录中的平方操作对齐,就可以推断出 $b_{i - 1}$ 的近似值。由于至少 $\frac{1}{2^h}$ 的随机值将为 $0$,$\text{Top}$ 的平均值应减少 $O(2^{-h})$,$d_{i - 1}$ 的平均值应减少 $O((m - 1)2^{-h}) = O(2^{k - 2h})$。因此,在大多数情况下,通过简单的向下取整,这种粗略计算应该能得到 $b_{i - 1}$。稍微多做一些努力可以提高数字预测的准确性。
    • 安全性与效率权衡 :与早期算法相比,若能选择合适的参数(如大的 $k$ 和小的 $k - h$),特别是使基数可变,该算法更难被破解。但这是以运行时效率为代价的。
5. 随机表方法
  • 算法原理 :Itoh 等人通过“随机表”技术(RT - WM)增强了 O - WM 算法,将数字范围 ${d_{min}, \ldots, d_{max}}$ 修改为 ${r + d_{min}2^c, \ldots, r + d_{max}2^c}$,其中 $r$ 是为每次幂运算固定的随机 $c$ 位数字。所需的预计算表包含新数字范围内输入文本的幂。该方法可作为任何重编码方案的附加对策,这里将转换描述为一个单独的过程,但在文献 [4] 中它是重编码的一个完整部分。

    • 对于所需的基数序列 $m_{n - 1}, m_{n - 2}, \ldots, m_0$,计算 $D_0 = r((( \ldots (m_{n - 2} + 1)m_{n - 3} + \cdots + 1)m_1 + 1)m_0 + 1)$。
    • 计算 $D’ = (D - D_0 - \delta)/2^c$,其中 $D - D_0 \equiv \delta \pmod{2^c}$,并对 $D’$ 应用所选的重编码方法和所选的基数,得到 $D’ = (( \ldots (d’ {n - 1}m {n - 2} + d’ {n - 2})m {n - 3} + \cdots + d’ 2)m_1 + d’_1)m_0 + d’_0$,其中数字 $d’_i$ 在范围 ${d {min}, \ldots, d_{max}}$ 内。
    • 则 $D = (( \ldots (d_{n - 1}m_{n - 2} + d_{n - 2})m_{n - 3} + \cdots + d_2)m_1 + d_1)m_0 + d_0 + \delta$,其中数字 $d_i = r + d’ i2^c$ 在所需范围 ${r + d {min}2^c, \ldots, r + d_{max}2^c}$ 内。
  • 算法攻击

    • 攻击现状 :目前没有针对该方法的公开攻击。
    • 可能的攻击方式 :若泄漏足够强,可能先对表构建阶段应用能从单个跟踪记录中获取任何信息的攻击以揭示 $r$,然后对幂运算阶段应用攻击。但在不进行多次跟踪记录平均的情况下,这种方法不太可能奏效,因为采用该算法的设备可能使用足够的硬件对策来抵御对单个跟踪记录的攻击。
    • 攻击限制 :$r$ 的平均值为 $\frac{1}{2}(2^c - 1)$,这会导致 $D_0$ 的平均值。在 Ha–Moon 2 或 O - WM 算法的情况下,这会导致每个数字 $d’_i$ 的平均值。表面上,这会导致恢复 $D’$ 的平均值,进而恢复 $D$。然而,在计算 $D’ = (D - D_0 - \delta)/2^c$ 时的借位意味着每个 $d’_i$ 的平均值都是随机数字的平均值,因此 $d’_i$ 的平均值不包含任何信息,无法通过这种方式恢复 $D$。不过,若同一密钥使用足够多次,新的方法可能能够在随机化对策存在的情况下成功组合微弱的泄漏信息。

综上所述,不同的随机幂运算算法各有特点,在安全性和效率之间需要进行权衡。在实际应用中,应根据具体的安全需求和性能要求选择合适的算法,并采取相应的安全措施来抵御潜在的攻击。

随机幂运算算法的分析与攻击(续)

6. 算法对比与总结

为了更清晰地了解这些随机幂运算算法的特点,下面对它们进行详细对比。

算法名称 基数特点 数字范围 时间效率 空间效率 安全性考虑
Oswald–Aigner 固定 $m = 2$ ${-1, 0, 1, 2}$ 平均时间效率比平方 - 乘法算法略差 与等效平方 - 乘法算法空间效率匹配 依赖每次使用不同密钥或难以区分加法和加倍操作
Ha–Moon 第一个 固定 $m = 2$ ${-1, 0, 1}$ 与 Oswald–Aigner 类似 未提及特殊空间需求 重复使用约 10 次可被攻击
Ha–Moon 第二个(Yen–Chen–Ha–Moon) 固定 2 次幂基数(如 $m = 4$) $1 - 14$ 与 $m$ 元幂运算类似,乘法数与平方数相同 接近 $m^2$ 元幂运算 需结合随机盲化处理避免密钥恢复
Itoh 的重叠窗口(O - WM) 可变 2 次幂基数(如 $m = 2^{k - h}$) $0 - 2^k - 1$ 与 $m$ 元幂运算类似 与 $2^k$ 元幂运算相同 选择合适参数可提高安全性,但牺牲运行效率
随机表方法(RT - WM) 基于 O - WM 扩展 ${r + d_{min}2^c, \ldots, r + d_{max}2^c}$ 基于 O - WM 基础上有额外表计算 依赖预计算表 目前无公开攻击,但多次使用密钥可能有风险

从上述对比可以看出,不同算法在基数、数字范围、时间和空间效率以及安全性方面存在显著差异。在选择算法时,需要综合考虑这些因素。例如,对于对时间和空间要求较高的智能卡应用,可能需要选择时间和空间效率较好的算法,如 O - WM 算法,但要注意其参数选择对安全性和随机性的影响。而对于对安全性要求极高的场景,可能需要结合多种安全措施,如密钥盲化等,来使用这些算法。

7. 实际应用中的建议

在实际应用随机幂运算算法时,为了确保系统的安全性和性能,可参考以下建议:

  • 密钥管理

    • 避免重复使用 :尽量避免在未盲化的情况下重复使用同一密钥。如 Oswald–Aigner 和 Ha–Moon 第一个算法,在重复使用密钥时容易受到攻击。若确实需要重复使用密钥,应结合随机盲化处理,如 Ha–Moon 第二个算法的建议。
    • 定期更换密钥 :定期更换密钥是提高系统安全性的有效方法。即使算法本身具有一定的随机性,长期使用同一密钥仍会增加被攻击的风险。
  • 侧信道防护

    • 增强硬件防护 :采用硬件对策来抵御侧信道攻击,如平衡加法和加倍代码,使攻击者难以区分加法和加倍操作,增加攻击难度。
    • 减少泄漏信息 :在设计系统时,尽量减少侧信道泄漏的信息。例如,通过优化算法实现,降低操作模式的可预测性,避免攻击者通过分析操作模式来推断密钥信息。
  • 算法选择与参数调整

    • 根据需求选择算法 :根据具体的应用场景和安全需求选择合适的算法。对于对时间和空间效率要求较高的场景,可选择时间和空间效率较好的算法;对于对安全性要求极高的场景,可选择安全性较高的算法,并结合其他安全措施。
    • 合理调整参数 :对于一些算法,如 Itoh 的重叠窗口算法,参数的选择对算法的安全性和效率有重要影响。应根据实际情况合理调整参数,如选择合适的 $k$ 和 $h$ 值,在安全性和运行效率之间找到平衡。
8. 未来研究方向

随着密码学技术的不断发展,随机幂运算算法也面临着新的挑战和机遇。以下是一些可能的未来研究方向:

  • 新型攻击方法研究 :虽然目前对某些算法的攻击方法已经有了一定的研究,但随着计算能力的提升和新的分析技术的出现,可能会出现更有效的攻击方法。研究人员需要不断探索新型攻击方法,以评估算法的安全性。

  • 算法改进与创新 :针对现有算法的不足之处,进行改进和创新。例如,设计更高效的随机化方法,提高算法的安全性和效率;或者开发新的随机幂运算算法,以满足不断增长的安全需求。

  • 多算法融合 :将多种随机幂运算算法进行融合,结合它们的优点,提高系统的整体安全性。例如,可以将具有不同随机化机制的算法结合使用,增加攻击者分析的难度。

  • 侧信道防护技术的发展 :进一步研究和发展侧信道防护技术,提高系统对侧信道攻击的抵御能力。例如,开发更先进的硬件防护技术,或者设计更有效的算法实现方式,减少侧信道泄漏的信息。

总之,随机幂运算算法在密码学领域具有重要的地位,但也面临着诸多安全挑战。通过对不同算法的深入分析和研究,以及采取相应的安全措施和未来研究方向的探索,我们可以更好地保障系统的安全性和性能。在实际应用中,应根据具体情况选择合适的算法,并不断关注密码学领域的最新发展,以应对不断变化的安全威胁。

Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑用户体验的优化,从而提升整体开发效率软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值