1.非对称加密
RSA是一种非对称加密算法。由消息接收者将公钥发送给消息发送者,使用容易被截获的公钥来加密;把私钥一直保存在消息的接收者处,使用不容易被截获的私钥来解密。这样即使攻击者截获了公钥也无法获取加密后的内容。
这种算法还可以用于数字签名。使用发送端的私钥来加密数字签名,使用发送端传输给目标端的公钥来解密数字签名,如果解密成功,证明消息发送端是可靠的。而因为私钥难以获取,攻击者也难以用共钥伪造数字签名。
2.数论知识
欧拉函数
=小于N的正整数中与N互质的数的数目
欧拉函数有特殊性质:若p和q互质,且N=pq,则有
模逆元素
如果两个正整数a和n互质,那么一定可以找到整数b,使得ab-1被n整除,也就是ab与1模n时同余:
欧拉定理
当a,n为两个互质的正整数时,有:
这样,由于,
就是a关于模n的模逆元素
重要条件
证明:
假设a和b除以n的余数为c1,c2,则a和b可以写成
那么,
因此,a·b除以n的余数为,由于c1和c2都不能被n整除,因此
,即
3.RSA实践
- 基础数生成:选择两个大的且不相等的质数p和q,计算N=pq
- 求基础数欧拉函数:
- 寻找公钥:选择一个小于r的整数e使e与r互质
- 生成私钥:求e关于r的模逆元素d
这样(N,e)就是公钥,(N,d)就是私钥,p和q被销毁因此r也随之被销毁。消息接收者在执行完上述步骤后保存私钥,而将公钥发送给消息发送者。消息发送者用公钥加密信息:
其中n是信息的编码(必须小于N,可以分段编码并加密)。然后将信息发出,接收到消息的一方可以用自己的私钥来解密消息:
证明:
4.原理
大数分解质因数是很困难的,得到了N也很难得到p和q,自然很难得到(p-1)(q-1)=r,那么得到了e也很难得到e关于r的模逆元素d
而e和d又拥有单向的加密解密性,这使得非对称加密得以成立