【Practical】RAS体系(二)加密解密算法

  • RAS体系(一)数学基础的最后已经介绍了RSA密钥生成算法,此时已经获得了一对公私钥。对方使用我的公钥对明文进行加密后得到密文,我收到密文后使用保护好的私钥进行解密,获得原本内容。

RSA密钥生成算法.

加密算法.

  • 加密使用幂模运算,公钥为 ( e , n ) (e,n) (e,n),明文为 X X X,那么密文 Y = X e   m o d   n . Y=X^e~mod~n. Y=Xe mod n.

解密算法.

  • 解密使用幂模运算,私钥为 ( d , n ) (d,n) (d,n),密文为 Y Y Y,那么明文 X = Y d   m o d   n . X=Y^d~mod~n. X=Yd mod n.

解密算法有效性.

  • 加密算法有效性很直观,容易理解,但解密算法的有效性不那么清晰,关键在于:为什么对密文进行幂模运算后就能够得到明文。
  • 加密过程使用的幂模运算 Y = X e   m o d   n Y=X^e~mod~n Y=Xe mod n 等价于 X e − Y = k n X^e-Y=kn XeY=kn,即 Y = X e − k n Y=X^e-kn Y=Xekn.
  • 将密文 Y Y Y 代入解密运算 X = Y d   m o d   n = ( X e − k n ) d   m o d   n X=Y^d~mod~n=(X^e-kn)^d~mod~n X=Yd mod n=(Xekn)d mod n,考察 ( X e − k n ) d (X^e-kn)^d (Xekn)d,根据二项式定理,除了第一项 X e d X^{ed} Xed 以外,之后的每一项中都有因式 k n kn kn,因此 ( X e − k n ) d   m o d   n = X e d   m o d   n (X^e-kn)^d~mod~n=X^{ed}~mod~n (Xekn)d mod n=Xed mod n.
  • 回顾RSA密钥生成算法中 ( e , d ) (e,d) (e,d) 产生的公式 e d ≡ 1 ( m o d   ϕ ( n ) ) ed≡1(mod~\phi(n)) ed1(mod ϕ(n)),所以有 e d − 1 = t ⋅ ϕ ( n ) ed-1=t·\phi(n) ed1=tϕ(n),因此上面的式子可以写为 X t ⋅ ϕ ( n ) + 1   m o d   n X^{t·\phi(n)+1}~mod~n Xtϕ(n)+1 mod n.
  • X与n互质】第一种情况,互质时根据欧拉定理,有 X ϕ ( n ) = k n + 1 X^{\phi(n)}=kn+1 Xϕ(n)=kn+1,所以 X t ϕ ( n ) = ( k n + 1 ) t X^{t\phi(n)}=(kn+1)^t Xtϕ(n)=(kn+1)t. 同样根据二项式定理可以发现 ( k n + 1 ) t   m o d   n = 1 (kn+1)^t~mod~n=1 (kn+1)t mod n=1

模运算法则 ( a b )   m o d   n = [ ( a   m o d   n ) ( b   m o d   n ) ] m o d   n (ab)~mod~n=[(a~mod~n)(b~mod~n)]mod~n (ab) mod n=[(a mod n)(b mod n)]mod n.

  • 所以解密过程的公式 X t ⋅ ϕ ( n ) + 1   m o d   n = [ ( X t ϕ ( n )   m o d   n ) ( X   m o d   n ) ] m o d   n = X   m o d   n X^{t·\phi(n)+1}~mod~n=[(X^{t\phi(n)}~mod~n)(X~mod~n)]mod~n=X~mod~n Xtϕ(n)+1 mod n=[(Xtϕ(n) mod n)(X mod n)]mod n=X mod n. 由于本情况中限制了 X X X n n n 互质,因此当 X < n X<n X<n X   m o d   n = X X~mod~n=X X mod n=X,解密算法可以还原出明文。

RSA规范】关于 X ≥ n X≥n Xn,RSA规范中限制了 X X X 的范围是 ( 0 , n − 1 ) (0,n-1) (0,n1).

  • X与n不互质】由于 n = p q n=pq n=pq,所以 n n n 只有这两个因子,显然 X X X 的因子中不能同时出现这两个数,否则将有 X ≥ n X≥n Xn. 不妨令 X = k p X=kp X=kp,那么 X X X q q q 互质,根据欧拉定理有 X ϕ ( q ) ≡ 1 ( m o d   q ) , ϕ ( q ) = q − 1. X^{\phi(q)}≡1(mod~q),\phi(q)=q-1. Xϕ(q)1(mod q),ϕ(q)=q1.

同余性质】若 a ≡ b ( m o d   n ) a≡b(mod~n) ab(mod n),则 a r ≡ b r ( m o d   n ) a^r≡b^r(mod~n) arbr(mod n).

  • 因此上式可以写为 X t ⋅ ϕ ( q ) ϕ ( p ) ≡ 1 ( m o d   q ) X^{t·\phi(q)\phi(p)}≡1(mod~q) Xtϕ(q)ϕ(p)1(mod q),两边同时乘以 X X X,得 X t ⋅ ϕ ( q ) ϕ ( p ) + 1 ≡ X ( m o d   q ) X^{t·\phi(q)\phi(p)+1}≡X(mod~q) Xtϕ(q)ϕ(p)+1X(mod q).
  • 根据欧拉函数的性质可知 ϕ ( n ) = ϕ ( p ) ϕ ( q ) \phi(n)=\phi(p)\phi(q) ϕ(n)=ϕ(p)ϕ(q),所以 t ⋅ ϕ ( q ) ϕ ( p ) + 1 = t ϕ ( n ) + 1 = e d t·\phi(q)\phi(p)+1=t\phi(n)+1=ed tϕ(q)ϕ(p)+1=tϕ(n)+1=ed,所以 X e d ≡ X ( m o d   q ) X^{ed}≡X(mod~q) XedX(mod q),即 X e d = X + h q , h ∈ Z X^{ed}=X+hq,h∈Z Xed=X+hq,hZ. 本情况中假设了 X = k p X=kp X=kp,所以 ( k p ) e d = k p + h q (kp)^{ed}=kp+hq (kp)ed=kp+hq.
  • 上述等式中 p ∣ ( k p ) e d p|(kp)^{ed} p(kp)ed,因此 p ∣ ( k p + h q ) p|(kp+hq) p(kp+hq),所以有 p ∣ h q p|hq phq. 由于 p , q p,q p,q 互质,所以一定有 h = r p h=rp h=rp,所以 X e d = k p + h q = k p + r p q = X + r n X^{ed}=kp+hq=kp+rpq=X+rn Xed=kp+hq=kp+rpq=X+rn.
  • 解密运算 X e d   m o d   n = ( X + r n )   m o d   n = [ ( X   m o d   n ) ( r n   m o d   n ) ] m o d   n = X   m o d   n X^{ed}~mod~n=(X+rn)~mod~n=[(X~mod~n)(rn~mod~n)]mod~n=X~mod~n Xed mod n=(X+rn) mod n=[(X mod n)(rn mod n)]mod n=X mod n,因为 X ∈ ( 0 , n − 1 ) X∈(0,n-1) X(0,n1),所以 X   m o d   n = X X~mod~n=X X mod n=X,解密得到了明文。

破解RSA.

  • RSA密钥生成算法中共涉及 p , q , n , e , d p,q,n,e,d p,q,n,e,d,其中 n , e , d n,e,d n,e,d 是保留的,并且 ( e , n ) (e,n) (e,n) 作为公钥公开,那么破解则是需要根据 e , n e,n e,n 推算出 d d d.
  • e d ≡ 1 ( m o d   ϕ ( n ) ) ed≡1(mod~\phi(n)) ed1(mod ϕ(n)),而 ϕ ( n ) = ( p − 1 ) ( q − 1 ) \phi(n)=(p-1)(q-1) ϕ(n)=(p1)(q1),所以需要知道用于生成 n n n 的两个相异素数 p , q p,q p,q.
  • RSA加密安全性背后的数论原理:将两个大素数(例如现在使用的2048位)相乘很容易,但对乘积结果进行素因子分解,得到原来的两个素数却极为困难。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值