RSA公钥密码系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自 1994 年四季度起,我国 CHINAPAC 网加大了宣传力度并实行 了一系列优惠措施。1995 年.使用 E-Mail 的用户迅速增加.数据通 讯中的信息加密开始在我国民间受到重视。由于 DES 数据加密标准 算法较早传人我国,相对来说掌握此项技术的人也较多.所以相当多 的用户使用了 DES 算法。但是 DES 算法的密钥只有 2^56≈7.21e16。 显然有些不足,所以 DES 算法的可靠性一直受到广泛关注。1995 年, 129 位十进制数 RSA129 在 1993 年被成功破译的信息传来后,人们 根据运算工作量估算,对当前速度最快的计算机,穷举搜索这 7.21e16 个密钥大概只需要几天或十几天的时间。又考虑到美国已经提出了第 三方保管密钥的加密标准(The Escrow Encryption Standard 简称为 ‘EES’)采用 80bit 密钥称作 SKIPJACK 的加密算法,欧洲提出了 128bit 密钥处理 64bit 数据块的加密算法称作国际数据加密算法(The
P=U+V,Q=U-V
这就可以提供另一种因子分解方法,若 P,Q 比较接近,U 将稍大于
N ,我们可以计算(int( N )+i)2-N,其中 int()为取整函数,i=0,1,2,…
若找到一个数 r,使当 i=r 时,S=(int( N )+r)2-N 且 S 是一个平方数
时,则
U=int( N )+r,V= S ,问题得到解决。
32262-10332547=10407076-10332547=74529 (273)2
因而 U=3226,V=273 ;从而 P=3226+273=3499,Q=3226-273=2953,P*Q=10332547。 例 2:分解 N=5541953。
N =2354.135…,int( N )=2354 23552-5541953=5546025-5541953=4072 (63.81…)2 这很不容易找到一个是平方数的数,而取 M=3×5541953=16625859
RSA 公钥密码系统
徐厚骏
[摘要] RSA 加密算法是由 Rivest、Shamir 和 Adleman 提出的基于素数理论的密码系统, 是第一个较为成功的公钥密码系统,也是目前应用比较广泛的公钥密码系统,本文较详细地 给出了 RSA 公钥密码系统的证明,同时给出了操作方法和安全性说明。
[关键词] 数据通讯 信息加密 公钥密码系统 RSA 加密算法
4. RSA 公钥密码系统
1978 年 Rivest、Shamir 和 Adleman 提出的公钥密码系统,称为 RSA 公钥密码系统,是第一个较为成功的公钥密码系统,也是目的 应用比较广泛的公钥密码系统,现作一简要的介绍。
4.1 RSA 算法中用到的一些量 (1)大素数(如大于 100 位十进制数)p 和 q(保密的); (2)n=p×q(公开的); (3)n 的 Euler 函数Φ(n)=(p-1)×(q-1)(保密的); (4)与Φ(n)互素的加密密钥 e(公开的),即 e 满足 gcd{e,Φ(n)}= 1; (5)作为解密密钥,选取 e 相对于模Φ(n)的逆元素 d(保密的), d 满足 d×e≡l (modulo Φ(n))。 4.2 RSA 算法 若以 m 代表明文,c 代表密文,则 (1)加密算法 c≡E(m)≡me (modulo n),即有 c=mod(me,n); (2)解密算法 m≡D(c)≡cd (modulo n),即有 m=mod(cd,n)。 4.3 RSA 算法的证明 只要证明解密算法能恢复明文即可。由于
2×2 !
3×3 !
2.2 同余
模运算:b=mod(a,m),表示 a 除以 m 的余数为 b。 定义:若 mod(a,m)=mod(b,m),则可写作 a=km 十 b,k 为一 整数,我们称 a 和 b 模 m 同余,记作: a≡b (modulo m〕其中 m 称为这个同余式的模。 定理 2:模 m 的同余关系满足 (1) 自反性:即 a≡a (modulo m); (2) 对称性:即若 a≡b (modulo m),则 b≡a (modulo m); (3) 传递性:即若 a≡b (modulo m),且 b≡c (modulo m), 则 a≡ c (modulo m)。 定理 3:若 a≡b (modulo m)且 c≡d (modulo m),则 (1) a±c≡b±d (modulo m); (2) a×c≡b×d (modulo m)。 定理 4:若 a×c≡b×c (modulo m)且 d=gcd{c,m}, 则 a≡b (modulo m/d)。 2.3 同余类 Euler 函数:在 0、l、2、……m-1 这 m 个数中,和 m 互素的数 的个数称为数 m 的 Euler 函数,表示为Φ(m)。 每个整数,总是与 0、1、2……m-1 这 m 个数中的一个数 r 模 m 同余,且仅和这一个数模 m 同余,所有模 m 和 r(0<=r<=m-1)同余的 整数,组成一个“同余类”,用[r]表示。如果 r 与模数 m 互素,则同 余类[r]中的每个数都与 m 互素,称作同余类[r]与模数 m 互素。所以 模数 m 的 Euler 函数Φ(m)即代表了和模数 m 互素的同余类的数目。 定理 5:若 m1 和 m2 互素,则 Φ(m1×m2)=Φ(ml)×Φ(m2)。 定理 6:若 m=p1a1×P2a2×…×pkak,则 Φ(m)=m×(1-1/P1)×(1-1/p2)×…×(1-1/pk) 若 m 是素数, 则 Φ(m)=m-1。 定理 7:若 a 和 m 互素,则有 aΦ(m)≡1 (modulo m)称作 Euler 定理。 2.4 逆元素 定义:对于一个整数 a,如果存在一个整数 a’,使得 a×a’≡1 (modulo m),则称 a’是 a 相对于模 m 的逆元素。若 a 和 m 互索,则有 a’=mod(a(Φ(m)-1),m)。
⒉ 必要的数论知识
2.1 因子分解 素数:只能被 1 和该数自身除尽的整数。 合数:不是 l 且非素数的整数。 最大公因子:若 a 能除尽 b 且 a 也能除尽 c,即 a 是 b 和 c 的公 因子,若 b 和 c 的每个公因子wk.baidu.com能除尽 a,则 a 是 b 和 c 的最大公因 子,表示为:
a=gcd{b,c} 定义:若 gcd{a,b}=士 1。则称 a 和 b 互素。 定理 l:每一个正合数都可表示为正素数的乘积,且当不考虑乘 积的顺序时,表示方法是唯一的。
Internotional Data Encryption Algorithm 简称为‘IDEA’)。另外,使 用三个不同密钥的三重 DES 加密算法也在使用,因此出现了完善现 有加密算法以适应 Internet 和 E-Mail 的要求。经过充分比较,认识到 把公钥密码技术和密钥密码技术相结合,可以获得安全性和高性能的 结合。为此选择了使用临时随机密钥的 DES 算法加密信息,再使用 RSA 算法对 DES 密钥进行数字签名和加密,为了避免冒充,数字签 名是必须的。因此,解决 RSA 算法的关键问题成为这一工作成功的 保证。笔者在实施过程中对其有了一个较全面的了解,现介绍如下。
S(N)=exp(-3.81809+0.88796*sqr(26.411+(N-0.07515)2)-1.10e-1*N+3.70e-3*N2 )
其中 exp(x)为 e 的 x 次幂; sqr(x)为 x 的平方根 。
2.7 指数的模运算 x=mod(ar,p)算法
这是 RSA 算法中的关键。这里用 N—S 图表示如下。
3. 大数的因子分解
RSA 算法中 n=p×q 是公开的,公鈅 e 是公开的,只要因子分解
n 得出 p 和 q,就可依据 d×e≡l (modulo Φ(n))求出密钥 d,RSA 密
码系统被破解。
如果一个正奇数 N=P*Q,且 P>Q,我们可以写成
N=U2-V2
其中 U=(P+Q)/2, V=(P-Q)/2 ,有
定理 8:若 P 是素数,则 aP≡a (modulo P)称作 Fermat 定理。 注意:满足 Fermat 定理的数 P,并不全为素数。 2.5 素数的概率检验法 定义:对于一个正奇数 m 和非负整数 t,可得到一个正奇数 n=2t ×m+1,若存在正整数 a,使得 am≡l (modulo n) 或者同时存在一个非负整数 h,0<=h<=t-1,使得 a(2^h×m)≡-1 (modulo n),(其中 2^h=2h) 则称 n 关于 a 通过 Miller 检验。 定理 9:对于正整数 p,有任意正整数 a,若 gcd{p,a}=l,且满 足 Fermat 定理(定理 8),即 aP≡a (modulo P),则 p 关于 a 通过 Miller 检验。 Rabin 素数概率捡验法:若 p 是正整数,随机选取 k 个小于 p 的 不同正整数,如若关于这 k 个数 Miller 检验全部通过,则 p 是合数的 概率为(1/4)k [1]。 由此可见,当 k 足够大时.p 是素数的出错概率只是一个微小的 数,例如若 k=166,可知(1/4)166=1.14e-100,已经非常之小。这是产 生素数的主要方法。 2.6 强素数 强素数是满足某些特性的素数, 定义:一个正整数 P,如果 P 和(P-1)/2 都是素数,则称 P 为强 素数。例: 5,7,11,23,47 等是强素数; 2147481143 也是强素数,因为(2147481143-1)/2=1073740571 也 是素数。 2147483579 也是强素数,因为(2147483579-1)/2=1073741789 也 是素数。 强素数是无限多的。小于整数 N 的强素数数量 S 可用以下近似 式计算:
素数的个数是无限的,不大于正整数 N 的素数个数 P,有比较精 确的近似式如下:
P = Li( N )− 1 Li( N ) 2
其中
x dt
L i(
x
)
=
∫
2
ln(
t
)
展开式为:
Li( x ) = ln(ln( x )) + ln( x ) + (ln( x ))2 + (ln( x ))3 + …
⒈ 前言
我国的因特网(Internet)现已经发展到商业网,E-Mail 已广为应 用,另外还有三金工程,各部门、各行业、各省市的行业网、地区网 的建成,数据传输比当年 CHINAPAC 网的应用更为普遍。金融、商 业、政府等的通信对保密的要求愈来愈高,从而激起了对数据通讯中 的信息加密研究的热情。从商业角度来说,DES 是一个很好的加密算 法,而为了提高安全性和避开传递密钥的麻烦,人们广泛地使用临时 随机密钥,这需要用 RSA 算法对其密钥加密。RSA 公钥密码系统由 于加密密钥公开,为信息加密带来了极大的方便,更由于 RSA 加密 算法可以方便地实现数字签名,在网络通信高度发达的今天,意义更 加显得突出。
例 1:分解 N=10332547。
N =3214.428…,int( N )=3214
32152-10332547=10336225-10332547=3678 (60.646…)2
32162-10332547=10342656-10332547=10109 (100.54…)2
……
32252-10332547=10400625-10332547=68078 (260.91…)2
M =4077.48…,int( M )=4077 40782-16625859=16630084-16625859=4225 (65)2 计算 gcd{65+4078,16625859}=gcd{4143,16625859}=4013 5541953/4013=1381;即 P=4013,Q=1381,P*Q=4013*1381=5541953。 上述概念可进一步拓广为:若存在 U>V,且 U2≡V2 (modulo N) 可从求 gcd(U+V,N) 或 gcd(U-V,N) 而得出 N 的因数。
P=U+V,Q=U-V
这就可以提供另一种因子分解方法,若 P,Q 比较接近,U 将稍大于
N ,我们可以计算(int( N )+i)2-N,其中 int()为取整函数,i=0,1,2,…
若找到一个数 r,使当 i=r 时,S=(int( N )+r)2-N 且 S 是一个平方数
时,则
U=int( N )+r,V= S ,问题得到解决。
32262-10332547=10407076-10332547=74529 (273)2
因而 U=3226,V=273 ;从而 P=3226+273=3499,Q=3226-273=2953,P*Q=10332547。 例 2:分解 N=5541953。
N =2354.135…,int( N )=2354 23552-5541953=5546025-5541953=4072 (63.81…)2 这很不容易找到一个是平方数的数,而取 M=3×5541953=16625859
RSA 公钥密码系统
徐厚骏
[摘要] RSA 加密算法是由 Rivest、Shamir 和 Adleman 提出的基于素数理论的密码系统, 是第一个较为成功的公钥密码系统,也是目前应用比较广泛的公钥密码系统,本文较详细地 给出了 RSA 公钥密码系统的证明,同时给出了操作方法和安全性说明。
[关键词] 数据通讯 信息加密 公钥密码系统 RSA 加密算法
4. RSA 公钥密码系统
1978 年 Rivest、Shamir 和 Adleman 提出的公钥密码系统,称为 RSA 公钥密码系统,是第一个较为成功的公钥密码系统,也是目的 应用比较广泛的公钥密码系统,现作一简要的介绍。
4.1 RSA 算法中用到的一些量 (1)大素数(如大于 100 位十进制数)p 和 q(保密的); (2)n=p×q(公开的); (3)n 的 Euler 函数Φ(n)=(p-1)×(q-1)(保密的); (4)与Φ(n)互素的加密密钥 e(公开的),即 e 满足 gcd{e,Φ(n)}= 1; (5)作为解密密钥,选取 e 相对于模Φ(n)的逆元素 d(保密的), d 满足 d×e≡l (modulo Φ(n))。 4.2 RSA 算法 若以 m 代表明文,c 代表密文,则 (1)加密算法 c≡E(m)≡me (modulo n),即有 c=mod(me,n); (2)解密算法 m≡D(c)≡cd (modulo n),即有 m=mod(cd,n)。 4.3 RSA 算法的证明 只要证明解密算法能恢复明文即可。由于
2×2 !
3×3 !
2.2 同余
模运算:b=mod(a,m),表示 a 除以 m 的余数为 b。 定义:若 mod(a,m)=mod(b,m),则可写作 a=km 十 b,k 为一 整数,我们称 a 和 b 模 m 同余,记作: a≡b (modulo m〕其中 m 称为这个同余式的模。 定理 2:模 m 的同余关系满足 (1) 自反性:即 a≡a (modulo m); (2) 对称性:即若 a≡b (modulo m),则 b≡a (modulo m); (3) 传递性:即若 a≡b (modulo m),且 b≡c (modulo m), 则 a≡ c (modulo m)。 定理 3:若 a≡b (modulo m)且 c≡d (modulo m),则 (1) a±c≡b±d (modulo m); (2) a×c≡b×d (modulo m)。 定理 4:若 a×c≡b×c (modulo m)且 d=gcd{c,m}, 则 a≡b (modulo m/d)。 2.3 同余类 Euler 函数:在 0、l、2、……m-1 这 m 个数中,和 m 互素的数 的个数称为数 m 的 Euler 函数,表示为Φ(m)。 每个整数,总是与 0、1、2……m-1 这 m 个数中的一个数 r 模 m 同余,且仅和这一个数模 m 同余,所有模 m 和 r(0<=r<=m-1)同余的 整数,组成一个“同余类”,用[r]表示。如果 r 与模数 m 互素,则同 余类[r]中的每个数都与 m 互素,称作同余类[r]与模数 m 互素。所以 模数 m 的 Euler 函数Φ(m)即代表了和模数 m 互素的同余类的数目。 定理 5:若 m1 和 m2 互素,则 Φ(m1×m2)=Φ(ml)×Φ(m2)。 定理 6:若 m=p1a1×P2a2×…×pkak,则 Φ(m)=m×(1-1/P1)×(1-1/p2)×…×(1-1/pk) 若 m 是素数, 则 Φ(m)=m-1。 定理 7:若 a 和 m 互素,则有 aΦ(m)≡1 (modulo m)称作 Euler 定理。 2.4 逆元素 定义:对于一个整数 a,如果存在一个整数 a’,使得 a×a’≡1 (modulo m),则称 a’是 a 相对于模 m 的逆元素。若 a 和 m 互索,则有 a’=mod(a(Φ(m)-1),m)。
⒉ 必要的数论知识
2.1 因子分解 素数:只能被 1 和该数自身除尽的整数。 合数:不是 l 且非素数的整数。 最大公因子:若 a 能除尽 b 且 a 也能除尽 c,即 a 是 b 和 c 的公 因子,若 b 和 c 的每个公因子wk.baidu.com能除尽 a,则 a 是 b 和 c 的最大公因 子,表示为:
a=gcd{b,c} 定义:若 gcd{a,b}=士 1。则称 a 和 b 互素。 定理 l:每一个正合数都可表示为正素数的乘积,且当不考虑乘 积的顺序时,表示方法是唯一的。
Internotional Data Encryption Algorithm 简称为‘IDEA’)。另外,使 用三个不同密钥的三重 DES 加密算法也在使用,因此出现了完善现 有加密算法以适应 Internet 和 E-Mail 的要求。经过充分比较,认识到 把公钥密码技术和密钥密码技术相结合,可以获得安全性和高性能的 结合。为此选择了使用临时随机密钥的 DES 算法加密信息,再使用 RSA 算法对 DES 密钥进行数字签名和加密,为了避免冒充,数字签 名是必须的。因此,解决 RSA 算法的关键问题成为这一工作成功的 保证。笔者在实施过程中对其有了一个较全面的了解,现介绍如下。
S(N)=exp(-3.81809+0.88796*sqr(26.411+(N-0.07515)2)-1.10e-1*N+3.70e-3*N2 )
其中 exp(x)为 e 的 x 次幂; sqr(x)为 x 的平方根 。
2.7 指数的模运算 x=mod(ar,p)算法
这是 RSA 算法中的关键。这里用 N—S 图表示如下。
3. 大数的因子分解
RSA 算法中 n=p×q 是公开的,公鈅 e 是公开的,只要因子分解
n 得出 p 和 q,就可依据 d×e≡l (modulo Φ(n))求出密钥 d,RSA 密
码系统被破解。
如果一个正奇数 N=P*Q,且 P>Q,我们可以写成
N=U2-V2
其中 U=(P+Q)/2, V=(P-Q)/2 ,有
定理 8:若 P 是素数,则 aP≡a (modulo P)称作 Fermat 定理。 注意:满足 Fermat 定理的数 P,并不全为素数。 2.5 素数的概率检验法 定义:对于一个正奇数 m 和非负整数 t,可得到一个正奇数 n=2t ×m+1,若存在正整数 a,使得 am≡l (modulo n) 或者同时存在一个非负整数 h,0<=h<=t-1,使得 a(2^h×m)≡-1 (modulo n),(其中 2^h=2h) 则称 n 关于 a 通过 Miller 检验。 定理 9:对于正整数 p,有任意正整数 a,若 gcd{p,a}=l,且满 足 Fermat 定理(定理 8),即 aP≡a (modulo P),则 p 关于 a 通过 Miller 检验。 Rabin 素数概率捡验法:若 p 是正整数,随机选取 k 个小于 p 的 不同正整数,如若关于这 k 个数 Miller 检验全部通过,则 p 是合数的 概率为(1/4)k [1]。 由此可见,当 k 足够大时.p 是素数的出错概率只是一个微小的 数,例如若 k=166,可知(1/4)166=1.14e-100,已经非常之小。这是产 生素数的主要方法。 2.6 强素数 强素数是满足某些特性的素数, 定义:一个正整数 P,如果 P 和(P-1)/2 都是素数,则称 P 为强 素数。例: 5,7,11,23,47 等是强素数; 2147481143 也是强素数,因为(2147481143-1)/2=1073740571 也 是素数。 2147483579 也是强素数,因为(2147483579-1)/2=1073741789 也 是素数。 强素数是无限多的。小于整数 N 的强素数数量 S 可用以下近似 式计算:
素数的个数是无限的,不大于正整数 N 的素数个数 P,有比较精 确的近似式如下:
P = Li( N )− 1 Li( N ) 2
其中
x dt
L i(
x
)
=
∫
2
ln(
t
)
展开式为:
Li( x ) = ln(ln( x )) + ln( x ) + (ln( x ))2 + (ln( x ))3 + …
⒈ 前言
我国的因特网(Internet)现已经发展到商业网,E-Mail 已广为应 用,另外还有三金工程,各部门、各行业、各省市的行业网、地区网 的建成,数据传输比当年 CHINAPAC 网的应用更为普遍。金融、商 业、政府等的通信对保密的要求愈来愈高,从而激起了对数据通讯中 的信息加密研究的热情。从商业角度来说,DES 是一个很好的加密算 法,而为了提高安全性和避开传递密钥的麻烦,人们广泛地使用临时 随机密钥,这需要用 RSA 算法对其密钥加密。RSA 公钥密码系统由 于加密密钥公开,为信息加密带来了极大的方便,更由于 RSA 加密 算法可以方便地实现数字签名,在网络通信高度发达的今天,意义更 加显得突出。
例 1:分解 N=10332547。
N =3214.428…,int( N )=3214
32152-10332547=10336225-10332547=3678 (60.646…)2
32162-10332547=10342656-10332547=10109 (100.54…)2
……
32252-10332547=10400625-10332547=68078 (260.91…)2
M =4077.48…,int( M )=4077 40782-16625859=16630084-16625859=4225 (65)2 计算 gcd{65+4078,16625859}=gcd{4143,16625859}=4013 5541953/4013=1381;即 P=4013,Q=1381,P*Q=4013*1381=5541953。 上述概念可进一步拓广为:若存在 U>V,且 U2≡V2 (modulo N) 可从求 gcd(U+V,N) 或 gcd(U-V,N) 而得出 N 的因数。