我最近认识的NHS医生必须做他们的在线强制培训问卷,该问卷询问有关临床实践,安全性和安全性的一系列问题。此调查表将被发送给该NHS信托中的所有医生。

调查表包括以下问题:


以下哪项将使最安全的密码?选择一个:

6个字母,包括大写和小写。
b。大小写混合的10个字母。
c。 d。包含数字,字母和特殊字符的7个字符。
d。大写10个字母。
e。 5个字母全部小写。


他们回答“ b”,但由于“正确答案”显然是“ c”,所以丢了一个分数。

据我了解,通常,扩展密码长度比扩展字母增加更多的熵。我想NHS可能会争辩说,人们通常会使用非常可预测的单词来构成长密码,从而容易猜出它们。但是,如果您强迫人们引入“特殊字符”,他们也会倾向于以非常可预测的方式使用它们,而密码猜测算法不会遇到任何麻烦。

尽管全面披露,但我不是密码专家-我主要从Randall Munroe(单击此处进行讨论)得到这种印象:



我错了吗?

评论

我喜欢他们在密码概念上对人们进行测试,但这是一组可怕的可能答案。

最终,这是一个措辞很差的问题,没有明确的答案。没错,在防止暴力破解密码时,长度通常比字符集重要,但是如果没有定义“特殊字符”中包含哪些字符,就无法判断哪个更好。选项c也不指定大小写字母,因此完全有可能是较小的字符集和较短的密码。 26个小写字母+10个数字+半打普通特殊字符比仅使用大写和小写字母的字符要少

您是否接受过培训,或者此测验是突如其来的?正确的答案将是培训提供的答案,而不是“真实”的答案。这是一种令人悲伤的状况,但是我希望它不仅限于信息安全,而且您在医疗方面遇到了类似的问题。关于成为NHS医生的建议;我是英国人,你做得很棒。

考虑到多少/ banks /关于密码安全性有误,我不能说我很惊讶……

在这种情况下,@ Michael我们需要一个“我在互联网上发现某人在真实生活中是错误的” xkcd。

#1 楼

无论如何,它们是错误的:

七个可随机打印的ASCII:957 = 69833729609375可能的密码。

长度计算。如果您是随机生成密码,那么它比其他任何使密码难以猜测的方法都重要。

评论


他们没有说ASCII,许多(大多数?)系统允许Unicode密码。有128,172个Unicode字符,因此在此基础上,“ c”将是正确的。

–paj28
16-10-6在22:06

@ paj28,大写的概念实际上只是拉丁字母和希腊字母以及从它们衍生而来的一些字母的特征。

–马克
16-10-6在22:27

使用quickscript我算出1984个小写字符和1631个大写字符。 3615 ** 10 = 381138671891365331133862350087890625(对于b)仍小于128172 ** 7 = 568266595760666481405057656211161088(对于c)。也许我们可以从(c)中删去一些无法打印的字符以降低数字-但是很明显,写这个问题的人没有做过这些数学运算!

–paj28
16-10-6在22:31

@ paj28广义上讲,这是一个好主意,但实际上,我认为期望以英语为主要语言国家的普通医生的系统拥有除ASCII键输入之外的任何东西(如果他们必须确定数字)是不现实的阐明了如何在可能不是其“配置”的多台机器上配置多个键盘布局,以及工作输入法将热键切换到其密码输入流程,以及当他们必须登录到不是“工作站”的工作站时可能被锁定的方法。 t已经如此配置,则可能不存在)。

–mtraceur
16-10-7在1:06

这个不同问题的答案提出了在密码中使用非ASCII字符的情况。它与理论无关(较大的字符集更好),而与实践无关(您不能信任第三方系统实现者可靠地处理非ASCII文本)。

–路易斯·卡西利亚斯(Luis Casillas)
16-10-7在18:03

#2 楼

理论角度

让我们在这里进行数学运算。共有26个字母,10个数字,并假设有10个特殊字符。首先,我们假设密码是完全随机的(并且使用一个组中的字符比使用另一组中的字符的可能性更大)。

然后可以使用多个密码表示为C = s^n,其中s是字母的大小,n是字符数。密码的熵定义为:

log2(C) = log2(s^n) = log2(s)*n


让问题中的数字插入到该密码中:

     s    n   Entropy (bits)
A   52    6   34.2
B   52   10   57.0
C   72    7   43.2
D   26   10   47.0
E   26    5   23.5


因此,在这种情况下,C只是仅次于B和D的第三好的选择。

实用的观点

但这都是在随机性假设下进行的。对于人们如何生成密码,这不是一个合理的假设。人类只是不会那样做。因此,我们将不得不针对密码的生成方式以及攻击者在其词典中尝试输入密码的顺序做出其他一些假设。

一个不合理的猜测是,许多字典都是以单词开头的,只有后来继续进行替换并添加特殊字符。在这种情况下,短密码中的单个特殊字符要比真正长的普通单词更好。但另一方面,如果攻击者知道总是使用特殊字符,则她将首先尝试使用这些密码。第三方面,字典可能是围绕完全不同的原理(例如在泄漏的数据库中出现)集中。

我可以永远推测。

为什么这是问题,而不是答案,那是错误的

问题在于,如何生成密码有许多原则可供选择,我可以任意选择一个,以便几乎所有答案都是正确的。因此,整个问题毫无意义,只会掩盖世界上没有任何密码策略可以强制执行的重要观点:密码所包含的强大字符不是其所包含的字符,而是密码的生成方式。

例如,Password1!包含大写,小写,数字和特殊字符。但这不是很随机。另一方面,ewdvjjbok仅包含小写字母,但更好,因为它是随机生成的。

他们应该怎么做

如果您不再依赖于非常容易出错的内容,有限的人类记忆字符集和长度不再是您必须权衡的限制因素。您可以同时拥有两个。

一种方法是使用密码管理器。正如Dan Lowe在评论中指出的那样,这对医院而言可能不是可行的选择。第二种选择是使用某种双因素身份验证(例如,硬件令牌或钥匙卡),这会使第一因素(密码)的安全性变得不那么重要。

系统管理员而不是最终用户来实施。他们必须提供允许最终用户以实用和安全的方式执行其工作的工具。没有多少用户培训可以改变这种情况。

评论


看着我附近的英语键盘(一个实际上有雕刻的键盘!),我发现了三十多种可用的非字母数字(仅使用Shift作为修饰符-不使用Compose / Super / etc);在医疗设备的触摸屏上也是如此。因此,您可能可以稍微提高C的分数(它仍然永远不会赢!)。

– Toby Speight
16-10-7在8:41

@TobySpeight感谢您的输入-没想到会有这么多!我怀疑这是一个关于小麦的问题,它是“可用的特殊字符”还是“人们平均实际使用的特殊字符”。然后我们回到原来的NHS问题难以回答的事实。

–安德斯
16-10-7在8:52

在医疗环境中,密码管理器不现实。医生和其他人员正在登录办公室,走廊,病房等中的共享终端。而不仅仅是在自己的计算机或设备上。

–丹·洛(Dan Lowe)
16-10-7在14:19

很好的答案,但我巧妙地不同意您上一节中的结论(“他们应该问什么”)。并不是因为“使用密码管理器随机生成密码”是一个糟糕的建议,而是因为它对最终用户是一个很好的建议,而对于像NHS这样的机构却不是那么好,如果他们真的非常重视密码安全性,那么他们应该考虑请仔细考虑两因素身份验证。

–路易斯·卡西利亚斯(Luis Casillas)
16-10-7在18:12

@MaciejPiechotka-据我所知,英国没有类似于HIPA的任何具体立法。这意味着根据《数据保护法》,只有一般义务,机密信息的控制者应遵循最佳做法,以确保不会错误地披露信息,但是对所使用的实际技术没有任何特定的法律要求。

– Periata Breatta
16-10-8在2:11

#3 楼

我意识到已经有了很多好的答案,但是我想澄清一点。

这个问题无法回答,因为它没有指定字符集,也没有指定密码选择方法。

首先要解决第二点,我们将假装密码是在允许的域内真正随机生成的,否则我们甚至无法开始对此事进行推理。

对于我们的另一点来说,举一些极端的例子,让我们说b表示仅英语字母中的字母,因此说52个可能的符号。这样每个字符大约有5.7位熵,因此总体上大约有57位熵。

另一方面,让我们说(也许有些不合理)答案c表示任何完全随机的Unicode代码点,即被视为字符(与BOM表等相对)。从Unicode 6开始,目前大约有109,000个字符。这意味着每个字符大约16.7位的熵,总共117位的熵。

另一方面,如果答案c仅限于ASCII或ISO 8859-15或其中的某些子集,很容易得出相反的结论。

当然,这是完全不合理的,但突出了问题的破缺之处以及如何合理地为任一答案辩护。要成为一个明智的测试问题,必须措辞更加严格,这将使技术或数学知识有限的用户难以解决。

最后,我建议该测试这很可能是毫无意义的,因为组织理想上不要求用户记住密码要求,而是以技术方式实施它们(我认为唯一的用心学习有用的要求是不要在多个地方重复使用相同的密码)。

评论


从实际的角度来看,密钥空间必须限于用户可以合理键入的内容。由于这是NHS,因此他们可以确定的唯一语言是英语。外国发言人可能会在他们的系统上配置其他东西,但这并不意味着他们可能需要使用的每台计算机都会被配置。

–Loren Pechtel
16-10-7在5:53

@LorenPechtel我理解这一点,正如我试图暗示的那样,我并不是在说这个例子是真实的,而只是这样的模棱两可足以使这个问题无法确定地回答。

–活力
16-10-7在5:55

我反对这种“无法回答的”立场。是的,有某些未知数,这意味着不可能计算出关于可能性的绝对绝对正确的数字。这并不意味着它无法回答,因为我们在这里寻找的只是一般性。我们知道人们倾向于使用粗略的字母。而且,将字母的长度从7扩展到10所增加的可能性数量是否比您的字母大小相差40%左右,难道不是真的吗?无论未知因素如何,绝对有更好和更糟糕的经验法则。

–罗宾·温斯洛(Robin Winslow)
16-10-7在6:50



除了最后一段,我都同意。我认为通常向人们介绍密码复杂性要求背后的推理是很有用的(尽管我不会同意任何一组特定规则的细节),因为如果他们理解了其中的许多推理(理论上,希望)可能会更倾向于并能够根据自己的意愿选择更强的密码。与仅仅尽力满足任何现有技术执行机制的要求相对。

–大多数情况下
16-10-16在20:46

#4 楼

NHS关于在理想情况下最安全的密码是否错误?是的,绝对是的-其他答案已经相当全面地涵盖了这一领域。

NHS关于在NHS环境中哪种密码最安全是错误的吗?也许不是。

长密码怎么会变得更糟??

有一些遗留系统会人为地限制密码的长度-例如,旧的Windows LANMAN / NTLMv1密码哈希将长度限制为14个符号,而旧的基于DES的UNIX密码哈希将其长度限制为8个符号。更糟糕的是,在这样的系统上,密码输入通常会让您输入任意长的密码,而忽略

实际上,NTLMv1似乎是它们正在运行的特定旧方案。正如@MarchHo指出的那样,NTLMv1将您的密码分为两半,每个半角最多7个字符,并且每个半都可以分别破解。因此,如果您将NTLM与10个字符的字母数字密码一起使用,则真正拥有的是7个字符的字母数字密码和3个字符的字母数字密码。前者显然比完整符号集中的7个字符还差,而后者在使用10年的PC上可能会在几毫秒内被破坏。

为什么这么老的东西仍然会普遍使用?

基本上,因为它可以工作并且升级成本很高。

现在,我在推测,但是:我建议特别是医疗环境可能正在运行遗留系统,因为医疗保健的敏感性。新系统在被接受为解决方案之前,可能需要进行彻底的审查,这意味着医疗保健系统的更新往往会缓慢进行且花费巨大。

因此,如果您知道有一些通用的系统在运行这样,您就无法修复它们,那么,您最好的办法就是告诉您的用户使用最大的符号池来选择一个长度为n的密码。

通常:您确定密码不会被截断吗?

不幸的是,这也对一般情况有影响,特别是对于那些长期喜欢我们密码的人而言。我们如何确定仅使用密码短语的第一个或两个单词就不能登录https://example.com?与使用众所周知的“正确的胸椎电池钉”一样糟糕,不小心使用“正确的”电池会更糟。为了确保密码安全,仅确保生成足够的熵还不够。您还必须确保另一端的系统不会丢弃大部分系统。

评论


NTLM还将14个字符的密码分成两个7个字符的哈希,因此有效密码长度为7。

–何三月
16-10-8在13:00

@MarchHo:我想您可能已经解决了难题!更新了我的答案。

–詹德
16-10-8在19:22

NTLM哈希过程不会在哈希之前将密码分为两个7个字符的段。您正在考虑LM哈希过程,确实可以做到这一点。 LM还会在散列之前将所有字母字符转换为大写。

– PwdRsch
16-10-9在19:38

NTLM版本1确实使用了我在说的过程,它是从LANMAN继承的。参见例如维基百科和MSDN。 NTLMv2通过切换到基于MD4的架构来解决此问题。转换为大写的好点。

–詹德
16-10-10在17:05

当然,医疗环境的升级速度可能很慢。在2014年,我仍然在与医疗保健相关的Web应用程序的Web服务器日志中看到IE6。

– Peter Taylor
16-10-14在10:39

#5 楼

这个问题有些问题。其中之一是,它没有说明如何选择密码,但我认为最合乎逻辑的方法是假设密码是随机选择的,但满足各自的条件,因此我将使用该约定作为答案。请注意,Randall的漫画显然不同意这个假设,但是问题并没有指定选择密码的方式,因此我认为我们会尽可能地做到最好,那就是随机选择密码。此外,该测试可能不是基于Randall的漫画进行的。

如果假设使用英文字母,则选项b的关键步调非常容易计算。是的,我知道更多的假设。但是,由于测试似乎是英语,而且不太棘手,所以我认为我们可以做出这样的假设。

英语字母中有26个小写字母,大写字母也一样,共计52个。因此,选项b的键空间中有52 ^ 10≈1.45 * 10 ^ 17个元素。

选项c的具体程度要比选项b少。但是,由于我们假定使用英文字母(这有利于选项c),因此我们还可以假定仅对特殊字符使用了ascii(这有利于选项b)。的确,如果假设特殊字符比ascii更多,那么我们就必须假设字母比ascii更多,因为ä可以说是德语字母。与选择b的键空间相比,选择c的键空间更大。*

如果我们限制自己使用ascii字母,那么对选择c最好的办法就是使用每个可打印字符(字母中的空格(不包括空格)(请注意:“字母”一词的用法不同,但更通用)。这是94个字符,为选项c提供了94 ^ 7≈6.48 * 10 ^ 13个元素的键空间。

由于我们要解决该问题的一种假设是,密码是随机选择的,因此受到相应的限制,并且该规则等于从相应的密钥空间中随机选择一个密码,因此使用选项b选择的密码可能很难猜测,因为存在

实际上,如果我们假设通过蛮力破解密码的成本与密钥空间的大小大致成线性关系,则破解通过选项b选择的密码的密码是破解通过选项c选择的密码的52 ^ 10 /(94 ^ 7)≈2'229倍,清楚表明该问题的正确答案是错误的。


*这在数学上很容易证明,但是此StackExchange缺少LaTeX支持,无论如何,您可能会通过文本描述更好地理解它。

唯一的优势选择c优于b它很大ger字母(再次,更普遍地使用“字母”一词)。但是,选择b可以通过选择更长的密码来解决此问题。如果我们向其中添加越来越多的字符(例如üàØÆ等),则会使字母的大小更加相等,从而导致c优于b的优势逐渐减弱,而b的优势超过了c不受影响。

评论


为了使“ c”成为正确的答案,除了字母数字外,还需要至少221个特殊字符可供选择。祝您好运,找到可以让您输入密码的键盘!

–马克
16-10-6在21:36

这些是针对医生的培训问卷,而不是Comp Sec考试。尽管您可以通过数学证明熵来支持另一个答案,但他们的目标是让人们思考“ Pa $$ w0rd”而不是“密码”

– Shane Andrie
16-10-6在21:44

@马克是的。并且您最好希望键盘不提供更多字母。等一下。基本上,任何键盘都已经提供了à这样的字符,从而大大增加了该数字。

–UTF-8
16-10-6在21:46

@ShaneAndrie问题是“以下哪个将成为最安全的密码?”,而不是“哪个密码策略将使用户平均选择更安全的密码?”。此外,您可以轻松地根据选项c意外创建密码,这些密码不是最流行的一百万个密码的一部分。如果用户仅需遵守选项b,就不大可能意外创建一个密码,该密码不是最受欢迎的百万密码的一部分。该服务应始终检查密码是否是百万最受欢迎的密码之一。

–UTF-8
16-10-6在22:04



@ShaneAndrie,那么他们的目标是错误的。他们不应该让人们认为“ Pa $$ w0rd”而不是“密码”。他们应该让人们思考“这是一个密码短语,您无法猜到”而不是“密码”,这将更有效地朝他们的真实目标努力。

–mtraceur
16-10-7在1:12

#6 楼

我喜欢熵问题:

简短答案:

是的,关于更多的熵,您在技术上是正确的(最好的一种)。

答案很长

熵主要受两方面因素影响。密码可以使用的符号数和长度。在NHS的情况下,逻辑上是“特殊字符”是可以在10个字符答案中使用的符号,因此,密码越长,熵就越高,并且从理论上讲更加安全。

但是,我们必须与人打交道,而且我们很懒。问题是试图使人们在密码中包含特殊字符,因为这会迫使熵发生。

没有它,Randall的漫画在数学上是正确的,虽然很厚脸皮,但是任何认为正确的horsebatterystapler都是SysAdmin都是很好的密码,因为它需要长时间打在脸上,因为这一直在我的彩虹表中一会儿。

公平地说,我认为将四个词典词串在一起是一个好主意(这就是我们所说的密码短语),但是我所说的人比较懒惰,很可能会陷入常见的模式。

评论


谢谢你是否有证据表明人们被迫使用特殊字符实际上导致了更多无法预测的密码?因为我假设一个被迫提供10个字符密码而没有其他规则的人,所产生的密码比一个被迫提供7个字符(其中包含特殊字符)的人更难以猜测。这是真正的问题。

–罗宾·温斯洛(Robin Winslow)
16-10-6在20:58

作为记录,在我的团队中,我们在几个地方使用“正确的马电池钉”;)。首先我们认为不需要密码的地方...

–罗宾·温斯洛(Robin Winslow)
16-10-6在21:00



相反,允许人们选择密码是可怕的。我们倾向于使用助记符,而不是很大的模式列表。这使我们易于剖析,因此易于猜测。密码生理学是一回事,这是证书被大量推送的原因之一。

– Shane Andrie
16-10-6在22:07

@RobinWinslow我宁愿认为10个字母的英文单词将在用户选择的密码中占很大的比例,因为用户努力使它们令人难忘而不是难以理解。

–詹姆斯·瑞安(JamesRyan)
16-10-7在10:15

#7 楼

引用的测试和您的反驳都是错误的,从根本上说,因为熵是密码随机性的一种度量标准,而不是长度,不是字母大小。当且仅当“正确的马桶钉书钉”下面的44个小灰色框代表所使用的硬币翻转(或类似的均匀,独立的随机事件)的结果时,您引用的XCKD漫画方案才可达到要求的44位安全级别。选择密码。如果一个人选择了“所有赌注”一词,那么这些赌注都不会成立。

由于NHS和您都没有谈论这个关键因素,因此除了密码被保护外,不可能对密码的安全性做出任何具体说明。不是随机的,他们很可能是微弱的统一选择。


这是我的理解是,作为一项规则,延长密码长度增加了更多的熵比扩大字母表。


如果d是字母大小,而n是密码长度,则随机选择的统一密码具有log2(d) * n的熵位。因此,将字母表的大小加倍会增加n位的熵;在密码上添加一个额外的符号会增加log2(d)位。因此,这全都取决于dn的具体值;像您提议的那样,有一个经验法则真的没什么意义,因为我们可以直接计算出增量。

评论


这似乎是不必要的书呆子。我知道熵是关于随机性的,但是我问哪个是更好的策略。您是否真的在说“使用随机生成器”没有任何密码策略?

–罗宾·温斯洛(Robin Winslow)
16-10-6在20:44

@RobinWinslow:我的意思是,除非我们在方程式中引入随机性,否则我们实际上没有任何理由相信这些政策中的任何一项实际上都是安全的。当人们选择密码时,在这些选择之间进行辩论时,就会错过树木的森林。

–路易斯·卡西利亚斯(Luis Casillas)
16-10-6在20:53



@RobinWinslow:如果我们以2 ^ 2为起点,那么观察到3 ^ 2> 2 ^ 3是微不足道的。我的意思是,当您有了一些可以从中计算出的具体示例时,就无需进行概括。

–路易斯·卡西利亚斯(Luis Casillas)
16-10-6在20:55

这个答案没有花哨的东西,它的确回答了您的问题。如果您想知道其他内容,我认为您需要在问题中更加清楚。

–安德斯
16-10-6在21:08

@RobinWinslow:但是,您引用的NHS示例显示密码长度(5、6、7、10)明显线性增长,而字母大小却呈指数增长(26、52、95)。因此,根据经验法则,x y在y上的增长快于在x上的增长,可能会使您误入歧途。再说一次,仅仅做数学就足够简单了,我们不需要求助于经验法则。

–路易斯·卡西利亚斯(Luis Casillas)
16-10-6在22:38



#8 楼

问题是,不管喜欢与否,这个问题都不是关于实验室的密码,还是数学上更安全的密码。这是关于让人们在选择密码时“思考”密码。

a。错误,因为它只有字母。
b。是错误的,因为它只有字母
c。是正确的,因为它足够长并且包含“特殊字符”

或者换句话说,仅使用字母的密码是不好的。

现在,可以使用足够长的字母来创建更安全的密码,这是事实,或者足够随机。 “ asefhesesnh”比“ p4ssw0rd”好得多,但是老实说,这是该测试目标受众中大多数人无法理解的一种理解。

相反,让用户理解选择“更长”的密码(包括字母,数字和特殊字符)是“更好的”。

换句话说,当您谈论具有不同技术技能水平的广泛用户并创建自己的密码时,C是正确的。当然,数学可能会失效,但这并不重要。没有提供者,将坐在那里找出密码熵,但是他们可以计算密码中的$数量。

评论


“经过20年的努力,我们已经成功培训了每个人使用难以让人记住但易于计算机猜测的密码”

–罗宾·温斯洛(Robin Winslow)
16-10-10在19:15



“当您(原文如此)谈论具有不同水平的技术技能的广泛用户,并创建自己的密码时,C是正确的” –大多数专家似乎都不同意。你有证据吗

–罗宾·温斯洛(Robin Winslow)
16-10-10在19:17



实际上,其他所有人都说C是一个不好的答案(以及说这个问题通常是不好的,而随机性是最好的解决方案,等等)。我相信,即使与现实世界中的真实人打交道,如果您告诉他们只输入字母的10个字符的密码,他们也会产生比机器告诉您的密码更难猜测的密码一个包含特殊字符的7个字符。 “ lazypsycho”比“ Daphne!”好。

–罗宾·温斯洛(Robin Winslow)
16-10-10在19:24



在现实世界中,要求“ c”将产生一个密码,该密码依次由一个大写字母,四个小写字母,一个数字和一个标点符号组成。此外,数字通常为“ 1”,标点符号为句点,感叹号或问号。总体结果将是复杂度约为26 ^ 5,或大约一千二百万个密码。

–马克
16-10-10在21:05

@Mark显然,解决此问题的方法是我们必须制定一个规则,即数字不得为1,且密码不得位于密码的开头或结尾,这将解决问题,您肯定。

–烧烤
16-10-10在22:06

#9 楼

选项b为每个角色提供52种可能性。

为了使c更好,这7个字符中的每个字符必须具有大于5210/7 =至少283种可能性。

这意味着ASCII或西方ANSI字符集将不足。为了使选项c更好,他们必须允许Unicode字符集(或一些非常神秘的亚洲ANSI代码页)。

这显然是个措辞不佳的问题。有62个数字和字母(大写+小写),因此正确的答案是:

c如果'特殊字符'表示我可以使用Unicode字符或任何其他包含至少221个非字符的字符集-字母数字(即“特殊”)字符,否则为b。

评论


除非有人尝试破解密码,否则在困扰特殊字符之前,它会通过相当扩展的字母数字来运行。

–user83389
16-10-14在17:34