清风一吹(清风博客)

古之成大事者,不惟有超士之才,亦有坚忍不拔之志

如何保证生成的私钥不重复(相同)

心提示:openssl或是其它基于<公钥,私钥>的算法中,如何保证生成的私钥不重复(相同),不被有恶意的人生成同样的私钥? 1、CA根服务器的如何保证颁布给别人的私钥,不会被hacker暴力算出来? 2、我建一个企业内部的CA服务器,怎么做到颁发的证书不让其它人也安个CA,算出相..... 

 

enssl或是其它基于<公钥,私钥>的算法中,如何保证生成的私钥不重复(相同),不被有恶意的人生成同样的私钥?

1、CA根服务器的如何保证颁布给别人的私钥,不会被hacker暴力算出来?

2、我建一个企业内部的CA服务器,怎么做到颁发的证书不让其它人也安个CA,算出相机的私钥来。

 

RSA工作原理
1)  任意选取两个不同的大质数p和q,计算乘积r=p*q;
2)  任意选取一个大整数e,e与(p-1)*(q-1)互质,整数e用做加密密钥。注意:e的选取是很容易的,例如,所有大于p和q的质数都可用。
3)  确定解密密钥d: d * e = 1 modulo(p - 1)*(q - 1) 根据e、p和q可以容易地计算出d。
4)  公开整数r和e,但是不公开d;
5)  将明文P (假设P是一个小于r的整数)加密为密文C,计算方法为:
C = Pe modulo r
6)  将密文C解密为明文P,计算方法为:
P = Cd modulo r
然而只根据r和e(不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密。

 

 

我的问题是如果在某个时间某个CA服务器产生出的 随机数 p,q,和e 碰巧与之前(另外一台主机的)的相同以后,那密钥不就重担了吗,失去了其唯一标识一个用户的作用。


p q 那是很重要的,但一切定理和理论都基于假设,安全理论也不例外。此处的假设就是,没有一个人能够获得和你的 CA 一样的 RSA 密钥对。如果产生了重复,岂不等同于密钥被破解?如果你知道密钥被破解之后该做些什么,你也就清楚密钥产生了重复以后你的任务。

如果真的巧合,随机数相同,但是你不知道谁的密钥和你相同
就像银行密码,一定有人和你相同,但是你不知道是谁。

阁下和我的想法一样,但不知是否真的这样,还是这些算法本身有一种机制可保证产生的随机数不同。
书上说1024位的RSA要179台2GB内存的主机300,0000年才可破解。但现在互联网上的证书服务器这么多,都在根据RSA算法去生成随机数,我想这个重复的概率是大大增加了。

可以不用担心会产生相同的证书/私钥,只要关心私钥的安全性,使用usb key之类的

 

 
阅读更多
个人分类: 加密解密签名
上一篇 非对称加密用私钥还是公钥进行加密[原创]
下一篇加密与数字签名的流程
想对作者说点什么? 我来说一句

RSA加密算法用MFC实现

2010年08月09日 2.77MB 下载

没有更多推荐了,返回首页

关闭
关闭