用于与市政当局等进行在线联系的新丹麦身份验证解决方案是否真正使用 2FA?

信息安全 验证 多因素
2021-08-27 00:47:37

在丹麦,目前几乎所有与市政当局、州等进行在线联系的数字识别/身份验证解决方案正在转换为由以下步骤组成的设置:

  1. 您在要登录的网站上输入您的用户名。
  2. 您使用六位数代码或触摸/面部 ID 在手机上打开身份验证器应用程序(一个特定的、专用的应用程序)。
  3. 您批准在应用程序中登录。

用户名本质上被视为“任何人都不应知道”的密码(正如预期的那样,该网站存在问题,有助于通知您您的用户名已被占用),但没有在任何网站上加注星标它被使用了。开发人员坚持认为,身份验证器应用程序和用于解锁它的六位数代码的剩余组合构成双因素身份验证。
这真的站得住脚吗?如果不是,用户名/密码/用户名/密码是否构成另一个因素?(我能找到的设置的最佳英文描述在这里。)

编辑:我现在找到了更详细的丹麦语描述,并有时间翻译它。回复评论等:

  • 该应用程序只能在激活时使用,并且激活的应用程序是个人的。如果您已经拥有旧的身份验证设置,则可以立即使用旧的身份验证设置进行激活,如果您从头开始注册,则可以在市政服务台进行激活。注册涉及屏幕上显示的激活码和通过 SMS 发送到已验证或在注册期间通过向该号码发送带有另一个 6 位验证码的 SMS 验证的手机号码的 8 位临时 PIN
  • 密码经过集中验证(通过“[零知识密码证明]技术与其他技术相结合”,但可能与它们的实施有关)尽管正如我所提到的,人们可以使用生物识别技术来代替它,他们实际上建议这样做为了便于使用
  • 经过一定次数的不成功尝试后,您确实会被锁定
  • 您最多可以附上三个应用程序副本,因此如果您的平板电脑上有一个副本,手机上有一个副本并且丢失了任一设备,您可以使用剩余的一个在新手机/平板电脑上激活该应用程序;否则您必须重新进行注册过程
4个回答

用户名并不意味着秘密,正如您所展示的,它们可以被枚举。在 MFA 中,您以该用户身份进行身份验证因此,用户名不能成为一个因素。

通过删除密码并依赖 2FA应用程序,2FA 代码成为一个单一因素。因此,他们使用 2FA工具来实现单一因素打开应用程序的秘密(即“打开它的代码”)不会对用户进行身份验证,它会解锁应用程序。它类似于手机本身的 PIN。因此,不,应用程序密码与远程系统中的用户身份验证不在同一范围内。

当开发人员/设计师使用事物的首字母缩写词并忘记首字母缩写词的含义时,就会发生这种情况。

“我们实施了 2FA 吗?”
检查设计并看到一个 2FA 应用程序
“是的!”

除非应用程序受到某种限制,否则 2FA 身份验证器应用程序只是一个 TOTP 计算器。它存储一个秘密,代码证明设备知道这个秘密。代码本身并不是秘密。因此,TOTP 2FA 应用程序是一个单一因素,除非您没有提供有关情况的详细信息。

所以,不,非秘密用户名和 TOTP 应用程序只是一个因素。

据我所熟悉的类似方案,论点不是用户名是一个因素(它是身份),而是声称的两个因素是:

  • 当您安装应用程序并通过某种更强大的身份验证系统时,您拥有的设备会生成一个唯一代码(例如,类似的荷兰方案1将向您发送短信电子邮件,并要求您知道您的邮政编码(在荷兰, 1 个邮政编码 = 1 个特定街道),如果有任何失败,您必须等待实体信件到达您的邮箱)。这是一个因素。
  • 然后您有密码,该密码未经验证或存储在您的设备上,因此您的设备不知道正确的密码。这是另一个因素。(注意:生物特征“安全”解决方案的使用通常通过将密码存储在设备中稍微不安全的位置来消除这个因素,相信设备仅在某些生物特征认证通过时才提供它。这总是不太安全。对于例如,我的银行应用程序非常明确)。

因此,当您输入密码时,您的设备会发送 (1) 存储在您手机上的秘密和 (2) 存储在您头脑中的秘密的衍生信息。接下来检查是否有匹配用户名的相应登录请求(通常不存储在设备上,从而显着降低设备被盗的危险)以及是否有应用程序提供您批准请求。

总之:如果您不使用生物识别安全性,那么我认为称这两个因素身份验证是公平的。这个系统对我最大的刺激是它只允许数字(短)密码而不是正确的密码,在我看来这只是愚蠢的,并且大大降低了整体安全性。由于密码系统使密码管理器的使用变得更加困难,这也意味着更多的人重复使用他们的密码。但是,如果他们将密码替换为密码,那么总体上它可能是一个相当不错的系统。

当然,还值得注意的是,不能保证任何尝试实现此功能的特定系统都能正确实现它。我会建议任何架构师只使用现成的解决方案,但我确实欣赏这种方法带来的优势(政府必须花费大量精力确保他们的解决方案对每个人来说都足够简单)。

1我最后一次与此互动是几年前。我绝对记得经历过这个多步骤的过程,但我也记得第一次不得不等待一封信。在这一点上,我不确定“强大的身份验证”过程是如何工作的,但我对整体概念充满信心(强大的身份验证使您的应用程序版本独一无二)。

您能否保证使用 2FA 应用程序的人使用密码、密码或其他方法来解锁他们的手机或身份验证器应用程序?除非您在具有特定设备策略的组织中工作,并且确定人们将其组织管理的设备用于他们的 2FA 应用程序,否则您不能。

你能保证有人会合理地对用户名保密吗?尽管不是每个人都以这种方式对待它们或以安全的方式创建和保护它们,但密码是秘密是相对普遍的知识。另一方面,用户名通常不被视为机密。从体验的角度来看,将用户名视为密码(尤其是在您可以找出存在哪些用户名的示例中)并没有多大意义。

由于您通常无法强制要求 2FA 应用程序需要密码才能访问,因此我认为说 2FA 应用程序本身既是“你拥有的东西”又是“你知道的东西”是不合理的。它只能被安全地假定为“你拥有的东西”。

理论上,我认为“秘密用户名”可能是“你知道的东西”,但唯一用户名的具体示例和查找用户名的能力使得这一点要弱得多。

唯一有意义的情况是,如果您的应用程序(或身份验证系统,如果您将 SSO 用于多个应用程序)需要特定的 2FA 应用程序,该应用程序需要安全密码才能查看代码。在这种情况下,唯一的区别是工作发生在哪里。但是,我想更多地了解系统如何将 2FA 代码与用户名联系起来,看看那里是否存在弱点。

6 位代码只是您知道的,并且该应用程序不是唯一的,因此不能是您拥有的东西此外,一个 6 位代码 + 一个密码只会是您知道的 2 个东西

但是,如果该应用程序还具有存储在您的手机中且难以提取的唯一令牌,它就会变成您拥有的东西:没有人拥有相同的应用程序和 6 位数代码,但另一部手机可以冒充您。

智能卡 X509 证书身份验证中的一个很好的例子:用户只需键入证书的 PIN 码。然而,身份验证级别是目前最高的通用级别,因为如果没有昂贵的工具,就无法从像样的智能卡中提取证书,即使这样也需要超过一天的时间,所以用户应该注意到他们的卡被盗并拥有证书作废。

我不知道智能手机上有这样的安全存储,但在没有植根(或越狱)的手机上简单地提取私有应用程序值并不容易。因此,恕我直言,在应用程序上生成一个随机令牌,将其用作私有非对称密钥并仅将公钥提供给身份验证服务器可以使该应用程序充当有效的 2FA 身份验证系统。简单地说,您拥有的不是应用程序,而是手机内容。