Yeh*_*erg 10 encryption rsa public-key
我已经学会了公钥加密理论,但我忽略了与物理世界的联系.例如
我被告知,良好的RSA加密应该依赖于300位小数的素数,但为什么呢?谁想出这个号码?打破这种加密需要多长时间(关于不同机器的统计数据).
我试过谷歌,但找不到我想要的东西.任何人?
谢谢
Nib*_*ler 11
非对称加密的关键是具有非对称功能,允许解密由非对称密钥加密的消息,而不允许找到另一个密钥.在RSA中,使用的函数基于素数的因子分解,但它不是唯一的选项(例如,椭圆曲线是另一个选项).
因此,基本上您需要两个素数来生成RSA密钥对.如果您能够分解公钥并找到这些素数,那么您将能够找到私钥.RSA的整体安全性基于以下事实:对大型复合数进行分解并不容易,这就是为什么密钥长度高度改变RSA算法的鲁棒性的原因.
每年都会有很多价格合理的计算器将大质数分解的竞赛.分解RSA密钥的最后一步是在2009年通过分解768位密钥完成的.这就是为什么现在应该使用至少2048位密钥的原因.
像往常一样,维基百科是RSA的一个很好的参考.
所有公钥算法都基于陷门函数,即以一种方式"容易"计算的数学结构,但除非你还有一些额外的信息(用作私钥),否则"难"反转,此时也是逆转变得"容易".
"简单"和"硬"只是定性形容词,总是在计算复杂性方面更正式地定义."硬"通常指的是在某些固定x的多项式时间O(n x)内无法求解的计算,其中n是输入数据.
在RSA的情况下,"容易"函数是幂乘剩余Ç= M Ë模N,其中的因素Ñ是保密的."硬"问题是找到C的第e个根(即M).当然,"硬"并不意味着它总是很难,但(直观地)将N的大小增加某个因子会使复杂性增加更大的因素.
建议的模数大小(2048位,或617位十进制数)与当前计算能力的可用性有关,因此如果你坚持使用它们,你就可以确保攻击者破坏它是非常昂贵的. .有关详细信息,我应该向您介绍一个关于密码学的精彩答案 .SE(go and upvote :-)).
最后,为了有一个陷门,N被构建成一个复合数.理论上,为了提高性能,N可能有两个以上的因素,但一般的安全规则是所有因素必须平衡并且大小大致相同.这意味着如果你有K个因子,并且N是B位长,则每个因子大致为B/K位长.
要解决的这个问题与整数分解问题不同.这两者是相关的,如果你设法考虑N,你可以通过重新生成生成密钥的一方所做的事来计算私钥.通常,使用的指数e非常小(3); 它不能排除有一天某人图谋的算法来计算È第而不因式分解Ñ.
编辑:更正了2048位RSA密钥的模数的小数位数.