Encryption 为什么是;“大素数”;用于RSA/加密?

Encryption 为什么是;“大素数”;用于RSA/加密?,encryption,rsa,public-key,Encryption,Rsa,Public Key,我已经学会了公钥加密的理论,但是我错过了与物理世界的联系。e、 g 有人告诉我,好的RSA加密应该依赖于小数点后300位的素数,但为什么呢?谁想出这个号码的?打破这种加密需要多长时间(关于不同机器的统计数据) 我试过谷歌,但找不到我想要的。有人吗 感谢非对称加密的密钥是具有一个非对称函数,该函数允许解密由非对称密钥加密的消息,而不允许查找其他密钥。在RSA中,使用的函数基于素数的因式分解,但它不是唯一的选项(例如,是另一个选项) 所以,基本上需要两个素数来生成RSA密钥对。如果您能够分解公钥并找

我已经学会了公钥加密的理论,但是我错过了与物理世界的联系。e、 g

有人告诉我,好的RSA加密应该依赖于小数点后300位的素数,但为什么呢?谁想出这个号码的?打破这种加密需要多长时间(关于不同机器的统计数据)

我试过谷歌,但找不到我想要的。有人吗


感谢

非对称加密的密钥是具有一个非对称函数,该函数允许解密由非对称密钥加密的消息,而不允许查找其他密钥。在RSA中,使用的函数基于素数的因式分解,但它不是唯一的选项(例如,是另一个选项)

所以,基本上需要两个素数来生成RSA密钥对。如果您能够分解公钥并找到这些素数,那么您将能够找到私钥RSA的整个安全性是基于这样一个事实,即不容易分解大的复合数,这就是为什么密钥的长度会极大地改变RSA算法的健壮性

每年都有用计算器对大素数进行因式分解的竞赛,而且价格也不错。分解RSA密钥的最后一步是完成密钥。这就是为什么现在至少应该使用2048位密钥的原因


与往常一样,这是一个很好的RSA参考。

RSA使用单向数学函数的思想,因此,如果您有密钥,则很容易加密和解密,但如果您没有密钥,则很难解密(因为它需要大量CPU周期)。甚至在他们考虑使用素数之前,数学家就已经确定了单向函数的必要性


他们想到的第一种方法是,如果您的“密钥”是素数,而您的消息是另一个数字,那么您可以通过将这两个数字相乘来加密。有密钥的人可以很容易地划分出素数并获得消息,但对于没有素数的人来说,计算出素数密钥是很困难的。

所有公钥算法都是基于数学构造的,也就是说,这些数学构造“容易”以某种方式计算,但“很难”要反转,除非您还有一些附加信息(用作私钥),此时反转也变得“容易”

“Easy”和“hard”只是定性形容词,它们总是以更正式的形式来定义。“硬”通常是指无法在多项式时间O(nx)内解决某些固定x的计算,其中n是输入数据

在RSA的情况下,“easy”函数是模幂C=Me mod N,其中N的因子是保密的。“困难”的问题是找到C(即M)的e次根。当然,“硬”并不意味着它总是硬的,但是(直觉上)增加N的大小一定会增加复杂性更大的因素

建议使用的模数大小(2048位或617位十进制数字)与当前计算能力的可用性有关,因此,如果您坚持使用这些模数,您可以确信攻击者破坏模数的代价将非常高昂。有关更多详细信息,请参阅(go and upvote:-)

最后,为了有一个陷门,N被构造成一个复合数。从理论上讲,为了提高性能,N可能有两个以上的因素,但一般的安全规则是所有因素必须平衡,并且大小大致相同。这意味着如果有K个因子,N是B位长,那么每个因子大约是B/K位长

这个要解决的问题和这个想法不一样。这两者是相关的,如果您设法将N作为因子,那么您可以通过重新执行生成密钥的一方所做的操作来计算私钥。通常,使用的指数e非常小(3);不可排除的是,有一天会设计出一种算法来计算e-th而不考虑N


编辑:更正2048位RSA密钥模数的十进制位数。

请关注问题。希望标题的改变能防止它被无情地否决和关闭..RSA的安全性是基于分解两个大小大致相同的素数的乘积的大合成数的困难性.不是真的。。。RSA的安全性是基于这样一个事实,即您不能有效地计算模逆。。。在这种情况下,计算需要φ(n),而只有n=p*q,p和q未知。。。如果你找到另一种计算φ(n)的方法。。。除(p-1)*(q-1)。。。如果不分解n,你会破坏RSA。。。但这项任务被认为至少和分解我参加聚会晚了一点一样困难,但这个答案确实凝聚了我对RSA的理解。抱歉这么严厉,删除了我的评论。我还没有取消我的否决票,我不认为这会让事情变得更清楚。