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的过程如下:
- 随机选择大素数p q
- 随机选择一整数 e 使得 e与(p-1)(q-1)互素
- 计算e的模板反素数d
- 计算 n = pq
- 销毁 p q
- 则(n , e)为公钥 (n , d) 为私钥
- 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
- RSA机密的原理
- RSA机密算法原理
- 三大常用机密算法原理与基础使用MD5、3DES、RSA
- RSA算法的原理
- RSA的实现原理
- RSA算法的数学原理
- RSA原理
- Windows任务管理器原理+内存管理机密+揭穿内存优化工具的骗局
- RSA/DSA 密钥的工作原理
- RSA简介及深入浅出的剖析原理
- RSA算法原理的简单实现
- RSA加密解密的原理与应用
- RSA非对称加密算法的原理
- 网站logo的机密暗号
- Altium Designer 发现的机密
- Altium Designer 发现的机密
- Eclipse的蜡烛公司机密
- 目前世界上最重要的算法RSA的数学原理摘要
- Rotate List
- 数组中n个数出现次数超过1/(1+n),求这些数
- cocosStudio导入cocos2d-3x
- [Warning] TIMESTAMP with implicit DEFAULT value
- atitit.404错误的排查流程总结vOa6
- RSA机密的原理
- Android应用如何适配不同分辨率的手机
- 2014/10/7 闹中修静--静心
- 对c语言中printf函数的个人理解
- 限制对象在堆或栈中声明
- actionsheet按钮序号
- 预期投资理财收益
- 易信每月送90分钟/月通话
- 深入HRESULT与Windows Error Codes的区别详解