RSA算法过程以及正确性证明

本文可以帮助想要完全理解RSA原理的同学,完全掌握理解RSA的原理。

一、生成公钥、私钥

  1. 寻找两个不相同的大质数 p 、 q p、q pq
    随意寻找两个不相同的大质数 p p p q q q,计算 N = p × q N=p\times q N=p×q
  2. N N N 的欧拉函数值 φ ( N ) \varphi(N) φ(N)
    φ ( N ) = φ ( p ) φ ( q ) = ( p − 1 ) ⋅ ( q − 1 ) \varphi(N)=\varphi(p)\varphi(q)=(p-1)\cdot(q-1) φ(N)=φ(p)φ(q)=(p1)(q1)
    欧拉函数 φ ( n ) \varphi(n) φ(n) 的定义:
    φ ( n ) \varphi(n) φ(n) 是小于等于 n n n 的正整数中与 n n n 互质的数的数目。(第一次见的话肯定会觉得很奇怪,怎么还会有这么奇怪的函数(^_^))
  3. 计算私钥中最重要的 d d d
    选择一个小于 φ ( N ) \varphi(N) φ(N),并与 φ ( N ) \varphi(N) φ(N) 互质的整数 e e e,通常取65537,求得 e e e 关于 φ ( N ) \varphi(N) φ(N)的模反元素 d d d e ⋅ d ≡ 1 ( m o d    φ ( N ) ) e\cdot d\equiv 1(\mod\varphi(N)) ed1(modφ(N))
    模反元素的定义:
    如果两个正整数 a a a n n n 互质,那么一定可以找到整数 b b b,使得 n ∣ ( a ⋅ b − 1 ) n|(a\cdot b-1) n(ab1)。(前式等价于 a ⋅ b − k ⋅ n = 1 , k ∈ N ∗ a\cdot b-k\cdot n=1,k\in N^* abkn=1,kN,由贝祖定理易知,整数 b b b 一定存在)
  4. 销毁 p p p q q q
    此时我们的 ( N , e ) (N,e) (N,e)是公钥, ( N , d ) (N,d) (N,d)是私钥。

RSA算法的安全性: 已知 N N N e e e,是否容易得到 d d d

  1. 要想知道 d d d,就要知道 e e e φ ( N ) \varphi(N) φ(N)
  2. 要想知道 φ ( N ) \varphi(N) φ(N),就要根据 N N N 算出 p p p q q q,而大数的质数分解是目前公认的数学难题,只能暴力求解。

二、加密、解密

  1. 使用公钥 ( N , e ) (N,e) (N,e)加密, 假设明文为 m ( m &lt; N ) m(m&lt;N) m(m<N),则密文 c = m e % N c=m^e\%N c=me%N
  2. 使用私钥 ( N , d ) (N,d) (N,d)解密,则明文 m = c d % N m=c^d\%N m=cd%N

三、正确性证明(证明过程使用到欧拉定理

证明 m m m 经加解密后还是 m m m,即证明等式 m = ( m e % N ) d % N , m &lt; N m=(m^e\%N)^d\%N,m&lt;N m=(me%N)d%N,m<N

  1. 明文 m m m N N N 互质
    ( m e % N ) d % N (m^e\%N)^d\%N (me%N)d%N
    = m e d % N =m^{ed}\%N =med%N
    = m k φ ( N ) + 1 % N , k ∈ N ∗ =m^{k\varphi(N)+1}\%N,k\in N^* =mkφ(N)+1%N,kN
    = [ m ( m φ ( N ) % N ) k ] % N =[m(m^{\varphi(N)}\%N)^k]\%N =[m(mφ(N)%N)k]%N
    = m % N =m\%N =m%N
    = m =m =m
  2. 明文 m m m 不与 N N N 互质
    m m m 不与 N N N 互质, N = p q N=pq N=pq p 、 q p、q pq都为质数。则一定有 m = c p m=cp m=cp m = c q , c ∈ N ∗ m=cq,c\in N^* m=cq,cN
    我们假设 m = c p m=cp m=cp
    ( c p ) e d % q (cp)^{ed}\%q (cp)ed%q
    = ( c p ) k φ ( N ) + 1 % q , k ∈ N ∗ =(cp)^{k\varphi(N)+1}\%q,k\in N^* =(cp)kφ(N)+1%q,kN
    = ( c p ) k ( p − 1 ) ( q − 1 ) + 1 % q =(cp)^{k(p-1)(q-1)+1}\%q =(cp)k(p1)(q1)+1%q
    = [ c p ( ( c p ) q − 1 % q ) k ( p − 1 ) ] % q =[cp((cp)^{q-1}\%q)^{k(p-1)}]\%q =[cp((cp)q1%q)k(p1)]%q
    = ( c p ) % q =(cp)\%q =(cp)%q
    ( c p ) e d = c p + t q , t ∈ N ∗ (cp)^{ed}=cp+tq,t\in N^* (cp)ed=cp+tq,tN
    易知 ( c p ) e d % p = 0 (cp)^{ed}\%p=0 (cp)ed%p=0,即 ( c p + t q ) % p = 0 (cp+tq)\%p=0 (cp+tq)%p=0,即 t q % p = 0 tq\%p=0 tq%p=0
    显然 p 、 q p、q pq互质, ∴ t = r p , r ∈ N ∗ \therefore t=rp,r\in N^* t=rp,rN
    ∴ ( c p ) e d = c p + t q = c p + r p q = c p + r N \therefore (cp)^{ed}=cp+tq=cp+rpq=cp+rN (cp)ed=cp+tq=cp+rpq=cp+rN
    ∴ ( c p ) e d % N = ( c p + r N ) % N = ( c p ) % N \therefore (cp)^{ed}\%N=(cp+rN)\%N=(cp)\%N (cp)ed%N=(cp+rN)%N=(cp)%N
    m e d % N = m % N m^{ed}\%N=m\%N med%N=m%N
    m = ( m e % N ) d % N m=(m^e\%N)^d\%N m=(me%N)d%N,得证!
    证明部分参考的博客
  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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算法需要使用恒定时间算法

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值