在各种文章中都提到,对于安全通信,建议的密钥大小是用于对称加密的128位密钥大小(这使其成为$ 2 ^ {128} $可能的密钥?)和用于非对称加密的2048位密钥大小($ 2 ^ {2048} $个可能的密钥?)。

为什么它们相差如此之大?似乎我错过了方程式的很大一部分。

评论

并非每个非对称系统都需要这些巨大的密钥。例如,椭圆曲线只需要两倍于对称加密使用的密钥。

简短答案:为了提供可比的安全级别。

Lenstra的公式中存在您的问题的答案,因此,我建议您阅读以下两篇文章:-infoscience.epfl.ch/record/164526/files/NPDF-22.pdf-infoscience.epfl.ch/record /164539/files/NPDF-32.pdf

#1 楼

对称加密和非对称加密算法建立在截然不同的数学构造上。

在典型的对称加密算法中,密钥实际上只是$ \ left [0 .. 2 ^ n \ right中的一个随机数。 ] $,其中$ n $是密钥长度。密钥的强度取决于其对暴力攻击的抵抗力,在这种情况下,攻击者需要执行复杂度为$ O \ left(2 ^ n \ right)$的攻击才能正确猜测密钥。

另一方面,非对称算法则使用另一种密钥。例如,RSA模数的形式为$ m = pq $,其中$ m $是模数,而$ p $和$ q $是两个大的,截然不同的,随机选择的近似素数的质数。密钥的强度基于模量对分解为其主要成分的分解能力。攻击者使用通用字段数字筛子进行攻击,其复杂性为$ O \ left(\ exp \ left(\ left(\ left(\ frac {64} {9} + o \ left(1 \ right)\\ right)\ cdot n \ right)^ \ frac {1} {3} \ left(\ log n \ right)^ \ frac {2} {3} \ right)\ right)$来计算模数(从而破坏私钥),给定的是位长度$ n $的模数。

评论


$ \ begingroup $
是的,很抱歉,这对我来说是一个错误,因为$ n $重载意味着键的位长和模数。已修复。
$ \ endgroup $
–斯蒂芬·托瑟(Stephen Touset)
13年5月5日在5:43

$ \ begingroup $
@fgrieu我使用了Wikipedia的有关整数分解的文章。
$ \ endgroup $
–斯蒂芬·托瑟(Stephen Touset)
13年2月5日,19:50



$ \ begingroup $
编辑了修复问题的回复。
$ \ endgroup $
–斯蒂芬·托瑟(Stephen Touset)
13年2月6日在18:58

$ \ begingroup $
这个答案的问题是,从数学上的描述来看,很难弄清核心思想。
$ \ endgroup $
–user23794
2015年4月9日在20:40

#2 楼

tl:dr对您的问题的回答是,对于给定的安全性参数,公钥必须比对称密钥更长,这是未知原因,但我们还没有弄清楚该怎么做。

有可能证明所有公钥系统的破坏速度都比穷举搜索快得多,但是据我所知,这还没有完成。区分键的大小和键的数量。对于RSA,模数可能为2048位长,但是该大小的百万个数字中只有大约两个是可用的模数。此外,有可能提出一种RSA方案,即按惯例固定了一半以上的模数高位,因此需要分发的信息量减半。

#3 楼

非对称密钥必须比对称密钥大得多,因为1)对于给定数量的位(密钥空间),非对称密钥要少一些; 2)非对称密钥本身内部有模式。

要相比之下,请考虑ECRYPT II关于密钥长度的建议,它建议使用128位对称密钥与3,248位非对称密钥一样强,并且这些等同于256位椭圆曲线Diffie-Hellman(ECDH)密钥。两种密钥长度(128位和3,248位)通常被认为可以提供数据的长期保护(直到2040年),但是非对称密钥要大得多。

为进一步比较,NSA Suite B密码术(未分类的算法)同时指定了128位对称密钥空间(用于加密)和256位ECDH密钥空间(用于签名和密钥交换),足以保护机密数据直至Secret。

通常,通常将对称密钥算法设计为具有等于其密钥长度的安全性。但是,尚不知道具有此属性的非对称密钥算法。椭圆曲线密码学最接近,其有效安全性约为其密钥长度的一半。 (来源:维基百科)

在一个完美的世界中,想法是闯入网络连接或使用对称密码保护的数据存储的唯一方法是尝试所有密钥。 128位密钥空间意味着只有340,282,366,920,938,463,463,374,607,431,768,211,456可能使用的密钥。考虑使用添加到AES的特殊AES尝试对所有这些密钥进行128位AES加密测试。最新的英特尔微处理器。这些指令的设计速度非常快,根据Intel自己的数据,在具有4个内核的Intel i7处理器上解密AES加密数据块将花费5.6个周期。换句话说,该处理器可以在大约1.7纳秒内在一个数据块上试用一个密钥。以这种速度,将需要大约1.3 * 10 ^ 12 *宇宙的年龄来检查所有键(您可能只需要检查一半就可以找到正确的键,因此将难以置信的长时间除以2)。 br />
因此,用蛮力破解128位密钥并不是很实际。 (更不可能破坏256位密钥。)对于对称密码,具有这些长度的密钥是有意义的。例如,在与SSL / TLS结合使用的流行RSA方案中,公钥和私钥是两个大素数的乘积的一部分。数字,因此制作RSA密钥首先要选择两个随机质数。 RSA的安全性(部分地)取决于这样一个事实:选择两个随机质数很容易,但是很难给它们一个产品就发现它们是什么。

假设有两个质数随机选取的数字称为p0和p1。 RSA公钥(和私钥)的一部分称为模数,简称为p0 * p1。如果攻击者可以将模数分解为p0和p1,则他们可以破解RSA,因为他们可以确定私钥。数学家认为很难将两个素数的乘积分解,网络交易的安全性部分取决于这种信念。 (整数因式分解的“硬度”尚未得到证明。虽然很困难,但没有真正的形式化证明。)
典型的RSA密钥大小为1,024或2,048或4,096位。那就是模数中的位数。对于每个,将有一对大约512位或1,024位或2,048位的素数,这取决于所选的密钥大小。这些素数是通过某种随机过程选择的(突出显示了安全加密的随机数生成器的重要性)。

就对称密钥而言,针对2,048位RSA的攻击都基于对所有密钥的尝试。一定大小的密钥,但是与对称密钥方案不同,并不是每个2,048位数字都是RSA密钥(因为它必须是两个素数的乘积)。

因此,尽管密钥空间是实际上,对于任何给定数量的位,实际上,与相同的对称密钥大小相比,可能的RSA密钥更少。那是因为只有这么多及以下大小的质数。 RSA方案只能使用成对的质数,而对称方案可以使用大小相同的任何数字。例如,在理想环境中,人们会创建并记住完全随机的密码。因为它们没有密码,所以密码中有一些模式,无需尝试每种可能的密码就可以猜测或破解。这提供了弱点,并且最好由“通用数字字段筛”加以利用。在对称密钥情况下,没有这种模式:密钥只是随机选择的大数字。

资料来源:为什么某些加密密钥比其他密钥小得多

评论


$ \ begingroup $
我不认为“ 1)对于给定数目的位(密钥空间),非对称密钥较少”是重要原因。可以在RSA中估计此效果:两个1024位素数的$ 2 ^ {2020} $ 2048位整数乘积好得多,因此该论点对于密钥大小增加的不足2%有用。我的另一种手动挥舞的,无法量化的解释是,私钥通过某种直接关系与公钥相关;因此,如果我们使用与对称加密相当的大小,那么向攻击者透露公钥(我们必须这样做)将损害私钥。
$ \ endgroup $
–fgrieu♦
2014年12月11日12:23

#4 楼

造成这种情况的基本普遍原因是,迄今为止,所有已知的公开密钥算法都需要在两个密钥上都采用某种形式的附加数学结构,而对称密钥算法可以使用任意密钥,即任何位序列,无论它是什么,将用作密钥(显然,虽然可能有一些理由要优先使用某些密钥,但是该算法将对任意密钥起作用)。目标的含义是,如果您需要具有更多结构的密钥,则对于任何给定的位长,密钥将更少,因此,如果您要进行类似的安全保护,则必须增加位长以确保您拥有至少要选择相同数量的可用键。而且,与纯暴力搜索相比,附加结构可能更容易破坏密钥,因此甚至需要更长的长度来进行补偿。

例如,考虑RSA算法。密钥必须至少是一个模数值,该值在数学上是两个相似大小的素数的乘积的实际数字: >通常,不会将任意字符串视为数字$ n $分解为两个大小相似的质数,因为它实际上可以是任何数字。虽然该算法的数学结构完全允许使用两个以上的质数,但是如果您首先选择模数,则必须将其分解为因数,因为您需要质数才能生成私钥,这等效于打破密码,这意味着如果您可以轻松地做到这一点,那么密钥就没有安全性;如果不能,那么就无法为$ n $的选择生成私钥。因此,唯一的选择是首先选择素数,由于没有考虑这些素数,因此对于任何给定的位长,要生成的键数更少。

而且,事实证明,当$ n $的位长度为典型对称密钥的长度的量级时,分解数字也是如此容易,以至于普通PC都可以做到,无论$ n $是什么。 。为了即使在世界上最大的超级计算机中也无法进行分解,因此甚至需要更长的密钥。但是上面的论点说明了为什么,至少,密钥大小绝对必须大于对称密钥。

#5 楼

补充说明一下,对于大多数对称密码学,您根本无法猜出密钥-或无法知道您是否做到了*。这是因为N位的每个可能排列都是一个完全合法的密钥,这意味着每个可能的明文块都会出现。
您尝试一个密钥并将其解密为“ 1”。另一个密钥解密为“ 0”。使用另一个密钥,它将解密为“ a”。哪个是正确的钥匙?您无法知道。
对比RSA或DH之类的公钥加密-将数字分解后,就知道这样做了-您可以知道已找到正确的密钥。 br />如果密钥大小与块大小相同,则会出现所有可能的纯文本。如果密钥较短,那么您仍然会获得大量可能的明文-通常每个密钥都会解密为某些明文。这使得几乎不可能知道哪个是正确的明文。

在任何特定的块模式下重新使用对称算法可能会或可能不会显示任何信息。在这里,我只谈论密码原语本身。


评论


$ \ begingroup $
“意味着每个可能的明文块都会出现”,这完全是不正确的。
$ \ endgroup $
– Maeher
20年7月30日在6:59

$ \ begingroup $
Maeher-如果块大小与密钥大小相同,则必须为真,除非不同的密钥确实没有不同。只要不同的密钥给出不同的解密,每个纯文本都将由某个密钥给出。通过鸽洞原理。您必须能够解密,因此使用给定的密钥,两个不同的明文不能映射到相同的密文。支持密钥,块大小为256位。这意味着有2 ^ 256种可能的纯文本,它们映射到2 ^ 256种可能的键。由于明文与键的数目相同,因此它必须是一对一的映射。
$ \ endgroup $
–雷·莫里斯(Ray Morris)
20年7月31日在13:38

$ \ begingroup $
你错了。例如,由于您提出了这个密码,所以请使用具有256位块和256位密钥的分组密码。 (请注意,实际的对称加密方案使用短密钥来加密更长的消息。) $ \ {0,1 \} ^ {256} $上可能有$ 2 ^ 256!$个可能的排列。 $ 256 $位密钥最多选择$ 2 ^ {256} $个不同的排列,即所有可能排列的很小一部分。对于两个不同键选择的\ {0,1 \} ^ {256} $排列中的$ x \,没有任何条件是不同的。这些键将是不等价的,因为它们不会在所有输入上达成共识,只是在某些方面无法达成共识。
$ \ endgroup $
– Maeher
20/07/31在14:23

$ \ begingroup $
您应该查找排列的定义。
$ \ endgroup $
– Maeher
20年8月1日在18:27

$ \ begingroup $
“密码是异或”。您已经发现一个时间垫的完美保密性。恭喜你这不适用于实用密码。
$ \ endgroup $
– Maeher
20年8月1日在18:28