RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准, 在讲解RSA算法之前必须先讲解下什么是
"对称加密算法" 和 什么是"非对称加密算法"。
1)甲方选择某一种加密规则,对信息进行加密;
2)乙方使用同一种规则,对信息进行解密。
由于加密和解密使用同样规则(简称"密钥"),这被称为"对称加密算法"
加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。
这种新的加密模式被称为"非对称加密算法"。
(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。
(2)甲方获取乙方的公钥,然后用它对信息加密。
(3)乙方得到加密后的信息,用私钥解密。
如果公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。
RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
下面介绍下公钥和私钥的生成过程:
第一步,随机选择两个不相等的质数p和q。
选择了61和53。(实际应用中,这两个质数越大,就越难破解。)
第二步,计算p和q的乘积n。
把61和53相乘。
n = 61×53 = 3233
n的长度就是密钥长度。3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位。实际应用中,RSA密钥一般是1024位,重要场合则为2048位。
第三步,计算n的欧拉函数φ(n)。
根据公式:
φ(n) = (p-1)(q-1)
算出φ(3233)等于60×52,即3120。
第四步,随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。
在1到3120之间,随机选择了17。(实际应用中,常常选择65537。)
第五步,计算e对于φ(n)的模反元素d。
所谓"模反元素"就是指有一个整数d,可以使得ed被φ(n)除的余数为1。
ed ≡ 1 (mod φ(n))
这个式子等价于
ed - 1 = kφ(n)
于是,找到模反元素d,实质上就是对下面这个二元一次方程求解。
ex + φ(n)y = 1
已知 e=17, φ(n)=3120,
17x + 3120y = 1
这个方程可以用"扩展欧几里得算法"求解,此处省略具体过程。总之,算出一组整数解为 (x,y)=(2753,-15),即 d=2753。
至此所有计算完成。
第六步,将n和e封装成公钥,n和d封装成私钥。
在上面的例子中,n=3233,e=17,d=2753,所以公钥就是 (3233,17),私钥就是(3233, 2753)
随着我国信息技术的快速提高以及通信技术的飞速发展,使得信息安全技术也受到越来越广泛的重视。为了保证人们在网络和通信领域中的一切活动受到最大程度上的安全保护,必须要提高信息安全技术,加强信息安全的研究工 作。在信息安全领域中,密码技术得到很好的应用和研究。在公钥密码技术中,RSA算法是作为公钥密码算法的典型代表。因此,我们可以就RSA算法在信息安全中的应用进行全面的分析,从而提高信息安全技术水平,保证人们进行安全活动。
而RSA算法在当今热门社交平台:微信中也大量得到运用。微信所使用的通信保密算法和通信流程,其基于RSA加密、随机AES私钥的加密方式设计是通信保密的关键核心,也是目前绝大部分移动终端社交软件的主流加密方式。在现有技术能力下,破解密钥、获取微信通信内容的难度较大。微信系统所使用的加密算法是现下绝大部分通信软件中较为常用的RSA密钥和AES随机密钥加密算法,其加密方式在现有通信社交软件中属于最高加密等级,破解其加密算法具有极大的难度。下面介绍下微信登录中对RSA的应用:
移动端微信登录验证(初始化)流程。
1)移动客户端产生一个登录包(包括用户账号、密码、MD5加密信息、随机AES密钥)并使用RSA公钥加密登录包,然后将登录包发送到服务器。
2)服务器接收密文登录包,使用RSA私钥进行解密,获取登录包中的用户账号、密码、MD5加密信息、随机AES密钥等信息。
3)服务器对用户账号密码进行校验,确认用户身份后产生一个验证包,并使用AES密钥加密成验证包密文并发送给客户端。
4)客户端接收验证包密文后,使用AES密钥进行解密,获取验证信息。之后的通信内容均使用AES密钥进行加密通信。