RSA的安全性如何?

sur*_*raj 16 cryptography rsa

我正在使用RSA进行加密和解密.我听说它容易受到攻击.是吗?使用安全性如何?

Jer*_*fin 31

对RSA的通常攻击涉及分解大量数字,这是两个非常大的素数的乘积.这背后的总体思路是,寻找素数是相当容易的,再乘以他们在一起,得到一个大的数量也很容易,但如果你只与大量启动,找到因素是相当困难的.

当他们是一家独立公司时,RSA数据安全公司也面临着因素挑战.IIRC,最后几个奖项由RSA DSI自己的团队赢得.这些是使用General Number Field Sieve(GNFS)完成的.典型的实现使用大量工作站几个月左右来构建"因子库".然后(困难的部分)你把它喂给一台拥有庞大内存量的机器(以太字节为起点)并让它紧缩几周以获得这些因素.

关键在于指出对RSA的最常见攻击具有非常高的初始成本(即,像Cray超级计算机这样的东西)甚至开始.但是,老实说,我不相信任何当前存在的机器可以容纳足够的RAM甚至开始攻击像1024位RSA密钥(更不用说2048甚至4096位密钥的一些偏执狂类型坚持使用).

当然,还有其他的保理方法不需要大型机器,但它们的效率低得多,即使充其量也是如此,你可以通过多年的努力来达到RSA标准的相当小的关键 - - 例如512位.

实际上,RSA本身的安全性通常是您设计使用它的系统时最不关心的问题.事实上,几乎所有合理的现代加密算法都是如此.当某些东西被打破时,它实际上从来没有真正打破所涉及的基本算法 - 它是通过发现密钥如何分布的弱点,"社会工程"攻击等.

虽然(正如我所说)这种加密方式通常都是如此,但与大多数其他加密相比,RSA更加一致.这仅仅是因为RSA的正常使用情况相对复杂.特别是,您通常希望使用RSA来加密大量原始数据流.RSA足够慢,您通常不希望使用它来加密大量数据.相反,您通常将RSA与某些对称密钥(也称为私钥)加密算法(如AES)结合使用.

将两者结合使用时,首先要获取要向其发送某些数据的人员的公钥.然后生成一个正确大小的随机数,用作您选择的对称算法的密钥.您使用RSA加密随机数并将其发送到目标.然后使用该数字作为对称算法的密钥,并使用该对称算法加密实际数据.

这意味着在实际使用中,RSA有一些弱点,不一定适用于大多数对称加密算法.只是一个明显的例子,如果该方法使用选择对称算法的"随机"关键是不是真的完全是随机的,攻击者可能能够找到问题的关键和解密数据,而不会攻击RSA加密本身在所有(是的,这是真实的,公开发布的软件中真正漏洞的根源.

另请注意,我上面描述的内容几乎是RSA通常使用的最简单方法.真正的系统通常会变得相当复杂,以提供诸如"完美的前向保密"之类的东西1.这种系统中的RSA仍然是完全正常的RSA,但使用它的系统的其余部分仍然相当复杂.

简介:如果您要使用RSA加密,RSA本身的安全性可能是您最不关心的问题.从"RSA"到"安全通信系统"的路线有点类似于希腊神话和基督教圣经的扭曲组合:一个有错误转弯的迷宫,每个都会导致一个看起来完全像你想去 - 但是任何错误的转变都会让你陷入永恒的折磨和痛苦之中.


1.不,我现在不打算对此进行描述,但我肯定会在Crypto上搜索它.SE会发现一些相关的结果.但是,我应该补充说,尽管RSA可以在提供PFS的系统中使用,但在实践中它是相当不寻常的.


Ang*_*chs 7

假设RSA可满足您的所有实际需求.

但当然这取决于你在做什么,你是怎么做的以及你想要防守的对象.

如果你想确保你的连接,你坚持使用通常推荐的东西RSA足够安全.

如果你想在国家安全局的鼻子下进行秘密行动,那么你已经输了,因为你必须提出这样的问题.

PS:你可能想看看StackExchange 上的IT安全站点这样的东西..

  • 你仍然没有回答提问者的问题.而不是谈论NSA,秘密行动,你可以给出答案. (5认同)

Ole*_*ksi 5

正确实施(即,如果您使用现有的库为您执行此操作),您的数据通道是安全的.但是,请记住,加密点只是为了使数据通道不是整个系统中最薄弱的环节.RSA会这样做,但你仍然需要担心系统的其他部分以及它们的安全性.