我们一直通过密码包含的熵来衡量密码或私钥的强度,但是如果破解它的攻击者很幸运,该怎么办。

考虑以下简单情况,我们得到1位[0,1]秘密,攻击者应在2种组合之间进行选择,但攻击者已经有50%的机会猜测正确的组合。

现在考虑使用128位秘密。它应该有2 ^ 128个组合,因此攻击者应该在猜测秘密之前先经过340282366920938000000000000000000000000个组合,但实际上他只需要经历其中的一半:170141183460469000000000000000000000000,因为他大概有50%的机会猜对了。

因此,如果他每一位都有50%的机会,那意味着1位实际上只是一半。

如果他很幸运,说90%的机会,表示1位实际上只有0.1位。面对一个非常幸运的对手,128位密码只有12.8位强度。

您对此有何看法?

评论

$ 2 ^ {128} = 340282366920938463463374607431768211456 $

如果您猜到$ 128 $的位字符串,并且在一半的时间里都很“幸运”,那么从信息上讲,您只会得到$ 127 $的“安全”位,而不是$ 64 $的位。这是因为$ 2 ^ {128} / 2 = 2 ^ {127} $。

您在这里谈论的数字很大。喜欢,真的,真的很大。就像,它几乎不可能包裹您的思想。综上所述,赢得加利福尼亚强力球大奖的几率约为293,000,000。进行2 ^ 128次猜中的机会就像连续赢得10 ^ 30次头奖一样。可能,是的,但与统计可行性相去甚远。

您的数学在那里。机会大约等于四次赢得大奖,然后在轮盘赌上下一个数字并赢得三次。

在您的示例中,只是神奇地猜出了某人笔记本电脑的正确密码的人没有什么不同。我的意思是,您不能为此而辩护-加密的全部要点仅仅是使这种情况在统计上不太可能,您也无法使其成为百分百不可能。

#1 楼


所以,如果他每一位都有50%的几率,那意味着1位实际上只是一半。
如果他很幸运,比如说有90%几率,那意味着1位实际上是仅0.1位。面对一个非常幸运的对手,一个128位密码仅具有12.8位强度。

您在错误地计算“运气”如何影响位数。对于50%的机会,它不会将位数乘以0.5,而是将其减少log20.5位--1位。这样,当您只需要50%的猜测时,128位密钥就只有127位。
同样,对于90%级别的“幸运”对手,它将密钥降低了log20.1,或-3.3位左右这样,128位密钥已减少到约125位,而不是12.8位。
即使有非常幸运的百万分之一的猜测(例如中奖彩票),也只能将其减少20 log。 000001或大约20位,仍然为您提供100位以上的安全性

#2 楼

“幸运”不是攻击者的财产。没有“幸运的”攻击者和“正常的”攻击者。他们都有相同的概率(低,非常低)来猜测密钥。您可以通过增加密钥的长度(即位数)来降低概率。您不能真正争论“如果攻击者是幸运的话该怎么办”,因为“幸运”是后验陈述。您说攻击者只有在幸运时才是幸运的...

评论


$ \ begingroup $
评论不用于扩展讨论;此对话已移至聊天。
$ \ endgroup $
– e-sushi
17年2月18日在13:56

#3 楼

注意:此答案假定“幸运” OP的意思是“能够删除有效答案的X%”,因为我认为这是有目的的。当然您无法衡量运气;)


如果他很幸运,说90%的机会,那意味着1位实际上只是0.1位。非常幸运的对手,一个128位密码只有12.8位强度。


好吧,让我们验证一下...由于128位密码具有2 ^ 128个组合:
$ 2 ^ { 128} * 0.1 = 340282366920920463463374374607431768211456 * 0.1 = 34028236692093846346337460743176821145.6 $

$ \ log_2(34028236692093846346337460743176821145.6)\约124 $

这与您对$ 128 * 0.1 =的计算不匹配12.8 $,因为您将位分割,这是不正确的。

攻击者不能简单地一一挑选位。就像锁和钥匙:


你不能简单地打开一个销子就知道自己是否正确。只有所有销钉正确时,锁才会旋转。否则它将不会旋转。因此,虽然使用一个引脚进行锁定与尝试使用一个引脚一样容易,但是使用两个引脚进行锁定却不知道哪个引脚设置有误。密码学也是如此。一位加密不能让您看到它的扩展方式(因此您假设线性增长-错误)。不是您可以一次选择每一位。您需要一次破解所有内容。就像锁选一样,当您发现某些管脚实际上为您提供有关“锁”状态的提示时,加密算法就被破坏了。

评论


$ \ begingroup $
我得到了您的类比,但是当您选择一个弹子锁时,您当然可以一次只做一个弹子,并且通常知道何时正确设置了给定的弹子。
$ \ endgroup $
–马特
17年2月17日在16:48

$ \ begingroup $
@Matt没有处于理想的锁定状态。那就是为什么我也比喻破解密码和锁。就像锁有其错误一样,密码也是如此(就像臭名昭著的RC4)。但是,当然,这种类比并不完美:)。
$ \ endgroup $
–axapaxa
17年2月17日在17:03

$ \ begingroup $
@axapaxa:如果锁不努力防撬,则在适度张紧的同时随机摆动销钉通常会导致它们锁定在正确的位置。当锁处于张紧状态时,安全别针很难固定到位,但是即使是高质量的锁也常常会提供一定程度的有关进度的反馈,这在每秒每秒探测多次的锁中是完全不可接受的。
$ \ endgroup $
–超级猫
17年2月17日在18:21

$ \ begingroup $
@supercat你是完全正确的。非模糊不清可能被认为接近安全性(在开始四处寻找之前,它是安全的;))。我知道我的类比并不完美(我之前已经承认过),但是我希望您不认为完美的类比是我的初衷(不是)。您既了解加密又了解锁,我的类比适用于没有加密知识的人。请不要通过添加不必要的细节来破坏话题。我相信对这些主题感兴趣的人会在其他地方找到有趣的材料:)。
$ \ endgroup $
–axapaxa
17年2月17日在19:09

$ \ begingroup $
有时候,好莱坞会让密码破解者一次猜出1个字母,然后您会看到每个新字母的进度。这不是现实生活中的方式。
$ \ endgroup $
– Tim
17年2月18日在4:21

#4 楼

我不确定您要了解什么,其他答案是否可以解决您的问题,因此我正在尝试另一种方法并按如下方式解释您的问题:


攻击者完全是偶然地在第一次尝试中猜出了正确的128位序列吗?


当然有可能,但不太可能使我们通常不考虑这种可能性。如果您想考虑这种风险,那么加密就无济于事,因为这是风险管理的问题,属于经济科学领域。

攻击者猜测128位序列的可能性只需尝试一次暴力破解,正确的加密密钥就是2-128。由于人们臭名昭著的是想象很少或非常大的数量,因此我们只能理解相对于其他相同类型数量的含义。

让我们假设这个星球上的每个人(大约1010年)尝试在您的生命周期内以及随后的900年(100 a + 900 a≃1011 s)中以109 s-1的频率猜测您的密钥,在该时间段内总共进行了1020次尝试。其中至少一个成功的机会是:

$$
1-(1-2-^ {-128})^ {10 ^ {20}}≃3 \ cdot 10 ^ {-19}
$$

如果您认为该风险可能太高,您不妨再考虑一下,因为估计由于陨石撞击而死亡的可能性大约为10- 5,这大约是按键猜测事件的1013倍,并且可能对您和每个人的生活造成更为严重的影响(双关语意)。

结论:如果您担心自己的钥匙被随机猜测,从出生到生后,每个人的不懈努力很可能会被遗忘,您担心自己做错了什么。停止研究密码学,成为一名航空工程师(或您所说的致力于避免地球与巨大的太空岩石碰撞的方法的人)!

评论


$ \ begingroup $
我在一本有关统计的书中读到,现实生活中发生概率为10 ^ 18中的1或2 ^ 60中的1的事件被认为是“不可能的”。每天有数百万人发生百万分之一的机会。每年有十亿分之一的人口发生在某人身上。不会发生十分之一的情况。黑客尝试破解代码并仅在2 ^ 68个猜测中正确地完成代码的现实生活事件就不会发生。
$ \ endgroup $
– gnasher729
17-2-17在19:48



$ \ begingroup $
我认为有一个隐含的假设,即这些$ 10 ^ {10} $猜测者是随机猜测的。对于成像比例尺来说很好,但是众所周知,人类是不好的随机数生成器。因此,假设开始时使用真正的随机密钥,则实际概率甚至可能更低。 +1是讨论概率的绝佳答案。
$ \ endgroup $
– jpmc26
17-2-17在23:48



$ \ begingroup $
@ jpmc26:它还假设猜测者是随机工作的,这意味着他们不协调工作。在同一千年中,可能多次猜测相同的位序列。
$ \ endgroup $
–大卫·福斯特(David Foerster)
17-2-18在0:32



$ \ begingroup $
请参阅Wikipedia上有关微尸的文章,以获得一些小概率的感觉。
$ \ endgroup $
– Tgr
17年2月18日在0:57

$ \ begingroup $
@ gnasher729我在GCSE化学课上受教,有一个一般的比率可以确定反应发生的速度。如果结果低于15,则认为该反应永远不会发生。一个例子是水沸腾。在20℃时,反应速率小于15,因此我们认为它永远不会发生。但是,水中的单个分子可以获得足够的能量以转化为水蒸气。因此,系统的某些部分可能会发生,但是整个系统被认为永远不会改变。
$ \ endgroup $
– SGR
17年2月20日在10:14

#5 楼


因此,如果他每一位都有50%的机会,则意味着1位实际上只是一半。


不,不是。因为“位”是大量信息,所以我们应该知道从定义上减少熵两次。那里已经考虑了50%的机会:熵是不确定性的量度(先验性),与运气无关(后验性)。

#6 楼

从计算机的角度来看,“很幸运”和“知道密码”没有区别。如果您知道Bob的密码,那么您就是Bob。这是Kerckhoffs原理和比特币的非常基本的假设。

https://en.wikipedia.org/wiki/Kerckhoffs%27s_principle

#7 楼

到目前为止,这些答案都没有回答我至少会解释的问题,我看到的是很多答案都在质疑他们的提问者,甚至很少有人提到实际回答“将会发生什么?”,立即切换

因此,忽略这种情况的完全不可能,还是有可能的,因此,如果发生这种情况,攻击者比其早得多地猜测密码。概率决定了可能性,并且假设您希望进行加密,那么:


他们知道密码,就这么简单。


之后发生的事情取决于他们的初衷和人类心理,我想到的两种情况是


他们将密码用于其初衷并进行入侵,窃取文件,安装恶意软件等。
或者,他们也知道此事件的发生率,因此简直不敢相信幸运的是,继续浪费时间重新破解加密,为显然比您预期的安全性好得多而烦恼,在等待时继续吃他们正在吃的午餐,因为他们希望它花费更长的时间并且没有吃。尚未检查或类似。

如果您在心理学或类似的网站上提问,对于最后的选择,您可能会有更好的答案。

评论


$ \ begingroup $
(-1)OP正在询问他的计算(基于对比特/概率的误解)如何显示“幸运的”攻击者实际上有很高的成功概率,而这本来是很难的。这个问题与人类心理学无关,这就是为什么所有其他答案都采用与您不同的方法的原因。他的问题不在于如果有人猜对了会给现实生活带来什么后果。
$ \ endgroup $
–TMM
17年2月19日在23:48

$ \ begingroup $
@TMM我不是要指出问题与心理学有关,只是我回答最后部分的后续内容,尽管OP对位/概率有误解,但我理解他的问题是是“如果攻击者很幸运怎么办?”被误解的数学试图用概率来表达这一点。
$ \ endgroup $
–SlipperyPete
17年2月20日在8:08

#8 楼


因此,如果他每一位都有50%的几率,那意味着1位实际上只不过是一半。

如果他很幸运,则说90%几率,这意味着1位实际上只是> 0.1位。因此,面对一个非常幸运的对手,一个128位密码只有12.8位的强度。


每个人每个人都有50%的机会一点。这实际上并不能使它一点点地熵。将每一位都视为一个单独的抛硬币。没有人比50%或多或少地猜测一次抛硬币的结果。宇宙不会违反任何人的规则,并给他们90%的奖励。您正确猜出随后128次抛硬币的结果的几率是2 ^ 128中的1。

评论


$ \ begingroup $
“正确猜出随后128次抛硬币的结果的几率是2 ^ 128。当然,这可以说是完全公平的抛硬币,而现实生活中并非如此。我认为CSPRNG产生的输出在统计上可能比普通投币器要少得多,更不用说试图投掷硬币的人了。
$ \ endgroup $
–用户
17-2-18在13:50



$ \ begingroup $
@MichaelKjörling那是因为您没有使用理论上完美的硬币。 :)无论如何,我只是想解决似乎是对概率的基本误解。当有人问为什么天空是蓝色时,我不会跳入瑞利散射背后的物理学解释。如果我只是说空气会散射蓝光,我将更容易被理解。我试图给出最简单的解释,但我觉得其他答案并不太适合。
$ \ endgroup $
–斯蒂芬·鲁詹(Stephen Lujan)
17-2-22在15:24