RSA由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,当时他们三人都在MIT。RSA取自他们三人姓氏开头字母拼在一起组成的。
RSA是Diffie-Hellman公钥加密的实现,其安全性部分依赖于大整数分解的困难。之所以说“部分依赖于”,是因为至今还没证明RSA的安全性完全依赖于大整数分解。
(1)随意两个大素数p和q,计算 n=p*q ;
(2)根据gcd(d, (p-1)*(q-1))=1 计算 d;
(3)由 求得e 。
加密密钥(e,n),解密密钥(d,n),由n分解为p、q是困难的。
加密: ,其中M是消息,E( )是加密函数,C是加密后的密文。
解密: ,其中D( )是解密函数。
证明需要用到欧拉定理,先引出几个概念。
(1)欧拉函数φ(n),是指小于n且与n互素的整数的个数。特别地,有φ(1)=1,对素数p有φ(p)=p-1 。
(2)欧拉定理:对任意互素的a和n,有 。关于欧拉定理详细证明,请参看其他书籍。
RSA解密的证明:
[1] R. Rivest, A . Shamir, and L. Adleman. "A method for obtaining digital signatures and public-key cryptosystems". Communications of the ACM , vol. 21, no. 2, pp. 120–126, 1978.