“是的,对于产生随机大质数,其寻找质数的算法需要不能给攻击者任何信息,所以产生随机数的软件必须非常好。要求是随机和不可预测。当然,这两个要求并不相同。一个随机过程可能可以产生一个不相关的数的系列,但假如有人能够预测或部分地预测出这个系列的话,那么这个随机的程序就已经不可靠了。比如有一些非常好的随机数算法,但它们都已经被发表,因此它们不能被使用,因为假如一个攻击者可以猜出两个质数一半的话,那么他们就已经可以轻而易举地推算出另一半。”君信解释道,不过在他看来,这些东西完全是照本宣科。
“那么,你的方法呢?”一直没有说话的萨莫尔忽然开口问道。
君信挑了挑眉头说道:“严格的来说,我并没有什么办法。事实上,我在做统计学计算的时候,发现了RSA公钥算法的缺点的。我发现,不管我是怎么通过改变算法来达到改变产生随机大质数的产生方式,总会出现这样的问题:在700万个实验样本中有2.7万个公钥并不是按理论随机产生的。也就是说,或许有人可以找出产生公钥的秘密质数。虽然我发现绝大多数公钥都是按理论产生的,但是每一千个公钥中会有两个存在安全隐患。这给了攻击者极大的便利。”
“你是怎么做到的?”李维斯特问道。
“我在接触到了你们三人发表在计算机杂志上的相关论文,经过研究后,对你们采用的大质数的因素分解的算法产生了一定的兴趣,于是在学习了一段时间计算机理论之后,尝试着自己编写了几个能够产生随机大质数的算法,在借助了普林斯顿高等研究所的电子计算机进行数据处理后,总是发现这个问题。这些是我在做相关计算的时候罗列的一些算法和计算机出具的判断报告!”
说着,君信将自己早就放在手边的计算算法代码和计算机判断的报告递给了离自己最近的伦纳德。一边解释说道:“关于算法的问题,我是通过了计算机进行了验证,目前来说并不存在问题,至少在我使用这些大质数的时候是不存在问题的,但是其结果仍然有无法改变的偏差,确实很让我惊讶。”
“确实存在这样的问题,我们在研究的时候只是算法本身考虑了问题,并没有去看算法之外的统计学上的问题,这是我们的失误。”李维斯特满怀歉意的说道。
君信摇了摇头说道:“就我所知,RSA公钥固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-WayHashFunction对文档作HASH处理,或同时使用不同的签名算法。”
“所以我并不认为统计学上的问题不可以避免,或者总能找到办法解决不安全密码所带来的风险。但是现在的问题:算法之外的RSA公钥该怎么办?”君信摇了摇头说道。
“我们最近研究的课题就是于此相关的!”李维斯特在听完了君信的话之后,终于开始拿出干货来了,“不过我倒是觉得你是在和我们推销你的量子通讯问题,是吧?”
“香农先生提出过一次一密是最为安全的方式,理论上因为量子的特殊性质,确实不存在被监听而不被发现的情况,不过量子通讯技术毕竟还只是一个暂时的理念,还存在于概念中,短时间里不可能用在通讯上,所以一个相对安全的通讯加密的方法是必须的,而确实,在当今世界找不到比RSA还要安全的通讯了,所以它必须要用到,我们也只能想办法将RSA进行一些的修改,您觉得呢?”