我曾通过短信将一次性密码发送到我的手机。这些一次性密码包括用于 2FA 的密码和偶尔重置的密码。
我应该在使用一次性密码后删除这些短信吗?
使用过的一次性密码不能重复使用,但我想知道使用过的一次性密码的历史是否存在安全漏洞。假设站点的身份验证是否使用不安全的算法生成一次性密码。如果有足够的一次性密码历史记录,设法检索存储在我手机上的 SMS 的人可以推导出序列中的下一个一次性密码。
超出此问题的范围:假设 SMS 消息未被截获。
我曾通过短信将一次性密码发送到我的手机。这些一次性密码包括用于 2FA 的密码和偶尔重置的密码。
我应该在使用一次性密码后删除这些短信吗?
使用过的一次性密码不能重复使用,但我想知道使用过的一次性密码的历史是否存在安全漏洞。假设站点的身份验证是否使用不安全的算法生成一次性密码。如果有足够的一次性密码历史记录,设法检索存储在我手机上的 SMS 的人可以推导出序列中的下一个一次性密码。
超出此问题的范围:假设 SMS 消息未被截获。
像往常一样,让我们从定义威胁模型开始:您担心有人抓住您的手机并查看您的 SMS 历史记录。但您不必担心短信被截获。这有点奇怪的安全模型,因为拦截短信真的很容易,而窃取你的手机并通过强密码相对困难。但是没问题。
假设站点的身份验证是否使用不安全的算法生成一次性密码。如果有足够的一次性密码历史记录,设法检索存储在我手机上的 SMS 的人可以推导出序列中的下一个一次性密码。
当然,我不能保证互联网上的每个站点都正确执行 OTP,但这是一个非常严格定义的标准。请参阅wikipedia/Time-based_One-time_Password(以及更通用的wikipedia/HOTP)。由于这是基于强大的加密哈希函数,因此攻击者不存在从过去的值中获取未来值的风险。或者,如果他们可以,那么散列函数将被认为是损坏的,他们会放弃它以支持更好的函数。
网站也可能没有正确执行一次性密码的“一次性”部分,但我的意思是,这是实施 OTP 系统的一个非常基本的部分。
顾名思义,OTP 是一次性使用的,主要是有时间限制的(2 到 3 分钟)。因此,一旦您使用了 OTP(通过 SMS 获得)或时间限制已过,OTP 就不再有效。
因此,有人窃取您的手机并使用 OTP 的可能性非常低。并且攻击者应该知道您访问的站点是什么以使用此 OTP。
但是 OTP 可以在传送到您的手机之前被攻击者捕获。有一些先进的解决方案,如 HOTP(基于 HMAC 的一次性密码算法)来克服这种对 OTP 传输的中间人攻击。
基于 HMAC 的一次性密码算法:
这个算法依赖于两个基本的东西:一个共享的秘密和一个移动因子(又名计数器)。作为算法的一部分,将使用共享密钥生成移动因子的 HmacSHA1 哈希(准确地说,它是基于哈希的消息认证代码)。该算法是基于事件的,这意味着每当生成新的 OTP 时,移动因子都会增加,因此随后生成的密码每次都应该不同。
资料来源:https ://blogs.forgerock.org/petermajor/2014/02/one-time-passwords-hotp-and-totp/
希望这能澄清您的担忧。
如果发送一次性密码的站点使用了一种好的算法(例如HOTP)并正确实施,那么删除旧消息没有任何价值。另一方面,如果网站使用了一些愚蠢的自制软件或者只是未能正确实现,那么删除消息可能会很有用。
那你怎么知道是什么情况呢?你没有。您必须考虑您试图保护的信息的价值,以及您对网站运营者的信任程度。就个人而言,我从来没有为删除这些消息而烦恼,我也不认为我会推荐“普通”用户这样做。
还有一方面:如果有人能够从您的手机中读取旧消息,他们是否也能够读取新消息?如果是这样,删除旧的也无济于事,因为攻击者可以触发一个新的并读取它(假设她知道第一个因素)。