用户名应该保密吗?

信息安全 验证 身份
2021-09-01 17:38:30

帮我解决同事之间的讨论并指导未来的设计:

即使在高影响场景中:例如保护支付应用程序或政府网关,但在互联网可访问的应用程序中

是否值得实施以下任何(或其他)措施来保护用户名:

  • 需要一个复杂的系统生成用户名,如英国政府网关汇丰网上银行用户忘记这一点、需要写下来、额外的呼叫中心流量、用户必须自助服务用户名提醒与使用公共用户名(如电子邮件地址或手机号码)的风险之间的权衡是否值得?

  • 提供通用消息:“您的用户名或密码不正确”,而不是更加用户友好的“您的用户名未被识别”和“您的密码不正确”

  • 使用以下类型的登录序列,其中使用站点密钥或用户选择个人密码来帮助识别网络钓鱼站点:

    • 输入用户名和简单的秘密值(例如邮政编码)
    • 如果无效,则会提供错误:用户名或值不正确
    • 如果这些有效,则显示用户个人站点密钥图像并要求输入密码
    • 如果密码无效,错误提示密码不正确
    • 如果授予有效访问权限

与 Quora.com 上更友好的方式相反,您可以在正确的用户名输入上显示您的图片。这仅在低风险问答网站上可接受吗?

我的同事主张对用户名保密和上述类型措施:

  1. 大量用户名枚举允许您尝试对站点进行字典和暴力破解尝试
  2. 它使您能够通过锁定启用帐户锁定的所有帐户来执行站点
  3. 用户喜欢跨站点使用相同的用户名和密码,许多站点使用电子邮件地址和手机号码作为其站点。如果用户在站点之间共享凭据,则凭据可能会从其他站点被窃取或钓鱼,然后用于访问您的站点
  4. 众所周知的事实,例如移动和电子邮件,不计入身份验证强度。如果用户名是一个已知事实,为了保持相同的安全级别,密码必须显着增强以弥补统计差异,例如如果用户名和密码都至少有 6 个字符,那么假设 52 个可能的字符我们有 52^12 个组合. 但是,如果用户名是一个已知事实,那么它就变成了 52^6 个组合;您必须将密码增加到最少 12 个字符才能获得相同级别的保护 - 不这样做会增加帐户接管风险。

我为每个反击:

  1. 您对此的真正控制是密码长度、复杂性和帐户锁定策略
  2. 您可以通过在一段时间后(例如 5 - 30 分钟)后自动解锁、具有大规模解锁功能、在多次错误尝试后在一段时间内进行指数回退或 IP 禁止、选择性反自动化来缓解这种情况在多次尝试失败后显示的控件(例如验证码、Roboo 脚本)
  3. 用户教育、第二个身份验证因素、自适应身份验证(例如,基于设备 ID、位置等的升级或分级身份验证)将是更好的防御措施
  4. 我将用户名视为身份,将密码视为身份验证。如果您想要更强大的身份验证,请延长密码或需要 2 个密码 - 不理会身份验证

很高兴学习和改变我的立场。提前致谢。

4个回答

传统智慧重新:蛮力攻击或枚举

有几种方法可以查看这一点。不过,在尝试真正考虑它之前,应该先从http://thedailywtf.com/Articles/The-Phantom-Password.aspx开始。

密码被泄露的程度不同。每个阅读我帖子的人都知道我在 Slashdot 的用户名。办公室中的每个人都可以查看我在工作中的用户名,并且任何知道我的电子邮件地址的人都可以同样识别。没有人应该知道我的银行帐号(这是我的网上银行的用户名)。

在每种情况下,明确指出用户名无效或密码无效的好处是有限的。现在,在这种情况下:如果您在 Slashdot 上,您知道该帐户将永远存在,因此无论如何您都可以弄清楚。如果你攻击我的工作,那可以暴露我是否还在工作。针对我的银行或信用卡账户,这是枚举账户的唯一方法。它提供了一个明确的目标。

我认为,由于承认一个或另一个对公共系统的价值有限,并且可能泄漏有关私人系统的信息,因此密码身份验证应始终采用“用户名和密码匹配吗?”的形式。这是一个 T/F 问题,中间没有步骤。

新时代智慧重新:网络钓鱼

用户访问的网站可能是错误的网站。他们在不注意 URL 的情况下输入他们的登录凭据(或者他们可能真的被欺骗了),他们的帐户被盗用了。银行通过使身份验证成为一个多步骤过程来解决这个问题。对于这个想法,最初的提问者提到如果用户名正确则显示一系列照片。我反驳:总是让身份验证过程完成所有步骤。jonjacob(jinkleheimerschmidt) 可能不是有效的登录名,但您仍应显示一系列照片并要求输入密码。这使您可以扼杀信息泄露的风险,并仍然试图防止网络钓鱼损害用户帐户。

风险与回报

我相信,上面关于用户名和密码的传统观点对大多数人来说是简单且可接受的。网络钓鱼是一个新变量,处理它将改变某些系统的情况。您的问题有一些答案可能不会在这里讨论,甚至还没有想到。但是,我仍然相信,您应该能够阻止某人在任何情况下枚举帐户。

如果用户有复杂的密码 ,或者您使用额外的安全性(如令牌)将攻击的复杂性强制到“合理”级别,则应涵盖加密方面。但是,需要考虑隐私方面:有些人就是不喜欢任何人了解他们的任何事情请记住,您不能迎合所有少数群体,并根据业务和社区要求进行设计。

强制性引用:“安全总是一种权衡。

将用户名保密的建议似乎很荒谬。

您不可避免地需要某种方式来识别用户,而这种方式不会危及帐户的安全性。如果您的电子邮件地址是身份验证令牌,电子邮件将如何工作?如果我在使用某些软件时遇到问题,我该如何告诉帮助台这与哪个帐户相关?

它使您能够通过锁定启用帐户锁定的所有帐户来执行站点

它还允许您访问没有单独密码的系统 - 显示用户名不是问题,而是锁定规则的实施。

用户喜欢使用相同的用户名和密码

好吧,我承认这一点。但这并不能证明该假设的合理性。用户是愚蠢的。克服它。如果您希望他们认为您的网站是安全的,那么有大量研究表明,放一张挂锁的大图比使用 SSL 效果更好。如果您尝试对通过部分实现的辅助身份验证令牌进行网络钓鱼(如“请从您的 pin 中选择第 3 位和第 8 位数字”),只需提供一个文本输入框并要求他们提供整个内容。

众所周知的事实,例如移动和电子邮件,不计入身份验证强度

? 但是手机号码和电子邮件地址用户名!!!!!!!!!

密码不是高安全性环境的完整解决方案。但是尝试将用户名用作身份验证器无助于提高安全性,并且会损害其他内容。

我曾经做过混合安全性。

例如,对于用户邮件帐户:

  • ID:姓氏.name@mail.com
  • 密码:1z"1dgG"@"é~#。

对于内网的用户账号,是这样的:

  • ID:1501823098(通常我使用他们身份证上的ID,或者如果我不能这样做,我会生成该ID。)
  • 密码:#\ed"1:!)3qs

让人们知道 Intranet(或 Internet)上的用户帐户的问题是任何黑客都会尝试暴力登录。即使密码很复杂,字典攻击和暴力破解也会对你的连接产生影响,带宽下降等等。

同样只有一个关于整个 Intranet/Internet 应用程序的用户名帐户和密码的策略,就像只用面包头盔对抗龙卷风一样。你可以活下来,但这就像自杀!

即使用户因为必须学习 3 个不同的帐户 ID 和 3 个不同的密码而抱怨,但您的工作会容易得多,因为隔离 1 个被黑客入侵的帐户会很简单,并且用户会在几周后适应遵守该政策,您将拥有一个保护良好的据点。

好吧,至少那是我在工作中所做的。即使是现在,有时用户也会忘记他们的 ID 或密码,或者把它们写下来,但这是他们的问题,我尽我的职责确保了良好的安全策略。(如果他们丢失了他们,您可以给他们他们的 ID 或重置他们的密码。)

希望这会帮助你。

编辑 :

您对此的真正控制是密码长度、复杂性和帐户锁定策略

具有良好的密码长度和复杂性有一个很大的缺陷,字典。我使用(为我自己)具有高复杂性和 26 个字符长度的密码。即使字典没有立即找到它,它也会消耗大量的网络进程。并且拥有帐户锁定策略是一个好主意,但是当帐户被锁定时,蛮力脚本将尝试另一个帐户,并像这样循环。即使至少帐户是安全的,您的网络也会损失大量带宽,最坏的情况是您的所有帐户都会被破解,甚至可能会出现全球网络中断。

您可以通过在一段时间后(例如 5 - 30 分钟)后自动解锁、具有大规模解锁功能、在多次错误尝试后在一段时间内进行指数回退或 IP 禁止、选择性反自动化来缓解这种情况在多次尝试失败后显示的控件(例如验证码、Roboo 脚本)

在那里,缺陷是用户。好吧,用户始终是 IT 中的缺陷,但试着想象一个用户,在 3 周的假期后(发生在我的 N+2 工作中......真实故事)忘记了他的密码,他会尝试,阻止他的账号,等等,再试,再封,2试后他会像入侵欧洲的蒙古骑手一样冲向你!您将不得不为他禁用此规则,但谣言会传播您例外,其他用户会希望您为他们做同样的事情。最坏的情况是,用户不会来找你,而是使用他的一位同事的帐户(记下 ID 和密码,并将它们珍贵地保存在他的办公桌吸墨纸下)。

用户教育、第二个身份验证因素、自适应身份验证(例如,基于设备 ID、位置等的升级或分级身份验证)将是更好的防御措施

好吧,在这一点上我完全同意你的看法。我定期对用户进行有关安全策略的培训,以确保他们不会忘记风险,并培训新人。但这通常应该在每家公司都有。

我将用户名、身份和密码视为身份验证。如果您想要更强的身份验证,请延长密码或需要 2 个密码。留下身份证明

标识纯粹是用户/管理员友好的。如果你想加强安全性,把密码加长或者要求2个密码只会阻碍黑客。加强您的政策的真正方法(至少对我而言)是升级您的加密(哈希 md5、RSA 等......)。我的 N+2 曾经认为它没用,但是在我们的安全服务器发生严重泄漏之后,他不再那样想了(泄漏是他的错,请参阅第二个答案以了解...)。我认为有了安全性,你永远不会小心。

之后只是观点。有人可能会说你的同事是对的,其他人可能会说你是对的,对我来说我认为双方都是对的,你和你的同事需要找到一个权衡来合作。

希望这回答了你的问题。