目标
现有A B C D 四个人,A是接受方,B C D 写信给A,B C D 可以截取另一人发出的信(密文),但B C D 知道加密算法,却得不到明文即信的原内容。
过程
- 于是A用了RSA算法,发布了公钥(e, n)给B C D。
(e, n)e是一个按某要求选出来的数,n是两个大素数的乘积。
- B C D用公钥加密了明文发给A
- A用密钥解出原内容。
原理
-
可解得原文
即将 代入 中进行验证
即 吗?
是的,因为:
-----------(1)
k为正整数 -------------(2)
这将涉及到公钥的构造,欧拉函数,mod下的乘法运算
先看(2)为什么成立
已知(2)中是欧拉函数值,满足
a与m互素
n是两个大素数乘积,密文m与n互素的概率几乎为100%,所以满足上式,所以
图1
再看(1)为何成立
而公钥的构造中,要求选取公钥e,e是素数且e与 互素,故必然存在
图2
(可以理解为e和互素,所以不会因为公因子而得不到1)
综上,公钥设计通过 设计e和互素 构造 实现还原,B C D只有e是无法将 还原为 m 的,但是 A 有d才有 ,才可以还原出 m。
-
安全性
这里仅讨论RSA是较为安全的原因。
由上文可知,B C D要破译彼此内容,就要 ,就要d。
由图2中的 可知,我们需要。
由欧拉函数中的一个性质 φ ( n ) = ( p − 1 ) ( q − 1 )(数论知识自己查)我们需要将 n 分解为 p和q,才知道p-1,q-1,才知到φ ( n )。
综上,B C D只有将接受方A设计的大素数分解出p, q,才能破译截获的密文。