RSA机密的原理

来源:互联网 发布:照相馆制作照片软件 编辑:程序博客网 时间:2024/04/30 03:59

摘要

RSA加密,个人认为是应用极为广泛,原理也极为简单地一种加密方式,是非对称加密的始祖。RSA加密产生于1976年,在这之前,加密的方式为:

加密双方选择一种事先约定好的加密方式
一方使用该方式加密
另一方使用该方式解密

所谓的加密方式和密钥不管,就是一种变换的规则,这种方式的缺点是双方需要事先约定规则,也就是说规则的传递通道是不可靠的。此外如何保存该规则也成了一个需要解决的问题。
1976年,两位美国计算机学家Whitfield Diffie 和 Martin Hellman 提出了一种新的构思,可以在不传递密钥的情况下完成解密。这被成为 Diffie-Hellman密钥交换算法,受到这个算法的启发,1978年三位数学家 Rivest Shamir Adleman 共同设计了一套新的加密算法,这个算法以他们三人的名字首字母命名,即为RSA。
首先要说说1976年出现的可交换密钥也就是非对称加密算法的思想

一方产生一对公钥和私钥
将公钥传播
用公钥加密信息
用私钥解密信息

这种思想保证了密钥的安全性,解决了密钥存放问题。RSA是这种思想的一种实现方式,采用素数易乘机不易分解的原理

RSA的过程

RSA的过程如下:
  1. 随机选择大素数p q
  2. 随机选择一整数 e 使得 e与(p-1)(q-1)互素
  3. 计算e的模板反素数d
  4. 计算 n = pq
  5. 销毁 p q
  6. 则(n , e)为公钥 (n , d) 为私钥
  7. n的二进制表示的长度为密钥的长度
对于加密过程来说输入数据为一系列的二进制数据,如汉字可以转换为相应地编码,加密的过程为将加密信息分解为 长度不大于密钥长度的小块,对每一小块分别加密,每一小块可以表示为一个很大的整数 a 则 加密信息为 b=a^e 解密信息为c=b^d

上面便是RSA算法的流程表示,具体的实现问题,如如何选取素数,如何求模板反素数,如果选择随机数e 先不考虑。上述过程中用到了以下的数学概念,掌握这些数学概念,才能对RSA有更深入的理解。

RSA的数学基础

1. 算数基本定理

称为正整数的唯一分解定理,即每一个大于一的自然数可以写成质数的成绩,而且这些素因子按照从大到小的顺序排列之后,只用一种表示方式

2.互质关系

若两个数的最大公约是为1则成该两个数互质

3.欧拉函数

对于任意整数n定义小于等于n的数中与n互质的个数为(n) 求(n)的值。
n可写成素数的乘机形式 n = k1^m1 X k2^m2 X k3^m3 ......   (n) = (k1-1)k1^(m1-1) X (k2-1)k2^(m2-1) X (k3-1)k3^(m3-1)......

4.欧拉定理

若 a 与 n互质,则 a^(n)1 mod n 当n为质数时这是费马小定理  a^n  a mod n

5.模板反元素

若a与n互质,则a的模板反元素b满足 ab1modn

上面就是RSA所需的数学公式,有了这些公式,可以将RSA算法表示为另一种数学形式,以方便证明:

对于任意的大素数 p q,若 e 与 (p-1)(q-1)互素,且 ed  1mod((p-1)(q-1)) , 若 b = a^e mod pq , c = b^d mod pq 求证 c  a mod pq

RSA的数学证明

cb^d(a^e)^da^(ed)a^(k(p-1)(q-1)+1)
当a 不是 p的倍数 也不是 q的倍数
根据费马小定理可知:
a^(p-1)a^(k(p-1)(q-1))1 mod p
a^(q-1)a^(k(p-1)(q-1))1 mod q
又因为 mod 运算是 preserve 乘法的
那么  a^(k(p-1)(q-1)) X a^((p-1)(q-1)) a^(2k(p-1)(q-1))a^(k(p-1)(q-1))a^(k(p-1)(q-1))1mod pq 即 a^(k(p-1)(q-1))  1 mod pq
呢么 a X a^(k(p-1)(q-1))  a^(k(p-1)(q-1)+1)a mod pq
因此 c  a mod pq
当a时p 或者 q 其中的一个倍数的时候,以a为 p的倍数但不是q的倍数为例
则根据费马小定理可知:
a^(q-1)a^(k(p-1)(q-1))1 mod q
那么 ca X a^(k(p-1)(q-1))  a(k(p-1)(q-1) + 1)a mod q 即 q | c - a
由于a可以被p整除 那么有 ca(k(p-1)(q-1) + 1)  0 mod p 即 p | c - a
那么 pq | c - a 也即 c  a mod pq
当a即是p的倍数又是q的倍数时:
由上可得出 p | c - a 且 q | c - a 那么 pq | c - a 也即 c  a mod pq

根据以上数学证明可以得出,当加密的位数小于密钥位数,也即 n = pq 的 二进制长度,那么 经过公钥加密 之后的信息 再经过私钥解密 ,得到的最终信息和原始信息是一样的。从而保证了加密协议RSA的争取性。

RSA的扩展推论

刚开始接触RSA的时候最想知道的一个问题是,是否一定要公钥加密私钥解密,可否反过来用公钥解密 私钥加密。如果不行则说明非对称算法是单向的,即只能公钥接受端向私钥端发送信息,反之则不可以。
经过上面对RSA原理的证明,可知公钥解密,私钥加密也是可能的,即仍然可以得到原始信息。

小节

个人感觉RSA算法是非对称加密算法的始祖,也由于其简易的原理,可以作为非对称加密算法入门的一个台阶。实际应用中的其他非对称加密算法,本质上也是要从数学上找到一个可以通过公钥加密,私钥解密的模型。
0 0