选择TOTP应对多因素认证应用泛滥问题

本文探讨了如何通过采用基于时间的一次性密码(TOTP)标准来解决多因素认证应用过多的问题,详细介绍了TOTP的工作原理、实施优势以及如何选择适合的TOTP应用,帮助用户简化认证管理并提升安全性。

选择TOTP应对多因素认证应用泛滥问题

你的手机上是否装了一堆MFA应用,让你感觉像穿了大衣无法放下手臂?

或者这些MFA应用就像一窝英国斗牛犬幼崽——它们跟着你转,要求你的关注,并给你安全感的拥抱。

无论如何,这就像是需要照顾的大量冬季装备,需要喂养的众多嘴巴。考虑到所有这些需要跟踪的应用,请思考以下问题:

  • 如果手机丢失或损坏,你会失去哪些访问权限?
  • 所有MFA应用都支持备份/导出功能吗?
  • 对于已知支持备份的应用,你最近一个月内做过备份吗?
  • 在新手机上恢复这些MFA应用的流程是怎样的?
  • 你是否测试过这个流程以确保没有意外?

那么迁移到不同的MFA应用呢?假设你可以导出数据,将这些数据转换为下一个MFA应用可解析的格式有多困难?

我首先承认,我曾多次被服务提供商通过社会工程学手段诱导安装他们的MFA应用。想想你注册新服务提供商MFA的时候,流程通常以这样的话开始:“你的组织要求你启用MFA。请先安装我们的MFA应用。”

如果我手机上已经有三个MFA应用了呢?它们都不够好吗?如果你幸运的话,服务提供商至少会建议几个可用的替代MFA应用。但即使在注册后,每次登录时你很可能都会被温和地提示安装服务提供商的应用,比如"现在无法访问我们的MFA应用吗?“这真是自以为是。

虽然每个MFA应用都有自己"比其他供应商更安全的特殊MFA实现方式”,但有一个基于标准的MFA方法你可能很熟悉,几乎每个MFA应用都支持。这种MFA类型要求你在30秒内输入6位代码,它有以下几个名称:

  • Google Authenticator
  • 基于时间的一次性密码(TOTP)

我曾经认为看到"Google Authenticator"列为支持的MFA应用时,必须安装Google Authenticator应用。但现在我将"Google Authenticator"理解为"支持TOTP的应用"。来自Google Authenticator Github Wiki的信息:

支持TOTP的服务提供商的好处是,有很多应用都支持TOTP,因为它是标准化的[1]且相当简单。以下是TOTP认证通常[2]的工作方式概述:

  • 用户和服务提供商有一个共享密钥
  • 用户的TOTP应用计算自Unix纪元以来的时间步数
  • 时间步数与共享密钥结合,通过HMAC-SHA-1计算出一个6位代码
  • 用户在认证时向服务提供商提供6位代码
  • 服务提供商收到代码后,使用其共享密钥副本进行相同的计算
  • 如果代码匹配,认证成功

很简单吧?事实上,TOTP如此简单,你可以用20行Python代码实现,或者如果你不喜欢图形用户界面,几乎完全可以用bash实现。

这意味着当你选择TOTP时,在使用哪些MFA应用和安装多少个应用方面有更大的灵活性。例如:

  • 你可以选择使用商业支持的闭源应用或可以审计的开源应用
  • 你可以对MFA密钥进行离线本地备份,或使用提供可信在线备份功能的解决方案
  • 你可以找到允许注册多个设备的TOTP应用
  • 如果你喜欢复古计算,可以将旧的Commodore 64变成独立的TOTP生成器

如何判断服务提供商是否支持TOTP

在识别服务提供商是否支持TOTP时,你可能不会得到明确的声明。以下是MFA注册过程中可能看到的提示:

  • 服务提供商会说"从你的MFA应用中输入代码",这表明你可能已经有MFA应用。由于TOTP是最常见的MFA类型,很可能支持TOTP
  • 寻找标有"Google Authenticator"的选项,通常旁边会有Google Authenticator徽标

如果这些提示都没有出现,那么TOTP可能作为备用选项隐藏。也就是说,你可能需要拒绝服务提供商的最初提议,有时会通过"尝试其他方法"来指示。

如何选择TOTP应用

显然,主要考虑因素是应用是否支持TOTP。与MFA注册一样,应用商店中的描述通常不会直接说"此应用支持TOTP"。大多数MFA应用确实支持TOTP,但要验证,可以搜索"XYZ MFA应用是否支持TOTP",这应该会产生技术支持页面、博客或(最好)源代码。

在缩小选择范围时,还需要考虑以下几个问题:

MFA代码备份:云备份是否可以接受,还是需要本地备份? 如果云备份可以接受,你的备份是否需要端到端加密(E2EE)?并非所有MFA应用都提供E2EE备份。

设备注册数量:能否只注册一个设备?如果你想要备用设备,请留意允许将MFA代码传输或导出到第二个设备的功能。

是否使用去谷歌化的Android手机:当应用支持推送通知时,通常需要Google服务来安装或启动MFA应用,即使服务提供商不使用推送通知进行MFA…

独立安全审计:寻找你考虑的MFA应用的独立安全审计。

关于这篇论文真的很酷的是,研究人员提供了重现他们发现的步骤。

是否会有你选择的MFA应用在特定场景下无法工作的情况?

但希望你已经看到选择TOTP如何在实施MFA方面为你提供灵活性。至少,如果你选择TOTP认证,就不需要跟踪那么多MFA应用了。

[1] https://datatracker.ietf.org/doc/html/rfc6238 [2] SHA-1是建议的默认值,也是目前最常见的实现。RFC还提到了SHA-256或SHA-512变体。TOTP时间步长也不一定是30秒,如果你愿意,可以疯狂地每5秒生成一次TOTP。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计