为什么我不能与其他人共享一次性代码?

信息安全 多因素 谷歌
2021-08-19 00:49:16

我注意到在某些情况下,当我从 Google 获得验证码时,它可能会说以下内容:

“您不应该与其他任何人共享此代码,谷歌的任何人都不会要求此代码。”

好的,这似乎是出于安全原因,但代码只是一个使用代码,所以如果你在使用后给某人它,那么它将不起作用。(可能不适用于在使用前向某人提供代码,但是即使有人知道您的用户名和密码并且能够获得未使用的代码并且该人要登录,也应该为新会话生成一个新代码。对吗?)

我是否遗漏了什么,有什么理由不分享一次性代码,尤其是关于一些随机陌生人打电话并要求它的部分吗?此外,在将来有人有机会打电话给您并要求它之前,它应该已经过期很久了。

4个回答

它们并不精确,因为它们不必这样做,而且精确的语言可能会使一些用户感到困惑。

例如,他们可以说:“您不应该与其他任何人共享不到一小时的未使用代码,而且 Google 的任何人都不会要求提供此代码。”

你我都会知道他们的意思。不过,我的岳父和爷爷不知道为什么。我的岳父是一个特定的例子,他会看到有时他可以共享代码,并且有人从他的社会保障支票中骗取他也可以访问他的电子邮件。(是的,他的大部分收件箱都是关于添加到凝结尾迹中的精神控制化学物质以及太阳耀斑如何引起地震的,但它也可能让某人访问他的银行账户。)

正如评论中所指出的那样,还有其他有条件危险的情况示例,但人们只是不包括例外情况。例如:“永远不要低头看枪管[除非你已经清理了枪膛]”或“永远不要把你的手指伸进电灯插座[除非你已经关闭了那个插座的电源]”。

由于已使用或过期的令牌对每个人都无用,因此保留、共享、保护、删除它或在一般安全建议中添加例外是没有意义的。

我可以从个人经验中看出,当您让他们知道存在边缘情况和安全性细微差别时,有些用户会做愚蠢的事情。知道这一点,如果我要给我的用户写这样的警告,我会尽可能地使我的陈述广泛而笼统。

这是为了防止针对您的社会工程攻击。想象一下,例如,您在阴暗的公共计算机上登录了双因素 gmail 帐户,键盘记录器记录了您的电子邮件地址和密码(但在您登录时无法使用它),但您启用了双因素身份验证并记得在会话结束时退出。您的帐户仍然是安全的(尽管同样,最好不要使用粗略的公共计算机登录您的系统;因为即使使用双因素身份验证,在您登录时,老练的人仍然可能在窗口中对您的帐户进行恶意操作) .

攻击者现在有了您的电子邮件地址和密码。要访问您的帐户(例如使用您的电子邮件地址重置其他系统的密码,例如在线订购商品、访问银行帐户、发送垃圾邮件或其他破坏),他们需要通过两因素身份验证系统。所以他们联系你,假装是谷歌,并试图欺骗你用实际的验证码回复他们,这样他们就可以完全登录你的帐户。也许他们会在电话上给您打电话(看起来像是与 Google Inc 相关的欺骗号码)并说“我们看到您设置了 2 因素身份验证,在我们继续之前,我需要您告诉我们刚刚发给您的代码”,等等。

过期或已使用的令牌无关紧要,但它们只是想让您养成不将此信息泄露给第三方的习惯。

可能不适用于在使用前向某人提供代码,但是即使有人知道您的用户名和密码并且能够获得未使用的代码,并且应该为新会话生成登录新代码的人。对?

错误的。我假设您正在谈论例如由 Google Authenticator 应用程序生成的 TOTP 代码。TOTP 通过在客户端和服务器(您的手机和 Google 的服务器)上存储共享密钥来工作。为了进行身份验证,客户端和服务器都使用密钥作为HMAC密钥来散列当前时间,然后将其截断为n数字值(通常为 6 位,有时更长)。

TOTP 不以任何方式与会话绑定,它完全基于共享密钥和当前时间。

我是否遗漏了什么,有什么理由不分享一次性代码,尤其是关于一些随机陌生人打电话并要求它的部分吗?此外,在将来有人有机会打电话给您并要求它之前,它应该早就过期了。

我想他们正试图防止人们陷入有人要求您将当前代码发送给他们的骗局在使用代码之后,或者经过足够长的时间使其不再有效之后,代码就没有用了。

多个旧代码可能包含足够的信息以允许对共享密钥进行暴力破解,但这至少需要对 SHA-1 进行原像攻击,这仍然是不可行的(即代码将允许他们判断是否有任何特定的猜测共享的秘密是正确的,但他们可能会花费数生时间猜测,但永远找不到)。

这适用于安全社区中的许多建议。

区分“好做法”和“坏做法”的界线应该是一致的,但往往不一致。要么你可以打破它,它是坏的,或者你不能,它是好的,对吧?

不幸的是,这不是它的工作方式。特别是进攻方和防守方在沙地上划线的方式不同。尽管在实践中同样的问题是问题的核心,但它忽略了双方都不想处理的“好”和“坏”之间的很多灰色区域,这导致了很多尴尬的问题,比如我的最喜欢的“MD5 有多糟糕?”。

不幸的是,没有简单的方法可以解决这个问题。密码学中有很多灰色区域,这与人们不能做的事情有关,这几乎是不可能证明或避免的。即使完全没有歧义,需要多长时间,以及使用什么工具包,才能使某物在安全之前成为蛮力?它在普通台式机上的清晰分钟并不好,而在人类当前所有计算机上的数十亿年对于大多数事情来说可能已经足够了,但介于两者之间的是界限。没有答案。唯一安全的方法是,如果防守方总是坚持比进攻方接受的更严格的条件,那就是易碎

带回家的是:

您不应该期望防御建议与可行的攻击完全一致。这不是他们的工作,而且它总是一条复杂的模糊线,几乎不可能正确,至少可以说错误可能是有问题的。

因此,谨慎行事。特别是如果这没有什么害处。