RSA算法深入剖析

数论基础

欧拉函数

小于n的正整数中与n互质的数的数目

若 n = pq ,p和q是质数,则 φ ( n ) = φ ( q ) ∗ φ ( p ) = ( q − 1 ) ∗ ( p − 1 ) \varphi(n) = \varphi(q)*\varphi(p) = (q-1)*(p-1) φ(n)=φ(q)φ(p)=(q1)(p1)

同余

同余:如果两个整数除以同一个整数m的余数相同,则二者关于m同余
a ÷ m … … n a\div m……n a÷mn b ÷ m … … n b\div m……n b÷mn
同理,若整数a和b满足a-b能被整数m整除,则两者关于m同余
a ≡ b    (    m o d   m ) a\equiv b\;(\;mod\ m) ab(mod m)

欧拉定理

欧拉定理:对于两个互质的正整数a和b,有 a φ ( n ) ≡ 1 ( m o d    b ) a^ {\varphi(n)}\equiv 1(mod\;b) aφ(n)1(modb)
( a φ ( n ) − 1 ) ÷ b … … 0 (a^ {\varphi(n)}- 1)\div b ……0 (aφ(n)1)÷b0

证明

看解密公式 c d ÷ n … … m c^d\div n……m cd÷nm
∵ m < n \because m<n m<n
∴ m ÷ n … … m \therefore m\div n……m m÷nm
∴ c d ≡ m    ( m o d    n ) \therefore c^d\equiv m\;(mod\;n) cdm(modn)
看加密公式
∵ m e ÷ n = j … … c \because m^e\div n=j……c me÷n=jc
∴ c = m e − j ∗ n \therefore c= m^e -j*n c=mejn
得到 c c c的一个代数式,将 c c c代入上面的同余式
( m e − j ∗ n ) d ≡ m    ( m o d    n ) (m^e -j*n)^d\equiv m\;(mod\;n) (mejn)dm(modn)
二项式定理展开得
m e d + m e ( d − 1 ) ∗ ( − j n ) + m e ( d − 2 ) ∗ ( − j n ) 2 + … … + m 2 e ∗ ( − j n ) d − 2 + m e ∗ ( − j n ) d − 1 + ( − j n ) d ≡ m    ( m o d    n ) m^{ed}+m^{e{(d-1)}}*(-jn)+m^{e{(d-2)}}*(-jn)^2+……+m^{2e}*(-jn)^{d-2}+m^e*(-jn)^{d-1}+(-jn)^d \equiv m\;(mod\;n) med+me(d1)(jn)+me(d2)(jn)2++m2e(jn)d2+me(jn)d1+(jn)dm(modn)
除了第一项每一项都包含因数n,而n的倍数除以n的余数为0,所以上面的式子可以简化为
m e d ≡ m    ( m o d    n ) m^{ed} \equiv m\;(mod\;n) medm(modn)
∵ e ∗ d ÷ φ ( n ) = k … … 1 \because e*d\div\varphi(n)=k……1 ed÷φ(n)=k1
∴ e ∗ d = k ∗ φ ( n ) + 1 \therefore e*d = k*\varphi(n)+1 ed=kφ(n)+1
代入同余式
m k ∗ φ ( n ) + 1 ≡ m    ( m o d    n ) m^{k*\varphi(n)+1} \equiv m\;(mod\;n) mkφ(n)+1m(modn)
此时,只要证明这个同余式成立就能证明通过解密能求出原文
分类讨论 m m m n n n互质和 m m m n n n不互质的情况讨论

情况1: m m m n n n互质,由欧拉定理得
m φ ( n ) ≡ 1 ( m o d    n ) m^ {\varphi(n)}\equiv 1(mod\;n) mφ(n)1(modn)
m φ ( n )    m o d   n = 1    m o d    n m^ {\varphi(n)}\;mod\ n = 1\;mod\;n mφ(n)mod n=1modn
k个式子相乘
m k φ ( n )    m o d   n = 1    m o d    n m^ {k\varphi(n)}\;mod\ n = 1\;mod\;n mkφ(n)mod n=1modn
将m个同余式相加
m k φ ( n ) + 1    m o d   n = m    m o d    n m^ {k\varphi(n)+1}\;mod\ n = m\;mod\;n mkφ(n)+1mod n=mmodn
m k φ ( p ) φ ( q ) ≡ 1 ( m o d    n ) m^ {k\varphi(p)\varphi(q)}\equiv 1(mod\;n) mkφ(p)φ(q)1(modn)
情况1证毕

情况2: m m m n n n不互质
∵ n = p ∗ q , m < n , p q 互 质 \because n = p*q,m<n,pq互质 n=pq,m<n,pq
∴ m 必 定 是 , 且 仅 是 p 或 q 中 某 一 个 的 倍 数 \therefore m必定是,且仅是p或q中某一个的倍数 mpq
设 m 是 p 的 倍 数 , 记 m = h ∗ p 设m是p的倍数,记m = h*p mpm=hp
∵ m < n \because m<n m<n
∴ h < q \therefore h<q h<q
∵ q 是 质 数 \because q是质数 q
∴ h 和 q 互 质 \therefore h和q互质 hq
∴ m = h ∗ p 和 q 互 质 \therefore m=h*p和q互质 m=hpq
根据欧拉定理可以得
m φ ( q ) ≡ 1 ( m o d    q ) m^ {\varphi(q)}\equiv 1(mod\;q) mφ(q)1(modq)
将 k φ ( p ) 个 这 样 的 同 余 式 相 乘 将k\varphi(p)个这样的同余式相乘 kφ(p)
m k φ ( p ) φ ( q ) ≡ 1 ( m o d    q ) m^ {k\varphi(p)\varphi(q)}\equiv 1(mod\;q) mkφ(p)φ(q)1(modq)
∵ φ ( n ) = φ ( q ) ∗ φ ( p ) \because \varphi(n) = \varphi(q)*\varphi(p) φ(n)=φ(q)φ(p)
∴ m k φ ( n ) ≡ 1 ( m o d    q ) \therefore m^ {k\varphi(n)}\equiv 1(mod\;q) mkφ(n)1(modq)
将m个这样的式子相加
m k ∗ φ ( n ) + 1 ≡ m    ( m o d    q ) m^{k*\varphi(n)+1} \equiv m\;(mod\;q) mkφ(n)+1m(modq)
根据同余规则 ( m k ∗ φ ( n ) + 1 − m )    m o d    q = 0 (m^{k*\varphi(n)+1} -m)\;mod\;q =0 (mkφ(n)+1m)modq=0
( m k ∗ φ ( n ) + 1 − m ) = t q (m^{k*\varphi(n)+1} -m)=tq (mkφ(n)+1m)=tq
∵ ( m k ∗ φ ( n ) + 1 − m ) 是 m 的 倍 数 , m = h ∗ p , m 是 p 的 倍 数 \because (m^{k*\varphi(n)+1} -m)是m的倍数,m=h*p,m是p的倍数 (mkφ(n)+1m)mm=hpmp
∴ t q 也 是 p 的 倍 数 \therefore tq也是p的倍数 tqp
∴ t 一 定 包 含 因 数 p \therefore t一定包含因数p tp
令 t q = s p q = s n 令tq =spq = sn tq=spq=sn
( m k ∗ φ ( n ) + 1 − m ) ÷ n = s … … 0 (m^{k*\varphi(n)+1} -m)\div n=s……0 (mkφ(n)+1m)÷n=s0
改写成同余式 m k φ ( p ) φ ( q ) ≡ 1 ( m o d    n ) m^ {k\varphi(p)\varphi(q)}\equiv 1(mod\;n) mkφ(p)φ(q)1(modn)
情况2证毕

RSA剖析

RSA并不是绝对安全的
2019年RSA-768密钥就被来自德国瑞士等团队成功攻破
量子计算的成熟更是通过秀儿算法的形式,对所有公开密钥算法形成严峻挑战
但是普通用户不用太过担心,不论是通过冯诺依曼机暴力破解,还是通过量子计算撞出私钥的可能性都不大,使用RSA做算法和数字签名依然是可行的,由于它的算法过于复杂,相比简单的AES更消耗设备性能,所以很多加密方案比如互联网常用的TLS,都会使用对称和非对称加密的混合方案,以在安全性和性能上实现平衡
在这里插入图片描述

数字签名

把文件和数据代入哈希函数,就可以得到哈希值,如果两个文件的数据一摸一样,则两个文件的hash值一定相同,如果两个文件的hash值。如果hash值不同,,则文件一定不相同。
公钥加密的数据可以用私钥解密,反过来私钥的数据也可以用公钥解密,借助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值