想象一个典型的4位PIN方案,其中包含数字[0-9]。如果我随机选择PIN,我将在10 * 10 * 10 * 10 = 10,000个代码中得到一个。根据我自己的经验,在超过一半的时间中,四位数的随机序列将包含一些特性或模式,这些特性或模式会大大降低其熵:在多个位置使用单个数字,模式的升/降等(是,是,一个4位数的PIN开头最多只能有13位的熵,但是有些随机代码甚至更糟糕。)

如果我遵守只使用PIN的规则在每个位置上都有一个唯一的数字,我相信可供我使用的代码数将变为10 * 9 * 8 * 7 = 5,040(如果我记错了,请纠正我)。我几乎将关键空间减少了一半,但我也从考虑中消除了许多低熵代码。 />
编辑:哇,在这里有很多不错的回应。需要澄清的是,我最初考虑的不是ATM /银行PIN(在多次错误的猜测之后,它可能会采取积极的锁定策略),而考虑的是其他“无监督” PIN编码的设备:可编程门锁,警报系统面板,车库门键盘等。

评论

您已损坏密码。最安全的一种是纯粹随机的。

机器不知道2232的可能性更大,因为它更容易。因此,当您蛮力使用时,很难猜出2232与3569。因此,即使是具有三个相同数字的图钉也可以,因为它与其他任何组合都不一样。

4位PIN的任何安全性可能都来自发行者愿意在可能为一位数字的尝试之后锁定该PIN。因此,我的目的是避免攻击者尝试的前几件事。避免像生日这样的关于自我的编码数据比模式更重要。

@Eclipse并非如此。如果知道20%的人口使用1111或1234,则最好不要成为20%的人口,即使您的随机数生成器以10,000的概率将1234乘以纯正。

排除具有重复数字的所有数字,具有升序或降序的所有四个数字的所有数字,看起来像年的所有数字(19xx / 20xx)和看起来像日期的所有数字(0101..0131、0201..0229等)留下4,785个“有效” PIN,几乎占总键空间的一半。唯一剩下的问题是,如果他们在1月至9月的前9天使用了重要的日期(生日/周年纪念日)等,则该数字几乎可以是任何数字,因此不能机械地排除。

#1 楼

问题是,对于4位数字的引脚,熵并不是很重要。重要的是攻击者的锁定和心理。

密钥空间是如此之小,以至于任何自动攻击(没有锁定)都会几乎立即耗尽它。

您担心的是,攻击者在帐户锁定之前就猜测了密码。因此,假设进行了合理的锁定(例如3-5次错误尝试),则希望您的PIN在最有可能被选择的3-5个PIN之外。以及从19XX年开始的任何年份,这都将是出生的一年。大多数用户群都遵循该建议(提示,他们可能不会),并且b)攻击者知道用户群遵循了该建议。

对此进行了一些很好的分析(链接@提供) codeincahaos)

编辑2-有关此问题的更多数学知识,建议阅读@diagprov的答案

评论


我想我是根据OP的最后一句话来评估它的,询问它是否有助于或损害他们的安全。对我而言,PIN安全性中重要的不是选择常用的PIN。如果没有锁定,那么无论如何您都会被塞满,因此控制中的唯一因素是选择一个不常见的而不是随机的一个。

–罗里·麦库恩(Rory McCune)
17年4月4日在9:35

好的,如果PIN码为8位数字长,则排除重复的数字是否对安全性有好处或帮助?

– techraf
17年4月4日在11:17

好吧,使用8位数PIN码,您仍然处于不受约束的暴力破解非常容易的阶段,因此,您可以假设锁定+不选择通用PIN码是最好的防御方式。您问题的答案将取决于重复数字是否是8位数PIN的最常见形式,攻击者是否会在发动攻击之前意识到限制以及PIN是系统生成还是用户生成。

–罗里·麦库恩(Rory McCune)
17年4月4日在11:25

阅读该链接。很抱歉大喊。

–戴夫
17年4月4日在12:15

@Michael我对引脚安全性一无所知,但是二进制搜索在这里确实不适用。只有当您收到有关值大于或小于尝试值的反馈时,二进制搜索才有意义。我知道没有一个密码错误的系统是“对不起,您尝试输入的密码比正确的密码大”-攻击者仅收到“是正确的密码”或“不是正确的密码”反馈。

– daboross
17年4月8日在21:50

#2 楼

我将稍作讨论,并讨论一下熵和概率,希望这将有助于您理解。这实际上是统计学家中的一个未解决的问题,但这是惯常论者的定义:我们说,如果掷出一枚公平的硬币,它冒头的概率为0.5。但是,如果掷硬币,您可能会发现前五个结果都是正面的,看起来不正确。因此,常客主义者说,如果您将硬币“足够”翻转一次,您最终会发现抛硬币的比例为正数。

关键是概率没有说明什么真的会发生。不管可能的结果如何,都可以通过简单的运气在第一次尝试时就猜出一个高熵密码。如果您开始说“好吧,这是可能的结果的数量...”,那么在生成一些随机数据的上下文中可能是正确的,但这是您真正需要了解底层情况的完美示例。

首先,让我们谈谈自我信息。这是一个随机变量(意味着有许多可能的结果),随每个结果的概率而变化(然后我们采用-log2(P(X))将其编码为信息的“位”)。因此,我们需要为每个结果分配一个概率。

正如其他人指出的那样,PIN选择的某些变化可能性更大。所有相同的数字(1111、2222、3333 ...),生日(20XX,19XX)等。您应该为这些数字分配更高的概率,因为简单地说,人们更有可能选择它们,并且肯定不会选择随机序列。如何将概率分配给其他数字完全取决于您,实际上取决于您对选择图钉的过程了解多少。

现在,熵,或者使@codesinchaos开心的是,香农熵,特别是自我信息分布的意思。给定每个选择的概率,这是自我信息的“最可能”值。这是什么意思?正如目前投票最多的答案所言,这是对选择过程以及其是否良好的一种衡量标准,而不是引脚本身。

当您选择1111、2222, 3333?这些结果给出的自我信息非常低(-log(P(X))对于大概率而言很小,因为我们希望它们会发生),因此删除它们会使分布向右移动,即,将分布位置向中央。这将增加其平均值。因此,消除大多数人原本会以很高的可能性做出的选择实际上会增加熵。没有锁定)?一定要从最可能的PIN开始。熵的意思是,如果您重复此实验足够多次(即尝试猜测以相同逻辑选择了PIN的大量卡的PIN),那么较低的熵选择将为您(攻击者)带来更大的成功再次,

,这仍然是一个问题,即在许多卡的理论情况下会发生什么,而不是由于攻击者幸运而会发生什么。摘要:


熵的大小取决于您如何将概率分配给结果空间。
毫无疑问,如果让人们选择PIN,他们将选择某些值
这意味着您不能假设基本分布是均匀的,而是说“熵==结果数”。
如果您选择概率最高的不良选择,熵上升。
像正确猜测的概率一样,熵绝对不能说明攻击者是否会幸运并正确猜测您的PIN。它只是说理论上更好的熵会使攻击者更难。

现在,为使我的答案更完整,让我们看一下实用性。如果要与密码,散列函数输出选择或随机数据进行比较,则PIN很糟。如果您给攻击者和防御者自由选择PIN码的猜测而没有其他信息,那么猜测的正确率在50%的时间(生日悖论)会很低。 PIN会带来糟糕的哈希功能。

但是,人们无法很好地记住128位数据,尤其是在醉酒并试图用芯片和引脚为烤肉串付款时。因此,PIN是一种务实的折衷方案,并且只有三个猜测作为限制,除了攻击者非常幸运之外,您还应该安全。面对不会随机猜测的攻击者(即大多数攻击者)的机会。


编辑:我认为这种讨论现在需要一些数学。这是我在计算中要假设的内容:


我们正在使用4位PIN码

来自Raesene链接的数据正确,即:

 #1     1234    10.713%
 #2     1111    6.016%
 #3     0000    1.881%
 #4     1212    1.197%
 #5     7777    0.745%
 #6     1004    0.616%
 #7     2000    0.613%
 #8     4444    0.526%
 #9     2222    0.516%
 #10    6969    0.512%
 #11    9999    0.451%
 #12    3333    0.419%
 #13    5555    0.395%
 #14    6666    0.391%
 #15    1122    0.366%
 #16    1313    0.304%
 #17    8888    0.303%
 #18    4321    0.293%
 #19    2001    0.290%
 #20    1010    0.285%


我还要假设,此列表中未提及的任何PIN都有相同的机会从剩余的“未分配”概率(1总数以上消耗的概率)。这几乎绝对是不正确的,但是我们只有这么多数据。为给定的概率集计算实际的香农熵。 / 10 ^ 4。

然后

def shannon_entropy(probabilities):
    contributions = [p * (-1*log(p,2)) for p in probabilities]
    return sum(contributions)


如上所述,在这里,我采用了这20个概率,并假设通过将列表中的每个概率均等地扩展,其余概率在其余结果之间平均分配。执行计算。在这种情况下,我删除了最可能的PIN 1111并重新计算了熵。

从这些结果中,您可以看到随机选择PIN的熵为13.2877位。重复此实验,删除一个PIN,可以得到13.2876位。

给定这20个PIN的选择概率,选择一个PIN,否则随机选择意味着您可以从11.2877位的熵中选择11.40位的熵。从这个基础上,阻止PIN 1111并以其他方式允许其余19个明显的PIN和所有其他PIN具有相同概率选择的熵具有12.33位的熵,而可能有13.2876位。答案是说熵在下降,而不是上升。他们正在考虑最大可能的熵,而不是考虑选择可能性的系统的平均熵(香农熵)。更好的方法是香农熵,因为它考虑了整体做出每个选择的可能性以及攻击者如何进行攻击。

如您所见,将PIN 1111显着地阻塞了增加Shannon熵,但对总体可能的熵有轻微的影响。如果您想争论熵,那么基本上删除PIN 1111很有帮助。

作为参考,XKCD comic计算大约28位的不良密码的熵和大约44位的较高密码的熵。同样,它取决于对某些选择的概率做出的假设,但这也应表明PIN在熵方面很糟糕,而小N的N-try限制是唯一明智的选择。

公共圣人工作表

评论


我感谢您的解释。 +1

– jpmc26
17年4月4日在23:42

请注意,香农熵并不是衡量密码强度的重要指标。使用上面使用的数字,Shannon熵会将密码1111建模为平均10次尝试中可猜测的值(因为它假设攻击者将尝试使用给定的概率分布尝试随机密码),但实际上,由于攻击者只会首先选择最可能的密码。后者可以通过猜测熵的概念来捕获。 (答案的逻辑仍然适用。)

– Tgr
17年4月7日在22:38

另外,我认为在这里调用生日悖论是没有意义的。这仅与碰撞有关,而与尝试猜测固定目标无关。

– Tgr
17年4月7日在22:41

@Tgr但是当用户和攻击者都随机选择PIN时,diagprov不在谈论冲突吗?

– jpmc26
17年4月11日6:19



不过那是错误的。如果防御者选择一个随机数,或者攻击者随机猜测,则50%机会的预期猜测数为5000,成功机会与猜测数成线性关系。 (FWIW,如果两者之一使用统一的随机分布,则另一方对分布/算法的选择没有区别。)攻击者的多重猜测绝对不会彼此“冲突”。

– Tgr
17年4月11日在10:24

#3 楼

这实际上取决于PIN的创建方式:


如果生成了PIN,请确保分配是统一的,并且不排除任何组合。这将使熵最大化。
如果操作员选择了PIN,则排除某些组合是很有意义的。我不会拒绝组合的一半,但是如果您这样做,您还应该考虑拒绝以012(考虑出生年月和日期)开头的PIN,然后拒绝与诸如25801379等物理按键布局相对应的PIN。等等等等。只要确保停止操作,然后再允许单个8068 PIN(此研究发现该PIN最小)就可以了。

对于人为选择的PIN,您应该做的是排除最常见的组合:123411111212占使用的所有PIN的近17%,而20种最受欢迎​​的PIN则占将近27%。其中包括将每个数字重复4次以及常见的组合,例如4321和q4312079q。即使您的PIN是随机生成的,攻击者也可能不知道,在这种情况下,他们很可能会首先尝试这些组合。

评论


您的编辑比原始评论要好得多。重要的是攻击者的算法。由于攻击者必须检查整个组合集,而不仅是这个特定人从中选择的子集,因此重要的是前者的熵而不是后者的熵。

–吉姆·巴尔特(Jim Balter)
17年4月5日在6:56

#4 楼

熵是密码生成方法的属性,而不是密码。

如果决定消除重复的数字-与生成随机序列相比,此决定降低了熵。

实际上,您想出的任何东西的熵都比生成随机序列要低。 -force,只需前往任何赌博场所,然后连续四次下注1111-这肯定是一场胜利。

评论


尽管序列“ 1111”与其他序列一样可能出现,但我建议攻击者更容易猜测到该序列,因此,避免使用该序列会更加安全。

–汤姆·鲍恩(Tom Bowen)
17年4月4日在7:40

评论不作进一步讨论;此对话已移至聊天。在那里应该做进一步的评论-在这里做的任何评论都将被删除。

–Rory Alsop♦
17-4-5在11:11



我还要指出-观察是一个因素。与按几下键相比,告诉您按同一键四次(是哪个键)要容易得多。

–Sobrique
17年4月6日在13:49

如您所说,熵是密码生成方法的一个属性,当最常见的PIN生成方法是人为选择时,避免使用最常见的密码是值得的。如果我编写一个程序来生成一个随机长度的随机字符的随机密码,理论上我的熵确实很好,但是如果该程序偶然吐出“密码”,则丢弃该结果仍然是一个好主意,因为攻击者不会知道或不在乎我是随机生成的

–凯文·韦尔斯
17年4月7日在15:32

因此,如果您想为自己的汽车提供4位数的密码,并且随机密码生成器选择了“ 1111”,您会使用该密码吗?如果我们谈论的是在随机猜测销钉的情况下进行蛮力逼迫,那是对的,这没什么大不了,但是在现实世界中,使用“ 1111”就像将车始终解锁。

– Jojodmo
17年4月8日在6:05

#5 楼

限制可用的数字池会减少解决方案的数量,从而降低安全性。

选择PIN码时,重复数字是人类的普遍弱点,这意味着攻击者将首先尝试使用该数字。因此,排除重复的数字会提高安全性。

通常,根据您要防御的特定攻击,该决定既有好处也有弊端。如果您想提高系统的安全性,则可能不应该考虑太多,而应考虑更广泛的变化(例如不使用4位数字的引脚,添加第二个因素或对错误尝试进行锁定)。

评论


我认为第二点是更大的担忧。但是,请避免重复输入数字。避免使用“明显”模式:1234、4321。当然,我有布鲁斯·施耐尔(Bruce Schneier)的信用卡,我可以尝试使用任何不是明显模式的随机组合。如果您不太知名,那么我认为最好避免使用“简单”的密码。

–戴夫
17年4月4日在12:13

@dave这就是悖论。 。

–David Richerby
17年4月4日在13:18

@dave因此,如果攻击者知道Bruce Schneier,则使用通用的,显而易见的PIN可以更安全地使用他的帐户。有趣。

– jpaugh
17年4月4日在21:50



@DavidRicherby真的!我猜想“无趣”整数的想法只有在您认为整数只是部分有序集(没有定义“无趣”整数的顺序)时才令人信服。

– jpaugh
17年4月4日在21:54

“限制可用的数字池会减少可能的解决方案的数量,从而降低安全性。” -这是很错误的,因为没有减少池,只有OP选择从池中取出。这种区别至关重要,因为攻击者必须解决整个池,并且除非攻击者正在阅读此页面,知道谁是OP并相应地调整攻击,否则不知道OP会限制他们的选择。

–吉姆·巴尔特(Jim Balter)
17年4月5日在6:51

#6 楼

在我看来,大多数其他答案都集中在错误的攻击类型上。攻击情形。

字典式攻击

从我可以从问题中得出的结论来看,我们正在谈论手动PIN输入,因此攻击者必须输入他们尝试的每个PIN。因此,暴力破解攻击可能需要一段时间(例如,您尝试输入的每个PIN需要两秒钟,平均大约需要三小时)。这是可行的,但不是最明智的方法。

因此,当蛮力攻击不可行时,您可以改用字典攻击。在这里,您首先尝试最常用的PIN。如果失败,您以后可以随时使用蛮力攻击。有了字典攻击,熵就不再那么重要了。在此,密码是否在词典中很重要。由于攻击者很可能没有真实的公用PIN词典,因此他们将不得不动态提出自己的词典。这意味着,字典可能会很短并且以模式为导向。词典中可能的PIN是:


连续PIN(例如0123或1234)
具有四倍相同数字的PIN(例如2222)
也可能是PIN只需使用相同数字的三倍

,通过消除这几个密码,您的密钥空间大小不会降低太多,但可以轻松防御字典攻击。网站使用类似的策略,不允许您使用常见或容易猜到的密码(例如,使用用户名作为密码)。

蛮力攻击

下一个我们可以尝试针对可能的暴力攻击进行优化。这可能会带来更多帮助,而成本更高,因此这可能不值得。
攻击者可以采用两种主要策略进行蛮力攻击:要么输入随机PIN,要么以0000开头并递增(或9999递减)。因此,诸如0001或9998之类的PIN可能不是一个不错的选择,因为进行暴力攻击的人可能很快找到它们。因此,也许排除以0或9开头的PIN。

遵循这些规则,您不应丢失太多可能的密码,但是对于这种特定情况,您可以针对最常见的攻击策略来增强PIN。

评论


“所以也许排除以0或9开头的PIN。”我不同意。排除这些PIN只会使蛮力攻击花费更长的时间,但是攻击者迟早会最终通过所需的PIN码。排除它们只会减少熵。

– mzcoxfde
17年4月11日在7:36

首先,如果具有足够的性能,则每个密钥都是可强制执行的。使用更长的密钥的全部目的是使攻击者的速度减慢足够长的时间,从而使攻击变得不可行,因为它耗时太长。这里也一样。如果您的强力攻击者至少要进行1000次尝试(在2秒内尝试大约半小时),这比例如100次尝试。另外,如果输入的快捷键有限制,则可以大大改善此功能,例如每次尝试之间要等待10秒,至少需要2.7个小时。试图破解一些锁定而又不会被捕获很长时间。

–达卡龙
17年4月11日在13:49

#7 楼

没有足够的评论,但有建议。肩膀冲浪者更容易观察到使用单个按钮(或简单按钮样式)输入的PIN。在小学时,老师以为他们通过设置我的密码4321帮了我一个忙,有些混蛋看着我的手指笔直移动并告诉所有人我的密码。 ,然后从完全随机生成的PIN中减去它们。

评论


这个!根据PIN的用途:使用哪个键盘以及谁可以观察,可能容易猜出一个数字的PIN。如果您意识到所有4位数字都是相同的并且在右上角,则只需尝试1111、2222、4444和5555。看似随机的手指移动将使猜测变得更加困难。

– Matthieu M.
17年4月4日在12:00

@MatthieuM。 OTOH,如果它们都在小键盘上,您是否设置了1-1-6-8、1-6-6-8、1-6-8-8、1-1-8-8等对于某些“肩膀冲浪者”而言,要比4-3-6-9难得多。

– Shane
17年4月4日在19:27

#8 楼

这取决于实现方式。消除连续数字将使密钥空间减少0.1%,但对物理安全性有一些好处,可能值得进行权衡。更安全的是,您正在使键空间更小(但是,十分可惜的是,十分之十)。视觉和热视觉提取是当今的真正危险。换句话说,坏人用他们的眼睛,望远镜,ATM上的掠过相机甚至是热成像相机来肩膀冲浪您的密码。

这最后一个是最近的,特别是令人讨厌的,因为即使您将垫子盖好,撇油器也可以走到针垫上并查看热信号。

连续使用别针会损害该地区的安全性;它以惊人的数量降低了数字物理位置的复杂性。即使您遮住了手,攻击者很可能会在锁定之前猜测您四次按下的按钮。在电话上,如果零位上有大油脂点,那我将首先尝试。

评论


“这里有很多很好的答案,主要是要使密钥空间更小(而不是使密钥空间更安全)(但是,可以忽略的是,10,000个中的10个)。 -不,这些答案很不好,因为限制选择的密钥集不会减少密钥集,密钥集是您可以选择的并且任何攻击者都必须考虑的密钥集,除非您告诉他们省略了某些组合,他们就为您量身定制攻击。

–吉姆·巴尔特(Jim Balter)
17年4月5日在7:03

#9 楼

您应该事先列出“弱密钥”的特定列表,这是有人会尝试猜测的列表。其中包括重要的日期,地址等,如果人们在猜测时会尝试尝试,则可能包括1111。

然后进行随机抽取,并针对(简短)列表进行过滤。如果列表不是简短但系统的(例如没有重复的数字,没有合法的日期),那么您可能会遇到太多的可能性,这使得再次猜测变得容易。

#10 楼

在我的手机上,PIN故意连续两次使用其中一个数字,以使其更难以猜测,原因是:


“油脂点”的数量与位数
“肩膀冲浪者”将很难(很少)区分两次轻击与一次轻击

附录:相关电话允许自定义PIN码长度,因此,攻击者(不注意引脚输入)不知道使用的数字位数。

评论


如果您手机上的油脂斑点告诉我您的n位数密码使用了n个不同的数字,则为n!可能的针脚。如果油脂点告诉我它使用(n-1)个数字,并且我知道您的电话可以让您双击其中一个数字,则为(n-1)(n-1)!可能性,这是一个较小的数目。史诗般的失败。

–David Richerby
17-4-4在13:26



如果我在手机的零位上看到一个很大的油脂点,我会赌他们的针脚是钱。

– J.A.K.
17年4月4日在17:02

@Shane如果是PIN,则它的长度是固定的,我可以通过猜测数字来找出。我们应该始终假定攻击者知道任何系统强制的规则,例如“ PIN必须包含三位数字,并且其中之一重复。”另外,我不确定你从哪里得到n!^ n!从。如果密码的长度为$ k $,并且每个数字都有$ n $个选项,则最多有$ n ^ k $种不同的可能性。如果可能的长度没有限制,则可能有无限多个密码。

–David Richerby
17-4-4在20:18



@DavidRicherby具有数字[1,2,3,4]的4位数引脚具有24种可能性。带数字[1,2,3]的4位数引脚有36种可能性。

–Frambot
17年4月4日在22:06

@JoeFrambach否,数字1、2、3的4位PIN有18种可能性:1123、1132、2113、3112、2311、3211、2213、2231、1223、3221、1322、3122、3312、3321、1332 2331、1233、2133。

–David Richerby
17年4月5日,0:57

#11 楼

2012年,一位研究人员从一系列数据泄露中汇总了最受欢迎的PIN码列表。他发现最受欢迎的PIN是:


序列,例如12347777

日期,例如2001

>流行文化参考,例如0007(来自James Bond的代号007)
易于输入,例如2580(在许多小键盘上成直线的数字)

前20名(不包括上面给出的所有示例):

因此,顺序不好。没有助记符的PIN也很容易记住。但是,相同位数以上的图钉也不一定是不好的。

案例:


在秤的另一端,我在数据集中发现的最不常用的数字是8068。在所有数字组合中,这似乎是最不有趣的。这不是历史上的日期,不是模式,不是生日,也不容易输入。这是完美的销钉…否则可能直到现在。


所以现在您知道了。

评论


we!我的不在列表中!

–约翰·亨克尔(John Henckel)
17年4月11日在9:53

#12 楼

根据重复数字的位数,有些攻击的有效性可能会有所不同。例如,假设某人在您的出纳机键盘上撒了些灰尘。您放入卡,在输入图钉时遮住手,检查余额,然后想知道。在您走时,有人捡起您的口袋,拿起您的卡。

他们现在有了您的卡,可以看到哪些按钮的除尘受到干扰-他们知道数字,但不知道顺序。

如果他们看到您按下数字2、3、6和8,那么您的密码可能是以下其中一项:

2368, 2386,   2638, 2683,   2836, 2863, 
3268, 3286,   3628, 3682,   3826, 3862,
6238, 6283,   6328, 6382,   6823, 6832,
8236, 8263,   8326, 8362,   8623, 8632


24种可能性。有了3个猜测,他们就有1/8的猜对机会。 >
2236, 2263, 2326, 2336, 2362, 2363, 
2366, 2623, 2632, 2633, 2636, 2663, 
3226, 3236, 3262, 3263, 3266, 3326, 
3362, 3622, 3623, 3626, 3632, 3662, 
6223, 6232, 6233, 6236, 6263, 6322, 
6323, 6326, 6332, 6362, 6623, 6632


其中有36个。 3次尝试中猜中的赔率是1/12。更好的赔率!

让我们再尝试一次,这次只有两位数:

2223, 2232, 2233, 2322, 2323, 2332, 2333, 
3222, 3223, 3232, 3233, 3322, 3323, 3332


14种组合,超过1/5的猜测机会只需尝试3次。

很明显,只有一位数字,只有一个解决方案,可以立即猜到它。

当然,如果您的密码在您的密码上是1、6和9,我猜你是1961年,1966年,1969年或1996年出生的-如果我看到你走了,我应该能够猜出你是21岁还是48岁,这意味着3猜想可能是我所需要的。

#13 楼

没错,删除模式的规则会损害您的密钥空间,但是它不会降低任何熵,因为熵是来自硬件的,因此TRNG机器可以一次又一次输出重复的数字。

在数学上,如果您不想在'0919'中看到像9这样的重复数字,那么您的数学是正确的,但是如果您是在'0991'中看到像9这样的重复数字,那么您就剩下了7190(满分为10000)中的一个。 ',删除所有非质数,那么您只有少量(10000个中的〜300个)无用数字。

评论


为什么要去除非素数?我认为素数在数学上更有趣。

–timuzhti
17年4月5日在3:44

我将删除所有可被2整除的内容,然后删除可被3整除的所有内容,因为它们更容易记住,并且一路直通。但是您是对的,有些人可能会记住小于10000的素数,因此也应将其从池中删除,这给我们留下了非素数并且也不能被其他数除的数:D

–丹尼尔
17年4月5日在7:02

#14 楼

避免连续使用相同的数字。同一数字之间的延迟将短于不同数字之间的延迟(因为您的手指已经在按钮上),从而提供了重要的信息。

评论


请说明拒绝我的答案的原因...

– EL Dendo
17年4月4日在14:36

我没有拒绝投票,但是这似乎是在假设一种特定的威胁模型,它并没有引起人们的关注。也就是说,它假设攻击者具有某种机制,可以在不实际观察设备的情况下计时您的按键模式。我隐约地意识到存在一种在键盘上打字时可以进行类似观察的技术,但是我不清楚PIN最初是在键盘上输入的。

– jpmc26
17-4-4在23:54



@ jpmc26它肯定已经长大了;参见,例如,大卫·华莱士(David Wallace)在OP的问题下的评论。根据您所需要的假设,在实际按键被遮挡的情况下,远方观看某人的手指,甚至只是他们的手都符合资格。至于“键盘”,OP在其编辑中写道“可编程门锁,警报系统面板,车库门键盘等”。

–吉姆·巴尔特(Jim Balter)
17-4-5在7:18



实际上,我是出于经验不足:我正在输入代码,而大学生看不到我的手,却听到了我敲击键盘的声音。之后,他告诉我哪些连续数字相同。

– EL Dendo
17年4月6日7:44

#15 楼

使用合适的设备,数位数的针很容易在几秒钟内破裂。当Reaver之类的漏洞证明4位数字不够用时(为什么您的密码可以被强行使用),为什么要使用这样一个可笑的短销呢?

如果不能被强行使用,您担心什么?关于?有人猜测它的几率仍然是10,000的1,而不管引脚是1743还是1111。您总是冒险使用较短的引脚,并且建议您不要大胆地接受重复的序列降低熵。

如果您对此有所考虑,则可以确保生成器继续产生值,直到每个位置都有唯一的数字为止。对于您要完成的工作,此方法似乎是最合逻辑的,例如,如果您仍然允许使用1111,尽管没有使用它,它也不会降低熵(重复生成数字,直到找到每个数字中唯一的数字为止。位置,并扔掉那些不是)

评论


“例如,即使您不使用1111,也不会减少它的熵”。完全错误。无论您是从不考虑重复数字的PIN还是生成它们,都可以不予考虑:净效果是“ PIN空间”为潜在大小的一半,因此熵降低了。

– TripeHound
17年4月4日在7:37

大声笑,如果您将PIN选为1234,则由于这是最常见的PIN,因此攻击者更有可能在前两枪中猜测出它。请记住,攻击者是人类。

–罗里·麦库恩(Rory McCune)
17年4月4日在8:19

@TripeHound但这是假设对手知道不允许重复的序列...从技术上讲,熵将保持不变。你错了。

–迪伦
17-4-4在8:38



@Dylan不,你错了。您描述的方案只是拒绝采样,以在10 ^ 4个可能的引脚的某些子集上产生均匀的分布。分布的熵仅取决于分布,而不取决于您用来从中采样的方法。 (例如,通过滚动4面骰子生成的数字的分布熵与通过滚动6面骰子并重新滚动5s和6s生成的分布的熵完全相同,因为它是相同的分布。实际上,这是您在这里所做的,只有10,000面的模具。)

–David Richerby
17-4-4在13:31



迪伦是对的(不是关于1234,而是关于子集),而TripeHound是完全错误的。 “ PIN空间”是一组可能的引脚,攻击者必须知道这些可能的引脚,而不是OP从中选择的子集,攻击者不知道这些引脚(除非他们正在阅读此页面,了解OP并定制其引脚攻击依据)。大卫·里奇比(David Richerby)犯了同样的错误,将样本空间的一个过滤后的子集与样本空间(保持不变)相混淆。

–吉姆·巴尔特(Jim Balter)
17-4-5在7:07