这是一个好的做法,还是已经过时了?我问是因为我从来没有设法记住一个安全问题,因此我总是写下答案。我认为它们没用,长密码或 2FA 是一种更好的做法。
安全问题有意义吗?
安全问题的内在矛盾
对于一个不好的安全问题,它必须:
- 有一个用户永远不会忘记的明确的答案...
- ...但对其他人来说是秘密且难以猜测的。
问题是你在#1 上的得分越高,你在#2 上的得分就越低。所以你必须在这里走一条紧绳。如果您倾向于#1,用户将忘记答案并破坏他们的帐户。如果你倾向于#2,任何人都可以猜到答案,这个问题基本上变得毫无用处。
这里可能没有甜蜜点。那么我们应该抛弃整个概念吗?
这要看情况。
何时以及如何使用它们
安全问题可以以多种方式使用。
让我们从一种非常糟糕的使用方式开始——作为帐户恢复和密码重置的唯一保护。问题的答案基本上变成了第二个密码,它比第一个更容易破解和猜测。这简直太糟糕了。如果你不相信我,问问莎拉佩林。
这种使用模式可能是给安全问题带来坏名声的原因。但实际上他们还有其他合法的用例吗?或许。这个怎么样:
- 作为登录或敏感操作的可怜人 2FA。
- 作为发送密码重置电子邮件之前的检查。
在这两种情况下,坚定的攻击者都可以找到正确的答案。但并非所有攻击者都下定决心。一个简单的安全问题可能会使大数据泄露后的大规模自动化攻击变得不切实际。如果我有来自站点 A 的一百万个密码,如果 B 也需要安全问题,我不能只在站点 B 上测试它们。或者,如果我违反了电子邮件提供商,我无法从各种网站发送一百万个密码重置链接,因为我不知道安全问题的答案。
这里的背面是上面讨论的矛盾 - 安全问题的答案越不明显,用户就越有可能错误地砖他们的帐户。这里有更好的解决方案,例如真正的 2FA 或帐户恢复代码。但是实施 2FA 可能很困难,让您的用户实际打印和存储那些讨厌的恢复代码也是如此。所以有时,出于务实的原因,安全问题可能是一个很好的妥协。
这是我能为他们做的最好的例子。我不确定这是否是一个足够好的案例来实际使用它们。
TL;博士
- 很难构建好的安全问题,因为答案越难猜,就越难记住。
- 尽管如此,如果您没有资源来实施更好的解决方案(例如 2FA),安全问题可能是对其他防止愚蠢自动攻击的努力的有用补充。
正如您从同一主题的其他答案中看到的(在此处搜索“安全问题”会返回几个相关问题),传统的安全问题,例如“您母亲的娘家姓是什么?” 现在被认为是非常糟糕的做法。
有些网站会询问您的电话号码或备用电子邮件地址,而不是传统的安全问题。他们还可能会定期提醒您检查您的个人资料信息是否是最新的,以确保您仍然使用与您的帐户相关联的电子邮件等。检查您的身份的另一种方法可能是询问您有关您如何拥有的问题一直在使用该服务,该服务存储了哪些关于您的私人数据等。我不确定 Google 可以实际询问您的所有内容,但我很确定他们可以询问您创建帐户的大致日期,或您通常登录的城市的名称。
我仍然认为安全问题有时可以作为附加信息有用,只要您让用户编写他们自己的问题,也许还有一个清晰而巨大的警告,说他们不能选择其他任何人都可以轻松回答的问题。但无论如何,这些安全问题不应该是绕过密码登录的简单方法。它们仅应用作帮助证明用户身份的特殊方式,并且该过程不应自动化(例如,非自动化过程可能涉及电话呼叫)。
安全问题是一个糟糕的主意。
- 没有像密码那样的“最佳实践”:密码应该难以猜测,足够长等。安全问题是否存在?按照设计,它们与安全相反:易于猜测、使用字典攻击或姓氏列表等可猜测。
- 您可能不想让知道您的安全问题答案的人访问您的帐户(我叔叔知道我母亲的娘家姓,但我不希望他们访问我的帐户)。
- 任何知道答案的人都可能成为目标。要知道你的第一只宠物的名字或你母亲的娘家姓,攻击者不需要欺骗你来弄清楚,他们可以从你的祖母(或其他一群人)那里欺骗它。
- 有共同的答案。“最喜欢的食物”是我猜对一些我完全不知道他们最喜欢的食物的人的问题。宠物名字和大多数其他问题都符合一个很好的概率曲线。
- 您知道您要查找的数据格式:母亲的娘家姓不会在中间有感叹号,也不会写成 l33tsp3ak 以使其更难猜。
- 作为用户,我曾经需要我的安全问题并且实际上忘记了我的答案,因为已经有几年了。我最喜欢的食物变了,我不知道十年前我放了什么。另一方面,我的密码我通常记得,因为我每次登录时都会使用它。如果我有一段时间没有登录,我不知道密码,但绝对不是安全问题。
所以他们不仅没有安全感,他们也没有达到他们的目标。不要使用秘密问题,几乎可以说是其他任何问题都更好。
总比没有第二因素要好,但当前的 2FA 标准建议
- 你知道的东西
- 你有的东西
许多银行使用安全问题或图像识别,因为它被认为可以提供反网络钓鱼保护,一旦您习惯于查看您的图像/回答您的安全问题,您就会注意到它的缺失。
这当然可以通过让网络钓鱼站点转发您输入的用户名、检索问题/图像并将其显示给您来解决,但这超出了大多数网络钓鱼活动的范围。
tl;dr 安全问题如果用作client-verification不好,但它们可以用作server-verification,因此您可以合理地确定您登录的站点是实际站点。
如果网站让您每次都选择安全问题,这不适用,但这不是我见过的使用 SQ 的任何银行所做的。