Cryptography RSA与素数生成算法

Cryptography RSA与素数生成算法,cryptography,rsa,primes,pki,Cryptography,Rsa,Primes,Pki,好吧,我对RSA的数学工作原理的理解可能没有它应有的深刻,所以如果这很愚蠢,请随意拍打我的头: 要生成私钥,我们需要两个随机的大素数。没有一种算法可以精确有效地做到这一点,但有一些算法可以生成具有99.99999…(数亿个9)…999%素数概率的大数 我的问题是:如果在你生成密钥时,由于一次惊人的厄运,素数生成算法生成了一个非素数,会发生什么?这对使用那个不走运的键的软件有什么影响 编辑:我知道在这件事上,其他因素更可能导致糟糕的结果;这纯粹是书呆子的数学好奇心。我了解到可以使用rsa,因为:

好吧,我对RSA的数学工作原理的理解可能没有它应有的深刻,所以如果这很愚蠢,请随意拍打我的头:

要生成私钥,我们需要两个随机的大素数。没有一种算法可以精确有效地做到这一点,但有一些算法可以生成具有99.99999…(数亿个9)…999%素数概率的大数

我的问题是:如果在你生成密钥时,由于一次惊人的厄运,素数生成算法生成了一个非素数,会发生什么?这对使用那个不走运的键的软件有什么影响


编辑:我知道在这件事上,其他因素更可能导致糟糕的结果;这纯粹是书呆子的数学好奇心。

我了解到可以使用rsa,因为:

p = prime q = prime n = p * q phi(n) = phi(p) * phi(q) = p-1 * q-1 p=素数 q=素数 n=p*q φ(n)=φ(p)*φ(q)=p-1*q-1 但是我听说如果你计算一个非素数的φ,它就不是素数-1,所以它会在上面的步骤中崩溃
(但我说不出为什么)

如果你有真正的素数,那么除了蛮力之外就没有捷径了。如果您不能100%确定,攻击者也不会。此外,您可以对素数测试算法有足够的信心,即拥有非素数的风险小于整个密钥空间的1。基本上你可以从统计学上确定你的数字是素数。换句话说,猜测它不是素数的几率应该高于猜测正确的键。它只需要在密钥生成时有一些耐心。

1。关于概率素性检验

计算机是一个可靠的、确定性的系统:对于相同的输入,它将对相同的输出运行相同的算法。它会一直这样吗?几乎。有一种高能粒子在宇宙中漫游,通常被称为宇宙射线。当这样的粒子击中隐藏在CPU深处的晶体管时,它可能会打嗝——基本上会以一种非常瞬时的方式改变其输出电压,这样在一个时钟周期内,晶体管输出所代表的位会翻转

现在考虑一些计算机运行一个素数生成器算法,它产生随机数并测试它们的素数。素性测试是一个返回布尔值的函数。在某些情况下,结果(对于“素数”为

true
,对于非素数为
false
)是复制到寄存器中的常量值。因此,有几个时钟周期的窗口,在此期间,结果是一个位,包含在触发器结构中(由6个晶体管组成)

那么,宇宙射线在“正确”的时钟周期中翻转临界位的概率是什么,使得程序认为非素数实际上是素数?这种可能性非常低。正如我所说,计算机是可靠的系统。然而,这种可能性是可以粗略估计的。通常认为,给定的CPU每三个月经历一次宇宙射线位翻转。Core2Duo处理器包含约2.91亿个晶体管,运行频率(例如)为2.4GHz。如果有一个“临界”晶体管,并且该晶体管在一个时钟周期内是临界的,那么宇宙射线将非素数转变为视素数的概率约为1.8*10-24。这是一个非常乐观的下限;在实践中,许多晶体管可能会翻转,这意味着素数测试失败,并且目标定时涵盖了几个周期,一个素数发生器将为每个素数生成检查几十个非素数。但是让我们考虑一下我们是幸运的。 1.8*10-24概率影响每个素性测试,无论它是否具有确定性

通常的素数发生器将以2-100的“确定性”运行Miller-Rabin测试(测试执行50次,每次错过非素数的概率不超过0.25)。“100”是任意的,但很常见。这一概率略低于10-30。所以你有了它:米勒-拉宾测试宣布素数为非素数的概率小于宇宙射线击中晶体管的概率的百万分之一,并使应用程序假设一个数字是素数,而米勒-拉宾测试说它不是

简而言之,如果你从素数生成器中得到一个非素数,那么这是由于硬件问题,比如宇宙射线,而不是素数测试的概率性质

由于宇宙射线而产生的坏质实际上是一种非常好的运气。在你生成钥匙的第一秒钟内,一颗小行星在太空中飞驰,最终落在你的房子上,把你烧死的概率要高得多。我不知道你的情况,但就我个人而言,我更喜欢有一个坏的RSA密钥,而不是被一块掉落的石头压碎

2。坏键

如果在RSA密钥中使用非素数,则会得到一个坏密钥。坏密钥将生成坏签名:签名生成器将生成长度正确的字节流,但签名验证器将声明签名无效。注:实际上,签名可能是有效的,概率很小。在RSA中使用“素数”p和q类似于概率素性测试,就像Miller-Rabin测试一样。然而,很可能很快就会发现钥匙行为不端。对于非对称加密,将观察到类似的行为

需要注意的是,由于另一条宇宙射线,甚至是更普通的坏RAM的出现,也可能会产生坏签名,或者无法解密RSA加密的消息


底线是,如果您担心RSA密钥不好,而不担心硬件故障的可能性更大(这是不可避免的,因为宇宙射线,但谢天谢地,无论如何都不是很常见),那么您的优先级就错了。

您会立即注意到:密钥会