RSA解密正确性证明

RSA解密正确性证明

先描述一下RSA密码体制:

RSA密码体制:

大素数 p , q p,q p,q,模数 n = p q n=pq n=pq,加密指数 b b b,解密指数 a a a,满足 a b ≡ 1 ( m o d ϕ ( n ) ) ab\equiv1 \pmod{\phi(n)} ab1(modϕ(n))

加密: c = m b   m o d   n c=m^{b}\bmod{n} c=mbmodn

解密: m = c a   m o d   n m=c^{a}\bmod{n} m=camodn

本篇是证明RSA解密确实能够得到明文 m m m

m ∈ Z n ∗ m\in \mathbb{Z}_{n}^{*} mZn

此时, g c d ( m , n ) = 1 gcd(m,n)=1 gcd(m,n)=1;解密公式为
c a ≡ m a b ≡ m t ϕ ( n ) + 1 ( m o d n ) c^{a}\equiv m^{ab}\equiv m^{t\phi(n)+1}\pmod{n} camabmtϕ(n)+1(modn)
由欧拉定理得到
m t ϕ ( n ) + 1 ≡ m ( m o d n ) m^{t\phi(n)+1}\equiv m\pmod{n} mtϕ(n)+1m(modn)
所以解密得到的是明文。

m ∉ Z n ∗ m\not \in \mathbb{Z}_{n}^{*} mZn

此时,由于 g c d ( m , n ) ≠ 1 gcd(m,n)\ne 1 gcd(m,n)=1,所以欧拉定理不能用。

我们分析: n = p q n=pq n=pq,且 p , q p,q p,q都是素数,若 m , n m,n m,n不互素,则必有 p ∣ m p|m pm或者 q ∣ m q|m qm。不失一般性,设 p ∣ m p|m pm,则 g c d ( q , m ) = 1 gcd(q,m)=1 gcd(q,m)=1,否则 n ∣ m n|m nm。由 ϕ ( n ) = ( p − 1 ) ( q − 1 ) \phi(n)=(p-1)(q-1) ϕ(n)=(p1)(q1)和欧拉定理有
m ϕ ( n ) ≡ 1 ( m o d q ) m^{\phi(n)}\equiv 1\pmod{q} mϕ(n)1(modq)
a b = t ϕ ( n ) + 1 ab=t\phi(n)+1 ab=tϕ(n)+1,则:
m t ϕ ( n ) ≡ 1 ( m o d q ) m^{t\phi(n)}\equiv 1\pmod{q} mtϕ(n)1(modq)
即存在 k k k,满足
m t ϕ ( n ) = k q + 1 m t ϕ ( n ) + 1 = m k q + m m t ϕ ( n ) + 1 = l p k q + m m^{t\phi(n)}=kq+1\\ m^{t\phi(n)+1}=mkq+m\\ m^{t\phi(n)+1}=lpkq+m mtϕ(n)=kq+1mtϕ(n)+1=mkq+mmtϕ(n)+1=lpkq+m
所以有
m t ϕ ( n ) + 1 ≡ m ( m o d n ) m^{t\phi(n)+1}\equiv m\pmod{n} mtϕ(n)+1m(modn)
证毕!

拓展

证明还可以根据如下事实: x 1 ≡ x 2 ( m o d p q ) x_{1}\equiv x_{2}\pmod{pq} x1x2(modpq)当且仅当 x 1 ≡ x 2 ( m o d p ) x_{1}\equiv x_{2}\pmod{p} x1x2(modp) x 1 ≡ x 2 ( m o d q ) x_{1}\equiv x_{2}\pmod{q} x1x2(modq)

证:当 p ∣ m p|m pm m a b ≡ m ( m o d q ) m^{ab}\equiv m\pmod{q} mabm(modq) m a b ≡ m ≡ 0 ( m o d p ) m^{ab}\equiv m\equiv 0 \pmod{p} mabm0(modp),所以有 m a b ≡ m ( m o d n ) m^{ab}\equiv m\pmod{n} mabm(modn)

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RSA正确性证明RSA算法正确性基于数论中的两个重要结论:欧拉定理和费马小定理。 欧拉定理:对于任何正整数a、n,如果a和n互质,那么a的欧拉函数φ(n)满足a^φ(n)≡1(mod n)。 费马小定理:对于任何素数p和任何整数a,a^(p-1) ≡ 1 (mod p)。 RSA算法正确性可以通过以下步骤进行证明: 1. 选择两个大素数p和q,并计算它们的乘积n=p*q。 2. 计算n的欧拉函数φ(n)=(p-1)*(q-1)。 3. 找到一个整数e,使得e与φ(n)互质,即gcd(e,φ(n))=1。 4. 计算e的模反元素d,使得e*d ≡ 1 (mod φ(n))。 5. 公钥为(n,e),私钥为(n,d)。 加密过程:将明文m进行加密,得到密文c:c ≡ m^e (mod n)。 解密过程:将密文c进行解密,得到明文m:m ≡ c^d (mod n)。 正确性证明:根据费马小定理,c^d ≡ (m^e)^d ≡ m^(e*d) ≡ m^(k*φ(n)+1) ≡ m * m^(k*φ(n)) (mod n),其中k为任意整数。由于m和n互质,因此根据欧拉定理得到m^φ(n) ≡ 1 (mod n),所以m^(k*φ(n)) ≡ 1 (mod n)。因此,c^d ≡ m (mod n),即RSA算法是正确的。 RSA主要的攻击手段: 1. 小质数攻击:如果使用的素数p或q太小,攻击者可以通过分解n来获得私钥。因此,RSA算法要求使用足够大的素数。 2. 常模攻击:攻击者可以通过分析加密后密文的模数n来获得私钥信息。为了防止此类攻击,RSA算法需要对明文进行填充。 3. 选择明文攻击:如果加密过程中使用相同的明文加密多次,攻击者可以通过观察密文之间的差异来获得私钥。为了防止此类攻击,RSA算法需要使用随机填充和随机数。 4. 时间攻击:攻击者可以通过观察加密或解密过程中的时间来破解私钥。为了防止此类攻击,RSA算法需要使用恒定时间算法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值