引用不建议使用全球唯一密码


20

我与某人(客户)在系统的用户标识/认证过程上存在分歧。麻烦之处在于,他们希望每个用户都拥有一个全局唯一的密码(即,没有两个用户可以使用相同的密码)。我已经提出了反对这种情况的所有显而易见的论点(这是一个安全漏洞,它使身份验证与身份认证混淆,这毫无意义,等等),但他们坚持认为这种方法没有什么不妥。

我已经进行了各种Google搜索,以寻求关于此的权威(或半权威,甚至只是独立的)观点,但找不到任何(主要是明显的虚假行为,因此似乎不值得警告)据我所知)。有人能指出我这种独立意见吗?

[编辑]
谢谢您的所有回答,但我已经理解了此建议方法/要求的问题,甚至可以向客户解释这些问题,但客户不会接受,因此,我要求提供独立和/或权威的消息来源。

我也找到了Daily WTF文章,但是它遇到了Jon Hopkins指出的问题-这是不言而喻的WTF,似乎不值得解释为什么

是的,密码将被添加和散列。在这种情况下,可能很难确保全局唯一性,但这不能解决我的问题-这仅意味着我要求客户不要让步,这不仅是不明智的建议,而且也很难实行。如果我可以说“我没有在盐和哈希上花钱”,那么我可以说“我没有实现全局唯一的密码”。

任何指针独立和/或权威来源,为什么这是一个糟糕的主意还是感激地接受...
[/编辑]


2
这是一个奇怪的想法,我想您会很幸运地找到很多关于它的文章。在我看来,它是如此明显的缺陷,以至于不能被安全专家认为足够严重。
乔恩·霍普金斯

3
我真的非常希望您不要存储纯文本密码,而是添加盐分和哈希值。如果将它们加盐和散列,将很难确保全局唯一性。如果不是这样,那么我就不在乎您的安全性,因为我已经知道这很糟糕。
David Thornley,2010年

1
尽管存在安全漏洞,但是如果密码无法唯一地哈希,您是否不能拒绝密码?
罗伯特·哈维

编辑后,我再次重申我的答案-这不是“不会”,也不是“不能”(由于需要存储密码的方式),因此,请不要解释为什么这对不是某人的人有害”感兴趣的是,您需要重新启动流程并了解客户为什么首先觉得这是必要的。
Murph 2010年

2
有趣的是,他们对您的信任足以设计他们的系统,但不足以为他们提供有关系统设计的建议。
加里·罗

Answers:


24

每当客户端尝试创建一个已经存在的密码时,它都会收到一些反馈用户已经使用该密码的,通常是违反隐私协议的。

紧接着,用户名更容易猜测(如果有一个论坛,您可以在那里找到很多用户名),并且在暗示用户破解网站的方式。

互联网上应该有一些页面描述隐私协议违规部分,这只是常识:他们基本上是给某人一个密钥和一个家庭住址列表。

编辑:接近权威,但在您解释了WTF的含义后可能会有所帮助:http : //thedailywtf.com/Articles/Really_Unique_Passwords.aspx


+1此外,大多数身份验证方案都可以让您尝试任意数量的用户名,而只给您3次尝试输入密码的机会。
Michael K 2010年

1
WTF 比其他任何东西都更多地将密码用作主/外键。也许也可以使用纯文本密码。
Murph

2
+1:永远不要让任何其他用户使用相同的密码。谈论一个巨大的安全漏洞...您可以通过反复更改密码来进行暴力密码攻击。那会在许多监控系统的监视之下飞起来。
Satanicpuppy

实际上,在某些情况下,如果需要选择密码以使某些特定部分(例如第一个字母)是唯一的,则只有一个用于登录凭据的字段是合理的。例如,如果一个用户有26个或更少的用户,则可以说每个用户必须选择一个以不同字母开头的密码。这样的系统等效于具有26个不同的单字符用户名,但是可以避免在名称和密码之间打“ tab”或“ enter”。
超级猫

10

最佳实践阻碍了满足要求:

您无法执行此操作,因为您不知道密码是什么,因此您无法将它们进行比较,因为您存储的只是密码的哈希值和盐(可以在哈希密码旁边存储)。这是最佳做法,这就是您要做的。做完了

另一个编辑:Doh!后见之明很容易-您仍然可以检查其唯一性,因为(当然)您有盐分...现在就射击我吧...当然,您不必向客户提及此细节。


FWIW,它并不像哑巴,你认为这是-其目的是为了防止用户同意并共享相同的密码,这人的团体会做,相信这会让他们的生活更轻松。

如果应用有定期更改密码的要求以及防止人们再次使用当前或以前使用的密码(完全有史以来)和合理的“强度”要求(或至少预先加载的“受阻止”字典)的约束密码),您将很快到达某个地步,无论如何,这种可能性都不对黑客有利。


好的,我的答案最初是从:

给出了一些条件,这在概念上几乎没有什么错-大多数是我很胖...

显然,不适当的幽默-就是说,如果您没有全局唯一的约束,那么您将创造不同的机会,也许危险性更低-我不知道。


4
+1可以为某些人为什么会要求提供唯一密码提供一些见解
Michael Haren 2010年

3
但这是一个安全漏洞-如果您是用户,请输入一个新密码,然后被告知该密码无效,您现在知道至少一个用户拥有该密码。结合其他因素(例如,单词所使用的语言或某人可能需要使用的上下文/含义),您发现数量非常有限的选项很容易受到蛮力攻击-甚至可能是手册一。
乔恩·霍普金斯

嗯,我不是说这不是一个潜在的问题,我说这并不完全像问题中所建议的那样愚蠢,因为它可以防止多个用户使用相同的密码(这确实会发生),而且如果这些密码首先是弱密码。完全允许用户访问系统是安全漏洞...但是我们必须忍受一个安全漏洞,因此之后的所有事情都是一个折衷方案。
Murph

+1指出如果正确处理密码,您将无法执行此操作。
David Thornley,2010年

我们能否也请注意,我的回答是您无法测试唯一性,因为您仍然应该对密码进行哈希处理?所以,如果我对建议我想知道为什么表示反对,
Murph

10

强制执行不可重复的密码会泄漏信息

怎么样?由于破解者每次尝试使用简单密码创建新用户时,系统都会以“不,不能拥有该密码”作为响应,因此破解者会说“ Goody,那是列表中的一个”。

泄漏有关您的安全性的信息通常是一件坏事。好的,第三方知道算法很好(需要同行评审),但是允许专用的破解者来推断密钥-不好,真的,真的不好。

描述好的和坏的密码管理策略的资源

阅读安全专家Bruce Schneier 撰写的本文,以深入了解密码强度。

阅读安全研究人员Philip Inglesant和M. Angela Sasse撰写的本PDF,以深入讨论“不可用密码策略的真实成本”。引用结论:

反对“如果只有[用户]理解危险,他们会以不同的方式行事” [12]的世界观,我们认为“如果只有安全管理人员理解用户和组织的真实成本,他们将以不同的方式制定策略”。

错误的安全感

因此,客户端会提示:“如果没有人使用相同的密码,那么如果一个人被破解,则只会影响一个人。” 不会。每个人都受到影响,因为破解者证明了您的密码系统从根本上来说是有缺陷的:它很容易受到在线系统中字典攻击的攻击。首先,破解者不可能对密码进行多次猜测。

对于在线访问,六个字符就足够了

脱题,但我认为有兴趣的读者值得一提。在安全性方面,在线系统是具有主动安全管理过程的系统,该过程监视和控制对数据的访问。离线系统是没有的系统(例如,在已被盗的硬盘上具有加密数据)。

如果您具有在线密码系统,则不需要高安全性密码。密码只需要足够复杂即可防止20次尝试之内的猜测(因此,简单的“配偶/子女/宠物名称”攻击将失败)。考虑以下算法:

  1. 饼干使用“根加后缀”方法猜测密码,以最大程度地减少猜测
  2. 凭据被拒绝,N * 10秒内无法再尝试登录
  3. 如果N> 20锁定帐户并通知管理员
  4. N = N +1
  5. 通知用户下次登录可以在时间T发生(如上计算)
  6. 转到步骤1

对于一个简单的6个字符的密码,上述算法将防止字典攻击,同时甚至允许移动键盘上最笨拙的用户最终通过。没有什么可以阻止所谓的“橡胶软管攻击”,在这种情况下,您用橡胶软管击败了密码持有人,直到他们告诉您。

对于脱机系统,当加密数据位于闪存驱动器上,并且解密者可以随意尝试对它进行任何处理时,那么您需要可以找到的最具弹性的密钥。但是那个问题已经解决了


1
您所说的“在线”访问是什么意思?还有另一种吗?
罗伯特·哈维

有关安全性术语的差异,请参见最后一句话。
加里·罗

4

如果您建议他们不要采取此行动,并向他们提供理由,那么我会相信他们的话,并按照他们的建议实施系统。可能并不令人满意,但是您已经做好了工作,而且他们正在承担费用,因此他们应该得到想要的东西。

有一个例外。如果系统破坏的负面后果很严重(例如,如果非常私人信息很可能因安全破坏而受到损害),那么您实际上可能负有不实施他们想要的系统的专业责任。如果您拒绝,不要指望它会引起您的欢迎,但是不要让它成为您的指南。


4

我只是想加强默弗的答案。是的,这是一个安全问题,在实施过程中存在信息泄露漏洞。但是从客户的角度来看,他似乎并不太担心。

您应该指出的是,实际上实施“唯一密码”检查在物理上是不可行的。如果您要对密码加盐和散列,而不是将它们存储为明文,那么实际执行唯一性检查的操作是O(n)(昂贵)操作。

您是否可以想象如果您有10,000个用户,并且每次有人注册或更改密码时需要30秒才能检查每个用户的密码以检查唯一性?

我认为这是您需要对客户做出的回应。


是的 这将是一个很好的观点。
PeterAllenWebb 2010年


0

他可能希望使用RSA两因素加密。如果您使用的是Active Directory或ASP.NET成员身份,这是理所当然的。

替代文字

硬件或软件令牌会生成与时间相关的唯一密码,后跟PIN码。这共同为每个用户提供了唯一的密码。


有两个因素对防止中间人攻击没有用。
BryanH

是的,但是那句话似乎与眼前的问题无关。
goodguys_activate

但是现在我知道你的第二个因素了!!!哦,等等...请更新您的图片
Michael Haren

2
嗯,我认为制作动画GIF很酷
goodguys_activate 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.