45、蒙哥马利模乘中的条件减法频率及侧信道攻击防范

蒙哥马利模乘条件减法与侧信道攻击防范

蒙哥马利模乘中的条件减法频率及侧信道攻击防范

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}))
  • 分类判断 :分类为平方或乘法可能性相等的点是加权平均值:
    [
    \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)。
    1. 计算 (R^{-1}\bmod M) 和 (R^{(2)})。
    2. 进行幂运算,记录条件减法情况。
    3. 分析输出是否需要最终减法。
  • 流程图
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. 练习与项目
  • 练习
    1. 计算 (16^{-1}\bmod 11),使用输出边界计算 MonPro 在 (M = 11),(R = 16) 时的完整输出表,确定乘法和平方运算中条件减法的概率,并与理论值比较。
    2. 计算 (S = T^{N}\bmod M) 在不同参数下的值,证明特定情况下的输出结果。
    3. 以今天的日期作为伪随机指数,选择合适的 M、R 和 T,进行幂运算,重建可能的指数。
  • 项目
    1. 选择合适的模数 M 和蒙哥马利常数 R,编写程序进行 16 位指数的幂运算,收集条件减法频率,验证理论值,计算均值和标准差,进行操作分类并统计错误。
    2. 使用 MonPro(R) 重复项目 1,分析输出频率分布。
    3. 收集幂运算软件中的减法频率,对操作进行分类,计算汉明距离,重新分配操作,观察错误数量变化。
    4. 深入研究 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 位或更大字长的处理器,恢复条件减法,降低侧信道泄漏风险。

通过练习和项目的实践,可以进一步加深对蒙哥马利模乘和侧信道攻击防范的理解,提高实际应用中的安全性。

无界云图(开源在线图片编辑器源码)是由四川爱趣五科技推出的一款类似可画、创客贴、图怪兽的在线图片编辑器。该项目采用了React Hooks、Typescript、Vite、Leaferjs等主流技术进行开发,旨在提供一个开箱即用的图片编辑解决方案。项目采用 MIT 协议,可免费商用。 无界云图提供了一系列强大的图片编辑功能,包括但不限于: 素材管理:支持用户上传、删除和批量管理素材。 操作便捷:提供右键菜单,支持撤销、重做、导出图层、删除、复制、剪切、锁定、上移一层、下移一层、置顶、置底等操作。 保存机制:支持定时保存,确保用户的工作不会丢失。 主题切换:提供黑白主题切换功能,满足不同用户的视觉偏好。 多语言支持:支持多种语言,方便全球用户使用。 快捷键操作:支持快捷键操作,提高工作效率。 产品特色 开箱即用:无界云图采用了先进的前端技术,用户无需进行复杂的配置即可直接使用。 免费商用:项目采用MIT协议,用户可以免费使用和商用,降低了使用成本。 技术文档齐全:提供了详细的技术文档,包括技术文档、插件开发文档和SDK使用文档,方便开发者进行二次开发和集成。 社区支持:提供了微信技术交流群,用户可以在群里进行技术交流和问题讨论。 环境要求 Node.js:需要安装Node.js环境,用于运行和打包项目。 Yarn:建议使用Yarn作为包管理工具,用于安装项目依赖。 安装使用 // 安装依赖 yarn install // 启动项目 yarn dev // 打包项目 yarn build 总结 无界云图是一款功能强大且易于使用的开源在线图片编辑器。它不仅提供了丰富的图片编辑功能,还支持免费商用,极大地降低了用户的使用成本。同时,详细的文档和活跃的社区支持也为开发者提供了便利的二次开发和集成条件。无论是个人用户还是企业用户,都可以通过无界云图轻
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值