48、随机指数运算:MIST算法及相关研究

随机指数运算:MIST算法及相关研究

1. 引言

在密码学中,指数运算有着举足轻重的地位,但同时也面临着侧信道攻击的威胁。早期的指数运算攻击表明,当密钥重复使用且长整数运算模式未受保护时,利用微弱的侧信道信息就有可能恢复密钥。为了应对这一问题,随机化技术应运而生,其中MIST算法是一种有效的随机指数运算算法。

2. MIST算法概述

MIST算法与之前的算法不同,之前的变基和可变基表示算法通常只使用2的幂作为基,而MIST算法则有意选择并非同一素数幂的基,这使得数字生成必须从右到左进行。不过,通过将数字生成与指数运算分离,指数运算可以在任意方向进行。

2.1 基的选择

基 $m_i$ 是从集合 $S = {2,3,5}$ 中随机选择的,以下是一个示例算法:

mi ←0
If Rand(8) < 7 then
    If D ≡0 mod 2 then mi ←2 else
        If D ≡0 mod 5 then mi ←5 else
            If D ≡0 mod 3 then mi ←3
If mi = 0 then
    Begin
        p ←Rand(8)
        If p < 6 then mi ←2 else
            If p < 7 then mi ←5 else
                mi ←3
    End

由于将数提升到3或5次幂的效率低于提升到2的幂次,所以基的选择偏向于2。同时,当数字为0时,指数运算中可以节省一次乘法,因此也会偏向于选择能使数字为0的基。

2.2 数字重编码示例

以十进制数235为例,它可以重编码为 $235_{10} = (((((0×2 + 1)×3 + 0)×2 + 1)×5 + 4)×2 + 0)×3 + 1$,使用特定符号可缩写为 $235 = 120312450213$,用于表示每个数字的基。

2.3 效率分析
  • 空间效率 :与二进制指数运算类似,但需要一个额外的寄存器来存储一个中间乘积,以及用于重编码的空间。
  • 时间效率 :介于二进制和四进制指数运算之间。要详细验证这一点,需要将重编码建模为马尔可夫过程并计算其特征向量。

为了在右到左的方法中实现最佳效率,需要将 $M^{d_i}$ 和 $M^{m_i}$ 的计算结合起来,以最小化长整数乘法的总数。例如,使用加法链 $1 + 1 = 2, 2 + 1 = 3, 2 + 3 = 5$ 可以用三次乘法计算出 $M^2$、$M^3$ 和 $M^5$,适用于基为5且数字不为4的情况。

3. 对MIST算法的攻击

MIST算法的设计使得之前的攻击方法难以应用来推导指数 $D$。具体来说,可变基的选择意味着操作与 $D$ 的位之间没有可被利用的对齐关系,因此类似于针对Liardet–Smart和Oswald–Aigner算法的攻击是不可行的。

在任何指数运算中,通过观察总线上的汉明权重或重复访问相同的内存位置,有可能检测到操作数的重用。这使得所有基于表的从左到右的指数运算都存在潜在的脆弱性。在原始的从右到左的MIST算法中,操作数共享模式在数字/基对12和03之间仍然存在歧义,这些情况频繁出现,使得遍历搜索空间以找到正确的密钥 $D$ 在计算上不可行。

不过,Oswald使用维特比算法分析单次跟踪中的平方和乘法模式,能够正确选择约83%的数字,但无法确定哪些是正确的。这比独立选择最可能的数字(准确率为74%)有所改进。对于短椭圆曲线密钥,Oswald的技术仍有大约30位需要修改,在没有关于这些位位置的良好信息的情况下,这是不可行的。而且在实际中,噪声会导致推导模式的退化,使得攻击变得不可行。

4. 随机指数运算的重要性

随机化技术对于防止侧信道攻击至关重要。密钥盲化是一种解决方案,但可能并不足够。本章介绍的随机指数运算可以进一步混淆攻击者。目前开发的大多数方法单独使用时都比较脆弱,如果要重复使用密钥,还需要结合密钥盲化。然而,对于一次性密钥使用,随机化可以显著提高算法的安全性,并且效率通常优于具有均匀平衡代码的算法,如平方 - 始终乘法算法。

5. 练习题

这些练习题旨在让我们体会到即使侧信道泄漏的误差率非常低,从不完善的侧信道泄漏中发现正确密钥也是非常困难的。
1. 在Liardet–Smart算法中,选择密钥大小为160位,窗口大小上限 $R = 4$,并假设点乘法存在侧信道泄漏,能无误差地提供加法和双倍操作的序列。
- a. 平均会出现多少个窗口?
- b. 计算具有相同加法和双倍操作模式的不同密钥的平均数量。
- c. 如果改变 $R$ 的值,算法的安全性会提高还是降低?
- d. 在这种泄漏水平下,$R$ 是否存在最安全的值?
- e. 对这种有大量泄漏的算法实现进行攻击在计算上是否可行?
- f. 如果密钥大小加倍到320位,上述问题的答案是什么?
- g. 假设加法和双倍操作只有95%的概率被正确确定,重复上述问题。
2. 此练习涉及一些编程,但也可以手动完成。如果手动完成,可以选择较小的密钥大小,如20位,并调整概率。
- a. 使用随机数生成器获取一个随机的160位密钥 $D$,选择一个恰好有80位为0和80位为1(包括第一位)的密钥。将 $D$ 转换为在通常的平方 - 乘法算法中作为指数时出现的平方(S)和乘法(M)的字符串,确保实现中省略不必要的操作,如1的初始平方。
- b. 假设此密钥和算法用于一个存在侧信道泄漏的加密令牌。假设 $p_S = 1 - \frac{1}{80}$ 和 $p_M = 1 - \frac{1}{40}$ 分别是在考虑两个乘法不能相邻的事实之前,每个S和M被正确确定的概率。使用这些概率生成一个可能从跟踪信息中推导出来的字符串 $\lambda$。
- c. 写出 $\lambda$ 中预期错误数量的公式。当出现“MM”时,预期有多少情况可以纠正错误?$\lambda$ 在对应真实操作序列之前还必须满足哪些结束条件?将计算结果与生成的密钥和字符串进行比较。
- d. 计算 $\lambda$ 中(a)无错误、(b)恰好一个错误、(c)恰好两个错误、(d)恰好五个错误需要纠正的概率。
- e. 对字符串 $\lambda$ 进行明显错误的纠正,如出现“MM”的情况。标记 $\lambda$ 中可能代表孤立错误的所有字符。如果 $\lambda$ 中恰好有(a)一个错误、(b)两个错误或(c)五个错误,需要测试多少个密钥的正确性?
- f. 是否存在包含最多一个错误时必须正确的子字符串?
- g. 假设使用32位处理器的机器来搜索正确的密钥。根据之前章节中关于椭圆曲线操作成本的信息,估计如果密钥有恰好五个错误并且用于160位域上的椭圆曲线点乘法,检查密钥正确性需要多少32位操作。

6. 项目
6.1 密钥重建项目

假设同一密钥在未进行盲化的情况下重复使用,有多个对应相同指数的跟踪信息,尝试从这些跟踪信息中重建密钥。
1. 编写程序生成(a)Liardet–Smart和(b)Oswald–Aigner算法给出的平方(S)和乘法(M)序列。最初收集20位密钥的50个这样的序列。
2. 像表17.1那样对齐多个这样序列的平方操作,确定平均序列中每列的平方与乘法的比率是否相同。如果不同,能否推断出指数中对应位的信息?
3. 查看相邻两位可能的S和M模式。这些可能性能否确定其中一位或两位?标记已确定的位。由于与两侧的位配对,有多少位被双重确定?有多少位仍未确定?如果这些位的值不同,是否会被确定?这是否意味着所有位都可以被确定?
4. 重复上述步骤,这次查看相邻三位的S和M模式。
5. 将上述位确定过程机械化。将该过程应用于多组 $2^n$ 个序列($n = 1,2,…$)和160位密钥。计算每个跟踪集大小下错误确定的位的平均数量。如果存在所有位都正确恢复的情况,每个集大小下正确恢复密钥的频率是多少?

6.2 Ha–Moon重编码算法项目
  1. 选择一个随机的160位密钥。编写实现Ha–Moon重编码算法的程序,为该密钥生成多个随机化的数字序列。扩展程序,使其能够对密钥中每个以4为基的位置的数字值进行平均。使用此信息预测密钥的以4为基的数字。
  2. 将数字预测过程应用于多组 $2^n$ 个序列($n = 1,2,…$)。计算每个跟踪集大小下错误确定的数字的平均数量。如果存在所有数字都正确恢复的情况,每个集大小下正确恢复密钥的频率是多少?
  3. 扩展数字预测过程,使其为每个数字返回一个概率,即1减去 $\overline{b_i}$ 到其最近整数距离的一半,其中 $\overline{b_i}$ 是用于预测数字 $b_i$ 的实数平均值。重复上述步骤,将概率最低的10%的错误数字预测视为正确,如果下一个最近的整数是正确值。
  4. 估计检查密钥预测的成本,即执行160位椭圆曲线点乘法所需的32位操作的数量。对于数字错误可预测的情况,纠正所有可识别的数字错误在计算上是否可行?通过估计一台选定的PC测试一半密钥可能性所需的小时数来确定答案。考虑到必须将纠正数字错误的成本除以密钥预测可纠正的概率,以这种方式恢复密钥在计算上是否可行?

通过对MIST算法及相关随机指数运算的研究,我们可以看到在密码学中,不断探索和改进算法以应对侧信道攻击的重要性。随机化技术为提高指数运算的安全性提供了有效的手段,但仍需要进一步的研究和实践来完善。

随机指数运算:MIST算法及相关研究

7. 随机指数运算相关技术总结

随机指数运算在密码学安全中起着关键作用,以下是对相关技术的总结:
| 技术 | 特点 | 安全性 | 效率 |
| — | — | — | — |
| MIST算法 | 可变基选择,数字生成从右到左,分离数字生成与指数运算 | 防止常见攻击,操作数共享模式有歧义增加破解难度 | 空间效率与二进制类似,时间效率介于二进制和四进制之间 |
| 密钥盲化 | 提供一定安全保障 | 单独使用可能不足 | - |
| 随机指数运算 | 混淆攻击者,结合密钥盲化可增强安全性 | 对于一次性密钥使用提高安全性,效率常优于均匀平衡代码算法 | - |

8. 技术细节深入分析
8.1 MIST算法基选择机制

MIST算法基选择偏向于2,是因为提升到3或5次幂效率较低。同时,为了节省乘法操作,也会倾向于选择能使数字为0的基。其基选择算法流程如下:

graph TD;
    A[开始] --> B[mi ← 0];
    B --> C{Rand(8) < 7};
    C -- 是 --> D{D ≡ 0 mod 2};
    D -- 是 --> E[mi ← 2];
    D -- 否 --> F{D ≡ 0 mod 5};
    F -- 是 --> G[mi ← 5];
    F -- 否 --> H{D ≡ 0 mod 3};
    H -- 是 --> I[mi ← 3];
    C -- 否 --> J{mi = 0};
    J -- 是 --> K[p ← Rand(8)];
    K --> L{p < 6};
    L -- 是 --> M[mi ← 2];
    L -- 否 --> N{p < 7};
    N -- 是 --> O[mi ← 5];
    N -- 否 --> P[mi ← 3];
    J -- 否 --> Q[结束];
    E --> Q;
    G --> Q;
    I --> Q;
    M --> Q;
    O --> Q;
    P --> Q;

这个流程展示了如何根据随机数和指数 $D$ 的模运算结果来选择基 $m_i$。

8.2 指数运算效率优化

在右到左的指数运算方法中,为了实现最佳效率,需要将 $M^{d_i}$ 和 $M^{m_i}$ 的计算结合起来。以加法链 $1 + 1 = 2, 2 + 1 = 3, 2 + 3 = 5$ 为例,其具体操作步骤如下:
1. 计算 $M^2$:$M^1 \times M^1 = M^2$。
2. 计算 $M^3$:$M^2 \times M^1 = M^3$。
3. 计算 $M^5$:$M^2 \times M^3 = M^5$。

通过这种方式,可以用三次乘法计算出 $M^2$、$M^3$ 和 $M^5$,适用于基为5且数字不为4的情况。

9. 攻击与防御策略分析
9.1 现有攻击方法的局限性

目前针对随机指数运算的攻击方法存在一定局限性。例如,在MIST算法中,可变基的选择使得操作与指数 $D$ 的位之间没有可利用的对齐关系,使得类似针对Liardet–Smart和Oswald–Aigner算法的攻击不可行。在原始的从右到左的MIST算法中,操作数共享模式在数字/基对12和03之间的歧义,使得遍历搜索空间找到正确密钥在计算上不可行。而且,实际中的噪声会导致推导模式的退化,进一步降低攻击的可行性。

9.2 防御策略的强化

为了提高随机指数运算的安全性,可以采取以下策略:
1. 结合多种随机化技术:如同时使用密钥盲化和随机指数运算,增强算法的抗攻击能力。
2. 增加噪声干扰:在实际应用中,适当增加噪声可以使攻击者更难从侧信道信息中获取有用的信息。
3. 持续优化算法:不断改进算法的设计,减少潜在的安全漏洞。

10. 练习题与项目的意义
10.1 练习题的作用

练习题旨在让我们深刻体会到从不完善的侧信道泄漏中发现正确密钥的困难性。通过对Liardet–Smart算法和平方 - 乘法算法的练习题,我们可以了解到不同参数设置(如密钥大小、窗口大小、错误概率等)对算法安全性和破解难度的影响。例如,在Liardet–Smart算法中,改变密钥大小和窗口大小上限 $R$ 会影响平均窗口数量、具有相同操作模式的不同密钥数量等,从而影响算法的安全性。

10.2 项目的价值

项目则提供了实践和研究的机会。通过密钥重建项目,我们可以尝试从多个跟踪信息中重建密钥,了解不同算法(如Liardet–Smart和Oswald–Aigner算法)的操作模式和位确定方法。而Ha–Moon重编码算法项目则让我们深入研究该算法的数字预测过程和密钥恢复的可行性,以及如何通过扩展算法来提高预测的准确性和密钥恢复的效率。

11. 未来展望

虽然随机指数运算相关技术已经取得了一定的进展,但仍然面临着许多挑战。未来的研究方向可能包括:
1. 更高效的随机化算法:开发新的随机指数运算算法,在保证安全性的前提下,进一步提高算法的效率。
2. 对抗复杂攻击的方法:随着攻击技术的不断发展,需要研究能够对抗更复杂攻击的防御策略。
3. 实际应用中的优化:将随机指数运算技术更好地应用到实际的密码系统中,解决实际应用中的问题,如资源受限环境下的性能优化。

随机指数运算在密码学中具有重要的地位,通过不断的研究和实践,我们可以不断完善相关技术,提高密码系统的安全性和可靠性。

基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究(Matlab代码实现)内容概要:本文围绕“基于可靠性评估序贯蒙特卡洛模拟法的配电网可靠性评估研究”,介绍了利用Matlab代码实现配电网可靠性的仿真分析方法。重点采用序贯蒙特卡洛模拟法对配电网进行长时间段的状态抽样与统计,通过模拟系统元件的故障与修复过程,评估配电网的关键可靠性指标,如系统停电频率、停电持续时间、负荷点可靠性等。该方法能够有效处理复杂网络结构与设备时序特性,提升评估精度,适用于含分布式电源、电动汽车等新型负荷接入的现代配电网。文中提供了完整的Matlab实现代码与案例分析,便于复现和扩展应用。; 适合人群:具备电力系统基础知识和Matlab编程能力的高校研究生、科研人员及电力行业技术人员,尤其适合从事配电网规划、运行与可靠性分析相关工作的人员; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的基本原理与实现流程;②学习如何通过Matlab构建配电网仿真模型并进行状态转移模拟;③应用于含新能源接入的复杂配电网可靠性定量评估与优化设计; 阅读建议:建议结合文中提供的Matlab代码逐段调试运行,理解状态抽样、故障判断、修复逻辑及指标统计的具体实现方式,同时可扩展至不同网络结构或加入更多不确定性因素进行深化研究
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值