数论基础
欧拉函数
小于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)=(q−1)∗(p−1)
同余
同余:如果两个整数除以同一个整数m的余数相同,则二者关于m同余
即
a
÷
m
…
…
n
a\div m……n
a÷m……n且
b
÷
m
…
…
n
b\div m……n
b÷m……n
同理,若整数a和b满足a-b能被整数m整除,则两者关于m同余
即
a
≡
b
(
m
o
d
m
)
a\equiv b\;(\;mod\ m)
a≡b(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)÷b……0
证明
看解密公式
c
d
÷
n
…
…
m
c^d\div n……m
cd÷n……m
∵
m
<
n
\because m<n
∵m<n
∴
m
÷
n
…
…
m
\therefore m\div n……m
∴m÷n……m
∴
c
d
≡
m
(
m
o
d
n
)
\therefore c^d\equiv m\;(mod\;n)
∴cd≡m(modn)
看加密公式
∵
m
e
÷
n
=
j
…
…
c
\because m^e\div n=j……c
∵me÷n=j……c
∴
c
=
m
e
−
j
∗
n
\therefore c= m^e -j*n
∴c=me−j∗n
得到
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)
(me−j∗n)d≡m(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(d−1)∗(−jn)+me(d−2)∗(−jn)2+……+m2e∗(−jn)d−2+me∗(−jn)d−1+(−jn)d≡m(modn)
除了第一项每一项都包含因数n,而n的倍数除以n的余数为0,所以上面的式子可以简化为
m
e
d
≡
m
(
m
o
d
n
)
m^{ed} \equiv m\;(mod\;n)
med≡m(modn)
∵
e
∗
d
÷
φ
(
n
)
=
k
…
…
1
\because e*d\div\varphi(n)=k……1
∵e∗d÷φ(n)=k……1
∴
e
∗
d
=
k
∗
φ
(
n
)
+
1
\therefore e*d = k*\varphi(n)+1
∴e∗d=k∗φ(n)+1
代入同余式
m
k
∗
φ
(
n
)
+
1
≡
m
(
m
o
d
n
)
m^{k*\varphi(n)+1} \equiv m\;(mod\;n)
mk∗φ(n)+1≡m(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=p∗q,m<n,pq互质
∴
m
必
定
是
,
且
仅
是
p
或
q
中
某
一
个
的
倍
数
\therefore m必定是,且仅是p或q中某一个的倍数
∴m必定是,且仅是p或q中某一个的倍数
设
m
是
p
的
倍
数
,
记
m
=
h
∗
p
设m是p的倍数,记m = h*p
设m是p的倍数,记m=h∗p
∵
m
<
n
\because m<n
∵m<n
∴
h
<
q
\therefore h<q
∴h<q
∵
q
是
质
数
\because q是质数
∵q是质数
∴
h
和
q
互
质
\therefore h和q互质
∴h和q互质
∴
m
=
h
∗
p
和
q
互
质
\therefore m=h*p和q互质
∴m=h∗p和q互质
根据欧拉定理可以得
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)+1≡m(modq)
根据同余规则
(
m
k
∗
φ
(
n
)
+
1
−
m
)
m
o
d
q
=
0
(m^{k*\varphi(n)+1} -m)\;mod\;q =0
(mk∗φ(n)+1−m)modq=0
(
m
k
∗
φ
(
n
)
+
1
−
m
)
=
t
q
(m^{k*\varphi(n)+1} -m)=tq
(mk∗φ(n)+1−m)=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)+1−m)是m的倍数,m=h∗p,m是p的倍数
∴
t
q
也
是
p
的
倍
数
\therefore tq也是p的倍数
∴tq也是p的倍数
∴
t
一
定
包
含
因
数
p
\therefore t一定包含因数p
∴t一定包含因数p
令
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)+1−m)÷n=s……0
改写成同余式
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值不同,,则文件一定不相同。
公钥加密的数据可以用私钥解密,反过来私钥的数据也可以用公钥解密,借助