针对模幂运算的测信道攻击

2024-02-16 00:10

本文主要是介绍针对模幂运算的测信道攻击,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

针对模幂运算的测信道攻击

\quad 在公钥密码体系中,主要的计算代价在于使用秘密的指数的指数操作,例如,RSA。
\quad 但在实际应用时,公钥密码算法每次都是用随机的秘密指数或者使用盲化手段增加测信道攻击的难度,致使算法即使处理相同的数据运算也是不同的,攻击者只能利用 s i n g l e e x e c u t i o n single\ execution single execution 攻击。


一、 基本模幂运算介绍

 Algorithm 1 Binary exponentiation algorithminput  :  a,m,noutput : a^m (mod n)s:=1for i from |m|-1 to 0 do:s: = s*s (mod n)if (m[i] = 1), then :s:= s*m (mod n)return s

二、模幂运算的攻击

  1. 从Algorithm 1可知,当d[i]为1时,多执行了一次乘法,当d[i]为0时,乘法操作就被忽略了。第一次对这个算法的测信道攻击是Kocher1996.
    Kocher 使用的是基于时间的侧信道攻击,结合统计学工具,使用5000个样本,以0.885的概率成功恢复秘密指数(128bits)。

  2. Walter2001本质 是一种利用 data dependent leakage 的攻击手段。对于秘密指数的每一比特都会对应的一个大整数模乘法,利用乘法器处理乘法时对数据的依赖,可以建立对指数的某一比特的联系,然后逐个比特的恢复指数(nibbled at and consumed by tackling individual layers one by one in any order.)。

  3. IIT2002使用的一种 address-bit DPA 攻击。

    	address-bit DPA 攻击利用的是从不同的地址加载相同数据的差异。我们都知道从具有不同地址的寄存器加载不同的数据功耗肯定是不同的。如果将数据差异性消除,只观察地址的差异就可以推敲出密钥。
    

三、滑动窗口求模幂

滑动窗口是使用预计算的最快的模幂算法之一。由于它的效率,滑动窗口法已被广泛和实际地应用于许多RSA-CRT的实现中。下表总结了当前主流密码开源库中模幂用到的算法。
在这里插入图片描述

left-to-right

假设滑动窗口大小为 ω \omega ω
先将指数 e e e 用二进制表示,从左到右,从遇到非0比特开始,从左往右滑动最大长度 ω \omega ω内遇到最后一个非0比特截至作为当前的窗口。按照如此方式,每个窗口的值属于集合 { 1 , 3 , ⋯ , 2 ω − 1 } \{1,3,\cdots,2^{\omega-1}\} {1,3,,2ω1},将每个窗口值记为 e i e_i ei,则 e = ∑ e i ⋅ 2 i e = \sum e_i\cdot 2^i e=ei2i.

在这里插入图片描述

伪代码如下:
在这里插入图片描述

right-to-left

与 left-to-right相同,只是从右往左滑动:

在这里插入图片描述

人们认为滑动窗口在某种程度上是安全的,可以抵御类似于简单功率分析(SPA)的侧信道攻击,因为攻击者不能完全知道从滑动窗口的平方-乘法运算序列中得到完整的指数,但在CHES 2017 BBG+17 中,展示了通过滑动窗口进行模幂运算也是不安全的。

四、添加盲化因子的模幂运算

\quad 在RSA体制中,解密或者签名使用的是 x d ( m o d n ) x^d\pmod n xd(modn),但容易遭受章节二中的侧信道攻击,所以 Kocher 建议将 d d d 替换成 d + r ϕ ( n ) d+r\phi(n) d+rϕ(n), r r r是一个随机数。这时有 x d ≡ x d + r ϕ ( n ) ( m o d n ) x^d\equiv x^{d+r\phi(n)}\pmod n xdxd+rϕ(n)(modn), 因为 x ϕ ( n ) ≡ 1 ( m o d n ) x^\phi(n)\equiv 1\pmod n xϕ(n)1(modn).
\quad 使用盲化后的指数的方案可以有效防御上面的攻击。

添加盲化因子的模幂运算仍然存在的信息泄露

Bauer2012 采用 operation-dependent 攻击,他们假设攻击者知道每个盲化因子 r j r_j rj的一些信息,然后穷举未知的比特,最终得到 r ∼ ϕ ( n ) \overset{\sim}r\phi(n) rϕ(n)的估计值, r ∼ \overset{\sim}r r r r r 的估计,与已知的 d + r ϕ ( n ) d+r\phi(n) d+rϕ(n) 的已知信息进行匹配,排除不符的 r ∼ \overset{\sim}r r,得到所有的 r j r_j rj 后,就可以推测出 d d d 了。

  1. 猜测每个盲化因子 r j r_j rj的一些信息,通过筛选得到一些候选的 r j r_j rj
  2. 然后利用密钥中的冗余信息,得到唯一的最有可能的 r j r_j rj
  3. 根据2中的 r j r_j rj 反解 d d d

总结

添加盲化因子的模幂运算与滑动窗口算法仍然存在侧信息泄露,但我们可以将滑动窗口与添加盲化因子结合起来,对于这种方案,很难实施侧信道攻击。

这篇关于针对模幂运算的测信道攻击的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/712948

相关文章

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

uva 575 Skew Binary(位运算)

求第一个以(2^(k+1)-1)为进制的数。 数据不大,可以直接搞。 代码: #include <stdio.h>#include <string.h>const int maxn = 100 + 5;int main(){char num[maxn];while (scanf("%s", num) == 1){if (num[0] == '0')break;int len =

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网

【Java中的位运算和逻辑运算详解及其区别】

Java中的位运算和逻辑运算详解及其区别 在 Java 编程中,位运算和逻辑运算是常见的两种操作类型。位运算用于操作整数的二进制位,而逻辑运算则是处理布尔值 (boolean) 的运算。本文将详细讲解这两种运算及其主要区别,并给出相应示例。 应用场景了解 位运算和逻辑运算的设计初衷源自计算机底层硬件和逻辑运算的需求,它们分别针对不同的处理对象和场景。以下是它们设计的初始目的简介:

位运算:带带孩子吧,孩子很强的!

快速进制 在聊到位运算之前,不妨先简单过一遍二进制的东西。熟悉二进制和十进制的快速转换确实是掌握位运算的基础,因为位运算直接在二进制位上进行操作。如果不熟悉二进制表示,很难直观理解位运算的效果。 这里主要涉及二进制和十进制之间的互相转换。 十进制转二进制 十进制转二进制可以使用常见的 除2取余法 进行。每次将十进制除以2并记录所得余数,直到商为0,然后再将记录的余数 从下往上排列即

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数(开口向下),如下: 因为要使得其存在正解,必须满足,那么。 上述函数的最优结果为:,。 对应的mathematica代码如下: Clear["Global`*"]f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)Maximize[{f0[x, a, b,

VB和51单片机串口通信讲解(只针对VB部分)

标记:该篇文章全部搬自如下网址:http://www.crystalradio.cn/thread-321839-1-1.html,谢谢啦            里面关于中文接收的部分,大家可以好好学习下,题主也在研究中................... Commport;设置或返回串口号。 SettingS:以字符串的形式设置或返回串口通信参数。 Portopen:设置或返回串口

快速幂运算的一些模板

这里用递归和循环两种做法来做。 简单来说,快速幂就是把底数扩大,指数缩小,比如2*2=4;计算2的幂时,就可以转换成4的幂来运算,这样可以避免在计算大的数据时爆int的现象  //递归int power(int a,int n){int ans;if(n==2) ans=1;else{ans=power(a*a,n/2);if(n%2==1) ans*=a;}return ans;}

Web安全之XSS跨站脚本攻击:如何预防及解决

1. 什么是XSS注入 XSS(跨站脚本攻击,Cross-Site Scripting)是一种常见的Web安全漏洞,通过注入恶意代码(通常是JavaScript)到目标网站的网页中,以此在用户浏览网页时执行。攻击者可以通过XSS获取用户的敏感信息(如Cookie、会话令牌)或控制用户浏览器的行为,进而造成信息泄露、身份冒用等严重后果。 2. XSS攻击类型 2.1 存储型XSS 存储型XS

【前端安全】浅谈XSS攻击和防范

定义 XSS是跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。 恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。 分类 大分类小分类原理非存储DOM型① 不需要经过服务器