当前位置:文档之家› RSA公开密钥密码系统的数学原理

RSA公开密钥密码系统的数学原理

密钥管理中心产生一对公开密钥和秘密密钥的方法如下:在离线方式下,先产生两个足够大的强质数p、q。

可得p与q的乘积为n=pxq。

再由p和q算出另一个数
z=(p-1)×(q-1),然后再选取一个与z互素的奇数e,称e为公开指数;从这个e值可以找出另一个值d,并能满足e×d=1 mod (z)条件。

由此而得到的两组数(n,e) 和(n,d)分别被称为公开密钥和秘密密钥,或简称公钥和私钥。

对于明文M,用公钥(n,e) 加密可得到密文C。

C = M mod (n)(1)
对于密文C,用私钥(n,d)解密可得到明文M。

M = C mod (n)(2)
(2) 式的数学证明用到了数论中的欧拉定理,具体过程这里不赘述。

同法,也可定义用私钥(n,d)先进行解密后,然后用公钥(n,e)进行加密(用于签名)。

p、q、z由密钥管理中心负责保密。

在密钥对一经产生便自动将其销毁或者为了以后密钥恢复的需要将其存入离线的安全黑库里面;如密钥对是用户自己离线产生的,则p、q、z的保密或及时销毁由用户自己负责。

在本系统中,这些工作均由程序自动完成。

在密钥对产生好后,公钥则通过签证机关CA以证书的形式向用户分发;经加密后的密态私钥用PIN卡携带分发至用户本人。

RSA算法之所以具有安全性,是基于数论中的一个特性事实:即将两个大的质数合成一个大数很容易,而相反的过程则非常困难。

在当今技术条件下,当n足够大时,为了找到d,欲从n中通过质因子分解试图找到与d对应的p、q是极其困难甚至是不可能的。

由此可见,RSA的安全性是依赖于作为公钥的大数n的位数长度的。

为保证足够的安全性,一般认为现在的个人应用需要用384或512比特位的n,公司需要用1024比特位的n,极其重要的场合应该用2048比特位的n。

相关主题