什么是rsa算法?SA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。本文将详细讲述RSA算法,包括内部使用数学原理以及产生的过程。
在了解RSA算法之前,先熟悉下几个术语 ,根据密钥的使用方法,可以将密码分为对称密码和公钥密码
对称密码:加密和解密使用同一种密钥的方式。
公钥密码:加密和解密使用不同的密码的方式,因此公钥密码通常也称为非对称密码。
RSA加密算法
RSA加密算法的单向函数基于质因数分解问题。
质因数分解问题指数论中的一个简单事实:计算两个素数的乘积很简单,但要把这个乘积重新分解为两个素数却很难。
步骤
RSA算法由三部分构成:
密钥生成算法
加密算法
解密算法
1. 密钥生成算法
随机生成两个素数 p,q
计算 n=pq
计算欧拉函数 φ(n)=(p−1)(q−1)
选取一较小的与φ(n)
互质的正整数e。那么(n, e)为密钥对中的公钥
计算e在模φ(n)
下的数论倒数d,d≡e−1modφ(n)
,那么(n, d)为密钥对中的私钥
2. 加密算法
计算
C=fe(M)=Memodn
其中M为明文,(n, e)为公钥,C为密文
3. 解密算法
计算
M=fd(C)=Cdmodn
其中C为密文,(n, d)为私钥,M为明文
根据加密、解密过程中n、e、d三数扮演的角色,我们把n称为公共模数,把e称为公共指数,把d称为私有指数。
实例演示
在公钥加密通信中,小明要给小红发信息,那么小红首先需要生成两个素数p和q。为了计算简单,我们假设p = 17和q = 23,实际应用中p和q往往长达数百上千位。
计算n=17∗23=391
而φ(n)=(17−1)(23−1)=352
选取和352互质的7作为公钥中的e。那么公钥就是(391, 7)。
然后计算7在模352下的数论倒数d。使用扩展欧几里德算法求得d = 151。
验证一下,d∗e=151∗7=1057,而1057mod352=1,所以151是7在模352下的数论倒数。私钥为(391, 151)。
小红通过公共信道把公钥(391, 7)发给小明。
假设小明要发给小红的信息是79,对它进行加密,也就是计算797mod391=37。得到密文C = 37。
小明将密文37发送给小红。
小红收到后,进行解密运算37151mod391=79。得到原文79。
RSA算法的过程
RSA算法用到的数学知识特别多,所以在中间介绍这个算法生成私钥和公钥的过程中会穿插一些数学知识。生成步骤如下:
1. 寻找两个不相同的质数
随意选择两个大的质数p和q,p不等于q,计算N=p*q;
什么是质数?我想可能会有一部分人已经忘记了,定义如下:
除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1该数本身两个正因数]的数)。
比如2,3,5,7这些都是质数,9就不是了,因为3*3=9了
2. 根据欧拉函数获取r
r = φ(N) = φ(p)φ(q) = (p-1)(q-1)。
这里的数学概念就是什么是欧拉函数了,什么是欧拉函数呢?
欧拉函数的定义:
欧拉函数 φ(n)是小于或等于n的正整数中与n互质的数的数目。
互质的定义:
如果两个或两个以上的整数的最大公约数是 1,则称它们为互质
例如:φ(8) = 4,因为1,3,5,7均和8互质。
推导欧拉函数:
(1)如果n = 1, φ(1) = 1;(小于等于1的正整数中唯一和1互质的数就是1本身);
(2)如果n为质数,φ(n) = n - 1;因为质数和每一个比它小的数字都互质。比如5,比它小的正整数1,2,3,4都和他互质;
(3) 如果n是a的k次幂,则 φ(n) = φ(a^k) = a^k - a^(k-1) = (a-1)a^(k-1);
(4) 若m,n互质,则φ(mn) = φ(m)φ(n)
证明:设A, B, C是跟m, n, mn互质的数的集,据中国剩余定理(经常看数学典故的童鞋应该了解,剩余定理又叫韩信点兵,也叫孙子定理),A**B*和C可建立双射一一对应)的关系。(或者也可以从初等代数角度给出欧拉函数积性的简单证明) 因此的φ(n)值使用算术基本定理便知。(来自维基百科)
3. 选择一个小于r并与r互质的整数e
选择一个小于r并与r互质的整数e,求得e关于r的模反元素,命名为d(ed = 1(mod r)模反元素存在,当且仅当e与r互质),e我们通常取65537。
模反元素:
如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1。
比如3和5互质,3关于5的模反元素就可能是2,因为3*2-1=5可以被5整除。所以很明显模反元素不止一个,2加减5的整数倍都是3关于5的模反元素{…-3, 2,7,12…} 放在公式里就是3*2 = 1 (mod 5)
上面所提到的欧拉函数用处实际上在于欧拉定理:
欧拉定理:
如果两个正整数a和n互质,则n的欧拉函数 φ(n) 可以让下面的等式成立:
a^φ(n) = 1(mod n)
由此可得:a的φ(n - 1)次方肯定是a关于n的模反元素。
欧拉定理就可以用来证明模反元素必然存在。
由模反元素的定义和欧拉定理我们知道,a的φ(n)次方减去1,可以被n整除。比如,3和5互质,而5的欧拉函数φ(5)等于4,所以3的4次方(81)减去1,可以被5整除(80/5=16)。
小费马定理:
假设正整数a与质数p互质,因为质数p的φ(p)等于p-1,则欧拉定理可以写成
a^(p-1) = 1 (mod p)
这其实是欧拉定理的一个特例。
RSA算法原理
关于RSA算法的原理,实际上我们主要关心两点:
为什么RSA加密是正确的?
为什么RSA加密不容易破解?
正确性
所谓正确性,也就是指加密后的密文可以被正确解密为明文,即证明等式
M=fd(fe(M))
成立。
证明过程:
对原式进行展开
fd(fe(M))=fd(Memodn)=(Memodn)dmodn=Medmodn
由中国剩余定理推论,我们可以知道,要证明
Med≡Mmodn
相当于证明
Med≡Mmodp以及Med≡Mmodq
下面我们使用费马小定理证明 Med≡Mmodp
首先需要对M进行分情况讨论。
当p整除M时,
不符合费马小定理的应用条件,但此时有 M≡0modp ,所以 Med≡Mmodp
必然成立。
当p不能整除M时,
因为RSA算法中d为e在模φ(n)下的数论倒数,则
d≡e−1modφ(n)⇒ed≡1modφ(n)⇒ed=1+kφ(n)=1+k(p−1)(q−1)
所以有
Medmodp=M1+k(p−1)(q−1)modp=M(Mp−1)k(q−1)modp
由费马小定理可知 Mp−1≡1modp
所以有
Medmodp=M(Mp−1)k(q−1)modp=M(1)k(q−1)modp=Mmodp
同理可以证明 Med≡Mmodq
所以等式M=fd(fe(M))成立。
以上,是为大家分享"rsa算法产生的过程与原理详解”的全部内容,如果用户遇到的问题不能解决,可通过WoTrus官网 客服寻求帮助.