蒙哥马利模乘中的条件减法频率及侧信道攻击防范
1. 条件减法概率推导
-
平方运算概率 πsq
:假设 A 和 Z 独立且均匀分布,可推导出平方运算中条件减法的概率公式。
-
公式推导:
[
\begin{align }
\pi_{sq}&=\text{pr}(Z + A^{2}R^{-1}\geq M)\
&=\frac{1}{M^{2}}\sum_{Z = 0}^{M - 1}\sum_{A = 0}^{M - 1}(Z + A^{2}R^{-1}\geq M)\
&\approx\frac{1}{M^{2}}\sum_{A = 0}^{M - 1}A^{2}R^{-1}\
&\approx\frac{1}{M^{2}}\int_{0}^{M}A^{2}R^{-1}dA\
&\approx\frac{1}{3}MR^{-1}
\end{align }
] - 结论:在实际中,大多数平方运算集满足此 πsq 值的应用条件。
-
公式推导:
-
固定乘数 A 时乘法概率 πA
:当 A 值固定,参数 B 在 0 到 M - 1 均匀分布,且 B 和 Z 独立且均匀分布,可得到乘法中条件减法的概率。
-
公式推导:
[
\begin{align }
\pi_{A}&=\text{pr}(Z + ABR^{-1}\geq M)\
&=\frac{1}{M^{2}}\sum_{Z = 0}^{M - 1}\sum_{B = 0}^{M - 1}(Z + ABR^{-1}\geq M)\
&\approx\frac{1}{M^{2}}\sum_{B = 0}^{M - 1}ABR^{-1}\
&\approx\frac{1}{M^{2}}\int_{0}^{M}ABR^{-1}dB\
&=\frac{1}{2}AR^{-1}
\end{align }
] - 结论:对于固定的乘数 A,减法频率强烈依赖于其大小,A 越大,频率越高;A = 0 时,公式值也正确,但输出不是均匀分布;当 A 均匀分布时,πA 的平均值是 πmu。
-
公式推导:
2. 频率方差与侧信道攻击误差
-
误差影响
:若用条件减法频率判断集合是乘法还是平方运算,决策的准确性很重要。
- 假设在一组 t 次平方 - 乘幂运算中,用相同的 1024 位密钥,有大约 1500 个集合 Si 需要分类以恢复秘密指数的位模式。若出现 e 个错误,可能需尝试约 1500e 种不同替代方案才能找到正确指数。
- 频率接近 πmu 和 πsq 平均值的集合 Si 最易被误分类,应从这里开始搜索,可更快找到正确密钥。
-
方差计算
:假设 t 次幂运算的输入独立,每个 Si 内条件减法应独立发生,其行为符合二项随机变量,t 次试验,概率 p = πmu 或 πsq。
-
期望减法次数为 tp,方差为 (\sigma^{2}=tp(p - 1))。为使用正态分布表,更倾向使用减法概率,此时均值为 p,方差如下:
- 乘法方差:(\sigma_{mu}^{2}=\frac{1}{4t}MR^{-1}(1-\frac{1}{4}MR^{-1}))
- 平方运算方差:(\sigma_{sq}^{2}=\frac{1}{3t}MR^{-1}(1-\frac{1}{3}MR^{-1}))
- 固定乘数 A 时方差:(\sigma_{A}^{2}=\frac{1}{2t}AR^{-1}(1-\frac{1}{2}AR^{-1}))
-
期望减法次数为 tp,方差为 (\sigma^{2}=tp(p - 1))。为使用正态分布表,更倾向使用减法概率,此时均值为 p,方差如下:
-
分类判断
:分类为平方或乘法可能性相等的点是加权平均值:
[
\pi=\frac{\pi_{sq}\sigma_{mu}+\pi_{mu}\sigma_{sq}}{\sigma_{mu}+\sigma_{sq}}
]- 若 Si 中条件减法发生次数少于 π,则集合可能包含乘法;若大于 π,则可能包含平方运算。
- 错误决策概率可通过查正态分布表得到,近似为 (\text{Pr}(Z>\frac{\pi_{sq}-\pi_{mu}}{\sigma_{mu}+\sigma_{sq}})),其中 Z 是 N(0, 1) 随机变量。
- 对于典型的 (MR^{-1}\approx\frac{3}{4}),错误概率约为 (\text{Pr}(Z>\frac{\sqrt{t}}{13.2}))。当 t > 1800 时,1024 位幂运算的 1500 次左右操作中错误少于 1 次。若 R 加倍,N(0, 1) 表中关注值约除以 (\sqrt{2}),约出现 18 个错误。
- 降低 (MR^{-1}) 可减少条件减法发生率,从而减少侧信道泄漏。
3. 减少泄漏的改进方法
-
增加迭代次数
:减少泄漏的简单方法是降低 (MR^{-1}),因 M 的位长度通常固定,这意味着增加蒙哥马利模乘算法 MonPro 的迭代次数 n,可降低条件减法频率。
- 当 (MR^{-1}<\frac{1}{4}) 时,MonPro 可用于幂运算而无需最终条件减法,因为额外右移使输出足够小,可作为下一次 MonPro 输入。
- 缩短密钥长度 :将标准密钥长度减少 2 位,在基于字的实现中,对于最小的 n 选择,自动满足 4M < R。这样,MonPro 可在整个幂运算中使用,无需额外迭代或条件减法,所有中间值都在字边界内。
-
额外迭代的影响
:假设 M 达到字边界顶部,MonPro 比标准版本多一次迭代。
- 设字长至少 2 位,n 最小化以确保 4M < R,即 r ≥ 4 且 rM < R < 2rM,R = rR′,M < R′ < 2M。标准版本循环输出上限为 (ABR’^{-1}+M),略大于 R′,而此处 MonPro 多一次除以 r 的操作,输出上限 (ABR^{-1}+M) 更小,更可能满足 (ABR^{-1}+M < R’)。
- 若 (R’r^{-1}+M < R’),即 (M < R’(1 - r^{-1})),所有输入和输出将被 R′ 限制。此条件等价于 M 的最高字不是 r - 1。
- 定理:若 M 的最高位不是 r - 1,r ≥ 4,且 MonPro 执行 n 次迭代(M < R′ = r^{n - 1},比正常多一次迭代),则输入受 R′ 限制时,输出也受 R′ 限制。
- 若排除最高位为 r - 1 的罕见模数 M,在 MonPro 循环中多执行一次迭代,可在通常寄存器大小下成功进行幂运算,无需条件减法。幂运算结束时也无需条件减法,因乘以 1 的调整 MonPro 操作使输出小于 M。
- 对于例外情况,可恢复条件减法,即使用 MonPro(M) 或 MonPro(R′) 并增加 n 值。此时输出在模 M 下可假设为均匀分布,超过 M 或 R′ 的概率至多为 (\frac{1}{2}r^{-1})。使用 16 位或更大字长,在密钥生命周期内,条件减法几乎不会发生,有效消除侧信道泄漏。
4. 总结与操作建议
- 总结 :通过对蒙哥马利模乘的输入和输出边界仔细推导,准确得出条件减法频率,发现观察减法操作存在大量侧信道泄漏。可通过增加 MonPro 算法迭代次数关闭侧信道,在一定条件下可完全消除条件减法,即使保留条件减法,额外迭代也能将侧信道泄漏降低到不可用水平。
-
操作建议
:
- 若要降低侧信道泄漏,可优先考虑增加 MonPro 算法的迭代次数 n。
- 若对密钥长度要求不高,可缩短标准密钥长度 2 位,避免额外迭代和条件减法。
- 对于大多数情况,可排除最高位为 r - 1 的模数 M,在 MonPro 循环中多执行一次迭代,消除条件减法。
- 对于例外情况,使用 16 位或更大字长的处理器,恢复条件减法,降低侧信道泄漏风险。
5. 操作示例及流程图
-
示例
:以计算 (S = T^{N}\bmod M) 为例,使用 MonPro 算法,假设 (M = 9),(T = 3),(N = 2),(R = 16)。
- 计算 (R^{-1}\bmod M) 和 (R^{(2)})。
- 进行幂运算,记录条件减法情况。
- 分析输出是否需要最终减法。
- 流程图 :
graph TD;
A[输入 M, T, N, R] --> B[计算 R^(-1) mod M 和 R^(2)];
B --> C[执行 MonPro 幂运算];
C --> D{是否需要条件减法};
D -- 是 --> E[进行减法操作];
D -- 否 --> F[输出结果];
E --> F;
6. 练习与项目
-
练习
:
- 计算 (16^{-1}\bmod 11),使用输出边界计算 MonPro 在 (M = 11),(R = 16) 时的完整输出表,确定乘法和平方运算中条件减法的概率,并与理论值比较。
- 计算 (S = T^{N}\bmod M) 在不同参数下的值,证明特定情况下的输出结果。
- 以今天的日期作为伪随机指数,选择合适的 M、R 和 T,进行幂运算,重建可能的指数。
-
项目
:
- 选择合适的模数 M 和蒙哥马利常数 R,编写程序进行 16 位指数的幂运算,收集条件减法频率,验证理论值,计算均值和标准差,进行操作分类并统计错误。
- 使用 MonPro(R) 重复项目 1,分析输出频率分布。
- 收集幂运算软件中的减法频率,对操作进行分类,计算汉明距离,重新分配操作,观察错误数量变化。
- 深入研究 MonPro(M) 计算 (S = T^{N}\bmod M) 时在后期处理阶段可能需要最终条件减法的情况。
蒙哥马利模乘中的条件减法频率及侧信道攻击防范
7. 练习与项目的详细分析
7.1 练习分析
-
练习 1
- 首先计算 (16^{-1}\bmod 11),根据模逆的定义,找到一个数 (x) 使得 (16x\equiv 1\pmod{11}),因为 (16\equiv 5\pmod{11}),而 (5\times 9 = 45\equiv 1\pmod{11}),所以 (16^{-1}\bmod 11 = 9)。
-
接着使用输出边界计算 MonPro 在 (M = 11),(R = 16) 时的完整输出表。对于乘法和平方运算,分别统计条件减法的发生次数,再除以总的运算次数,得到实际的条件减法概率。最后与之前推导的理论值进行比较,若实际值与理论值接近,则说明理论推导的正确性。
| 运算类型 | 实际概率 | 理论概率 | 偏差 |
| ---- | ---- | ---- | ---- |
| 乘法 | [实际值] | [理论值] | [偏差值] |
| 平方 | [实际值] | [理论值] | [偏差值] |
-
练习 2
- 当 (M = 9),(T = 3),(N = 2),(R = 16) 时,计算 (R^{-1}\bmod M) 和 (R^{(2)})。先求 (R^{-1}\bmod M),(16\equiv 7\pmod{9}),(7\times 4 = 28\equiv 1\pmod{9}),所以 (R^{-1}\bmod M = 4)。对于 (R^{(2)}),根据相关定义和计算方法得出其值。然后进行幂运算 (S = T^{N}\bmod M),记录条件减法情况,分析输出是否需要最终减法。
- 对于不同的参数设置,如改变 (R) 的值为 64,重复上述步骤,观察结果的变化。
- 证明当 (N\geq 2) 且 (R) 满足通常约束时,使用 MonPro 或 MonPro(R) 计算 (S = 3^{N}\bmod 9) 总是得到 (S = 9)。可以通过数学归纳法等方法进行证明。
- 当 (P) 是质数且 (P^{2}) 整除 (M),(T = M/P),(N\geq 2) 时,证明使用 MonPro 或 MonPro(R) 计算 (S = T^{N}\bmod M) 总是得到 (S = M)。
-
练习 3
- 以今天的日期 (N = DDMMYY) 作为伪随机指数,选择第一个大于当前页码的质数作为 (M),第一个大于 (\frac{9}{8}M) 且与 (M) 互质的数作为 (R),输入文本 (T=\lfloor\frac{1}{4}M\rfloor)。
- 使用计算器计算 (R^{(2)}),然后通过 MonPro(M) 计算幂运算的预处理值 (T)。
- 将 (N) 转换为二进制,列出左到右平方 - 乘幂运算所需的操作,使用 MonPro(M) 计算 (T^{N}\bmod M) 时记录相关的 (S) 值和条件减法是否发生。
- 基于记录的条件减法情况,重建所有可能的指数。可以构建一个二进制树,对每个节点进行遍历和计算,当条件减法的行为与实际情况不同时,修剪该分支。最后统计访问的节点数,分析该搜索对于大指数的计算可行性。若 (R/M) 或 (T/M) 增大,节点数会发生相应的变化,需要进一步分析其影响。
7.2 项目分析
-
项目 1
- 选择一个没有小于 (2^{8}) 因子的模数 (M) 和一个大于 (M) 且与 (M) 互质的蒙哥马利常数 (R)。编写程序进行 16 位指数的幂运算,使用 MonPro(M) 实现。
- 通过与经典的模幂运算实现进行结果比较,验证代码的正确性。同时检查输出是否需要最终减法,确保输出小于 (M)。
- 修改代码收集条件减法的发生数据,生成 (t = 10^{3}) 次随机幂运算,统计每个位置 (i) 的条件减法频率。
- 验证这些频率是否与理论值相符,计算乘法和平方运算的频率均值和标准差,根据公式 (\pi=\frac{\pi_{sq}\sigma_{mu}+\pi_{mu}\sigma_{sq}}{\sigma_{mu}+\sigma_{sq}}) 计算 (\pi) 值。
-
使用 (\pi) 值对操作进行分类,统计错误分类的操作数量。若已知乘法的数量并以此作为划分点,再次统计错误分类的数量。多次重复上述过程,观察错误分类数量随 (t) 的变化情况。
| 操作类型 | 均值 | 标准差 |
| ---- | ---- | ---- |
| 乘法 | [均值值] | [标准差值] |
| 平方 | [均值值] | [标准差值] |
-
项目 2
- 选择合适的 (R) 使得 ((R - 1)^{2}\bmod M) 易于计算,使用 MonPro(R) 重复项目 1 的步骤。
- 将区间 ([0, R]) 划分为 50 或 100 个子区间,修改幂运算代码收集 MonPro(R) 输出落在每个子区间的频率。绘制不同 (M) 值下的频率曲线,分析曲线从 0 到 (R - M) 上升、在 (R - M) 到 (M) 之间水平、从 (M) 到 (R) 下降的原因。
- 分离乘法和平方运算的输出频率,比较它们的曲线差异,并尝试解释差异产生的原因。
-
项目 3
- 收集幂运算软件在 (t = 10^{3}) 次幂运算中的减法频率,根据指数长度和总模乘次数确定乘法和平方运算的数量 (m) 和 (s)。
- 将条件减法频率最低的 (m) 个操作归为乘法集合 (M),其余 (s) 个操作归为平方运算集合 (S),统计错误分类的操作数量。
- 修改软件将第 (i) 个操作的数据收集为一个 (t) 维的向量 (v_{i}),其中 0 表示无减法,1 表示有减法。计算每个操作的 (v_{i}) 与集合 (M) 中向量的平均汉明距离,分析该距离与操作类型的关系。
- 假设平均汉明距离最小的 (m) 个操作代表乘法,重新分配集合 (M) 和 (S) 中的操作,观察错误数量是否减少。多次重复重新分配过程,记录错误数量的变化情况。
- 同样基于集合 (S) 进行重新分配操作,比较两种重新分配方法的结果,分析不一致性代表的分配错误。通过调整 (t) 的值,观察错误数量和不一致性的变化情况。
- 对于不同长度的指数,重复上述过程,分析错误比例和总错误数量随指数长度的变化情况。
-
项目 4
- 深入研究 MonPro(M) 计算 (S = T^{N}\bmod M) 时在后期处理阶段可能需要最终条件减法的情况。
- 先考虑 (M) 是质数幂的情况,分析此时幂运算的特点和最终条件减法的发生规律。
- 再研究更一般的非无平方因子的 (M) 的情况,总结不同 (M) 下最终条件减法的影响因素和发生条件。
8. 总结与建议
蒙哥马利模乘中的条件减法频率分析对于防范侧信道攻击至关重要。通过准确推导条件减法的概率公式,我们可以了解不同运算(乘法和平方运算)中条件减法的发生规律。同时,通过计算频率的方差,能够评估分类操作的准确性,进而采取措施减少侧信道泄漏。
为了有效防范侧信道攻击,可以采取以下建议:
1.
增加迭代次数
:增加蒙哥马利模乘算法 MonPro 的迭代次数,降低 (MR^{-1}),减少条件减法的发生率。
2.
缩短密钥长度
:适当缩短标准密钥长度,确保在幂运算中无需额外迭代和条件减法。
3.
排除特殊模数
:排除最高位为 (r - 1) 的模数 (M),在 MonPro 循环中多执行一次迭代,避免条件减法。
4.
使用合适字长处理器
:对于例外情况,使用 16 位或更大字长的处理器,恢复条件减法,降低侧信道泄漏风险。
通过练习和项目的实践,可以进一步加深对蒙哥马利模乘和侧信道攻击防范的理解,提高实际应用中的安全性。
蒙哥马利模乘条件减法与侧信道攻击防范
超级会员免费看
1580

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



