在RSA 中引入中国剩余定理(CRT),来减小求模的运算量,缩小算法所需存储表的空间,同时还减小了算法中乘法的运算量,对RSA 算法在提高速度方面收到一些比较可观的效果。
经研究发现,在对模余操作的分析中,如果根据分析过程中得到的结果选择合适的输入再做下一步的分析,就可以减少进行DPA 攻击所需的功耗波形条数,进而提高攻击的效率。为此,提出一种针对RSA-CRT 的改进的MRED 攻击方法,通过先确定其中一个素数的位数,根据素数的位数选择合适的输入数据再进行一次DPA 攻击,逐字节得到该素数。
RSA算法及CRT实现简介
RSA加密算法是一种非对称加密算法,其密码体制描述如下:
设 n = p q n=pq n=pq, p p p 和 q q q 为素数,且 φ ( n ) = ( p − 1 ) ( q − 1 ) φ(n)=(p-1)(q-1) φ(n)=(p−1)(q−1), e d ≡ 1 ( m o d φ ( n ) ) ed\equiv1(mod\ φ(n)) ed≡1(mod φ(n)),
加密: c = m e m o d n c = m^e\ mod\ n c=me mod n,
解密: e = c d m o d n e = c^d\ mod\ n e=cd mod n,
其中 ( n , d ) (n,d) (n,d)为公钥,而(p,q,e)为私钥。
RSA-CRT作为一种广泛使用的用来执行解密或签名操作的技术,是在RSA的实现过程中引入中国剩余定理(CRT)。它的过程主要分为3步:模余、求幂、重组,在之前有一个预计算过程。它的过程如下:
预计算:
d p = d m o d ( p − 1 ) d_p = d\ mod\ (p-1) dp=d mod (p−1) // d d d为私钥, p p p为其中一个素数
d q = d m o d ( q − 1 ) d_q = d\ mod\ (q-1) dq=d mod (q−1) // d d d为私钥, q q q为另一个素数
k = p − 1 m o d q k=p^{-1}\ mod\ q k=p−1 mod q。
模余:
m p = m m o d p m_p = m\ mod\ p mp=m mod p // m为要签名的信息
m q = m m o d q m_q = m \ mod\ q mq=m mod q
求幂:
s p = m p d p m o d p s_p = m_p^{d_p}\ mod\ p sp=mpdp mod p,
s q = m q d q m o d q s_q = m_q^{d_q}\ mod\ q sq=mqdq mod q。
重组:
s = ( ( ( s q − s p ) × k ) m o d q ) × p + s p s=(((s_q-s_p)\times k)\ mod\ q)\times p + s_p s=(((sq−sp)×k) mod q)×p+sp
尽管这种实现过程比直接的二进制求幂要复杂,但进行求幂运算用到较小的数,它的运行要快很多,适合在计算及存储资源有限的密码设备如智能卡等之上实现。
对RSA-CRT的功耗分析攻击
研究所做工作,是在模余这一步进行攻击。如第一部分所述,RSA-CRT 在模余这一步需要计算: m p = m m o d p m_p = m\ mod\ p mp