本系列将会介绍RSA、离散对数、椭圆曲线三大公钥加密算法,RSA算法将会作为该系列的第一篇。
1. 算法产生背景
公钥加密或说非对称加密其作用已经不言而喻,在实际中已经得到大量应用,比如HTTPS证书,其中便包含了网站的公钥信息。非对称加密与对称加密最大的区别是,加密与解密使用不同的密钥,通过公钥加密的内容只有通过私钥才能解密,反之亦然。因此,发布者完全可以把公钥公布于众,使发送者便于查询。与此相反,对称加密需要参与双方妥善保管密钥。
非对称加密非常类似数学里面没有反函数的一类函数,RSA选取的函数便是数论里面的同余理论,依赖的是大整数因数分解的困难性,下面我们不仅希望给出RSA算法的构造过程,更希望能证明该过程的正确性。
RSA算法可以通过数论和群论来描述,算法导论中使用群论来描述,而我们着重使用数论。
2. 预备知识
- 整除
符号m|a,表示m整除a,或a是m的倍数,等价于a= k*m - 同余
记a≡b(mod m),表示a、b除以m之后的余数相等,即同余。这等价于m|(a-b)
同余性质1:
若a1≡b1(mod m),a2≡b2(mod m),则(a1+a2)≡(b1+b2)(mod m)
同余性质2:
若a1≡b1(mod m),a2≡b2(mod m),则a1*a2≡b1*b2(mod m)
同余性质3:
若a≡b(mod m1),a≡b(mod m2),则a≡b(mod [m1,m2]),[m1,m2]为m1,m2的最小公倍数 - 最大公因数
记d=(a,m)为正整数a、m的最大公因数为d。当d=1时称a、m互质 - 欧几里德公式(证明请参考初等数论)
对任意的d=(a,m),存在整数x、y使得下式成立:
ax+my