让我首先简单地解释一下我们试图用万能钥匙解决的问题。想象一下您正在登录这样的网站:
而且,由于您希望保护您的帐户不被可能获取您的用户名和密码的其他人登录,因此您启用了双因素身份验证 (2FA)。这意味着,即使在上面的屏幕中输入正确的凭据后,系统现在也会提示您从身份验证器应用程序中输入六位数的代码:
有几种不同的身份验证器应用程序,但它们的共同点是它们显示一次性密码(以下称为 OTP),旁边有一个倒计时器:
由于仅在很短的时间内有效,如果其他人获得了 OTP,那么他们的有效时间窗口就会非常短。此外,谁能从您的身份验证器应用程序中获取它?!嗯……这就是问题所在,我最近就展示了这一点,不是故意的,而是完全偶然,当我成为网络钓鱼攻击的受害者时。它是这样工作的:
- 我受到了社交工程的攻击,访问了一个假装属于 Mailchimp 的网络钓鱼页面,我用 Mailchimp 为这个博客发送时事通讯。该网站地址是 mailchimp-sso.com,它与真实地址 (mailchimp.com) 足够接近,因此可行。 “SSO”就是“单点登录”,所以看起来也是可行的。
- 当我看到登录屏幕(上面带有大“PHISH”标记的屏幕)并向他们提交我的用户名和密码时,网络钓鱼网站会自动使用这些凭据开始 Mailchimp 上的登录过程。
- Mailchimp 验证了凭据,并且因为我打开了 2FA,所以显示了 OTP 请求屏幕。
- 来自 Mailchimp 的合法 OTP 屏幕随后被返还给坏人……
- …谁用他们自己的页面请求 OTP 来响应我的登录请求。
- 我将代码输入表单并将其提交到网络钓鱼网站。
- 然后,坏人立即将该请求发送给 Mailchimp,从而成功登录。
来自身份验证器应用程序(或通过短信发送)的 OTP 的问题在于,它们很容易被钓鱼,因为有人可能会诱骗您交出 OTP。相反,我们需要的是“防网络钓鱼”范例,而这正是万能钥匙的含义。让我们看看如何设置它们,如何在网站和移动应用程序中使用它们,并讨论它们的一些缺点。
使用 WhatsApp 在移动设备上登录的密码
鉴于我最近收到 WhatsApp 的友好提示,我们将首先为 WhatsApp 设置一个:
那么,让我们“尝试一下”并逐步了解设置密钥的含义。我使用的是 iPhone,这是我首先看到的屏幕:
密钥只是您存储在设备上的数字文件。它在创建和用于登录的方式上具有各种加密保护,但这超出了我想在这篇博文中向观众解释的范围。让我们简单回顾一下 WhatsApp 上面描述的三个项目:
- 该密钥将用于登录服务
- 它与您已经对设备进行身份验证的方式结合使用
- 它需要存储在某个地方(记住,它是一个数字文件)
最后一点可能是非常特定于设备和非常特定于用户的。由于我有 iPhone,WhatsApp 建议我将密钥保存到我的 iCloud 钥匙串中。如果您使用的是 Android 设备,您显然会看到一条与 Google 同步密钥方式一致的不同消息。选择这些本机选项之一是您阻力最小的途径 – 单击几下即可完成。然而…
我有很多其他服务想要使用密钥,并且我想从我的 iPhone 和 Windows PC 向它们进行身份验证。例如,我在所有设备上使用 LinkedIn,因此我不希望我的密钥仅与我的 iPhone 绑定。 (这有点笨拙,但有些服务通过使用您的密钥所在的移动设备来扫描网页上显示的二维码来实现此目的)。如果有一天我从 iPhone 切换到 Android 会怎样?我希望我的密钥更易于转移,因此我将它们存储在我的专用密码管理器1Password中。
附注:正如您将在本文中读到的那样,密钥不一定取代密码。有时它们可以用作“单一因素”(您用于登录的唯一因素),但它们也可以用作“第二个因素”,第一个因素是您的密码。这取决于实施它们的服务,而对密钥的批评之一是您对它们的体验会因网站而异。
我们仍然需要密码,我们仍然希望它们强大且独特,因此我们仍然需要密码管理器。我已经使用 1Password 14 年了(全面披露:他们赞助了Have I Been Pwned ,并且也经常赞助这个博客),除了存储密码(以及信用卡和护照信息以及安全笔记并与我的家人分享)之外,他们还可以存储密钥。我在 iPhone 上安装了 1Password 并将其设置为自动填充密码和密钥的默认应用程序:
因此,我可以选择将我的 WhatsApp 密码直接存储在此处:
混淆部分是我的电话号码的最后四位数字。让我们“继续”,然后 1Password 会弹出一个“保存”按钮:
保存后,WhatsApp 会显示现在针对我的帐户保存的密钥:
而且因为我将它保存到了 1Password 中,并且可以在我的所有设备上同步,所以我也可以跳到 PC 上查看它。
就是这样,我现在有了一个可用于登录的 WhatsApp 密钥。考虑到该平台的广泛性以及事实上我实际上只是被提示创建一个密钥(讽刺的是,就在我的 Mailchimp 帐户被钓鱼的那天),我选择了这个示例作为起点。唯一的问题是,我真的不知道如何退出WhatsApp,因此我可以测试使用密码登录。让我们去创建另一个具有不同服务的服务,看看这种体验有何不同。
通过 PC 使用 LinkedIn 登录的密码
让我们选择另一个例子,我们将在我的电脑上设置这个例子。我将选择一项包含一些重要个人信息的服务,如果该信息被接管,将会造成损害。在这种情况下,该服务本身也曾遭受过数据泄露:LinkedIn。
我已经在 LinkedIn 上启用了两步验证,但正如我自己的网络钓鱼经历所证明的那样,这并不总是足够的。 (注意:术语“两步”、“双因素”和“多因素”确实有细微的差别,但为了简单起见,我在这篇文章中将它们视为可互换的术语。)
关于万能钥匙,您会发现 LinkedIn 和 WhatsApp 的描述之间存在相似之处。然而,一个重要的区别是 LinkedIn 关于不需要记住复杂密码的评论:
让我们开始创建该密钥,但在创建密钥之前,请记住,每个不同的服务都可以决定如何实现创建密钥的工作流程。就像不同的服务对密码强度标准有不同的规则一样,这同样适用于密钥创建的机制。 LinkedIn 首先再次要求我输入密码:
这是验证过程的一部分,旨在确保您以外的其他人(例如,可以坐在您的计算机上且已登录 LinkedIn 的人)无法添加访问您帐户的新方式。然后系统会提示我输入 6 位代码:
该信息已发送到我的电子邮件地址,从而验证我确实是合法帐户持有人:
当我在网站中输入该代码后,LinkedIn 就会将密码推送给我,然后 1Password 会提供保存密码:
同样,您的体验会根据您使用的设备和存储密钥的首选方法而有所不同。但对于 LinkedIn 来说始终相同的是,您可以在网站上看到成功创建的密钥:
现在,让我们通过注销 LinkedIn 然后返回到登录页面来看看它是如何工作的。立即弹出 1Password 并要求我使用我的密码登录:
这是一键登录,单击紫色按钮立即授予我访问我的帐户的权限。 1Password 不仅不会让我在钓鱼网站中输入密码,而且由于密钥的技术实现,即使将其提交给不法分子,它也将完全无法使用。让我强调一下这个过程中真正重要的事情:
万能钥匙是为数不多的可以让您的生活变得更轻松而不是更困难的安全结构之一。
但是,有一个问题:我的帐户仍然有密码,并且仍然可以使用它登录。这意味着 LinkedIn 已经决定(同样,这是特定于网站的决定之一),密钥仅代表一种并行的登录方式。它不会取代密码,也不能用作第二个因素。即使在生成密钥后,对于第二个因素也只有两个选项可用:
这里的风险是,您仍然可能被诱骗在网络钓鱼网站中输入密码,并且根据我的 Mailchimp 示例,您的第二个因素(由身份验证器应用程序生成的 OTP)也可能会被网络钓鱼。这并不是说您不应该在 LinkedIn 上使用密钥,但尽管您仍然拥有密码和可钓鱼的 2FA,但您仍然面临着与我一样的攻击风险。
Ubiuiti 的 2FA 密钥
让我们再尝试一个示例,这一次,它是将密钥实现为真正的第二个因素:Ubiquiti。
Ubiquiti 是我最喜欢的网络设备制造商,登录他们的系统可以让您对我的家庭网络有大量的了解。多年前最初设置该帐户时,我使用 OTP 启用了 2FA,正如您现在所了解的,冒着被网络钓鱼的风险。但就在前几天,我注意到了密钥支持,几分钟后,我在 1Password 中的 Ubiquiti 帐户如下所示:
我不会费心再次执行设置过程,因为它与 WhatsApp 和 LinkedIn 非常相似,但我将分享现在登录该帐户的样子,这非常棒:
我故意让它以实时速度运行,以显示使用密码管理器和密钥的登录过程有多快(我已经空白了一些包含个人信息的字段)。从我第一次与屏幕交互到使用强密码和第二个因素完全登录大约需要七秒。让我一步步分解这个过程:
- 当我单击“电子邮件或用户名”字段时,1Password 会建议登录帐户。
- 我点击我想要使用的帐户,1Password 使用面容 ID 验证我的身份。
- 1Password 会自动填写我的凭据并提交表单。
- Ubiquiti 要求我提供密钥,我点击“继续”,我的 iPhone 再次使用 Face ID 以确保确实是我。
- 密钥已提交给 Ubiquiti,我已成功登录。(由于这是我第一次通过 iPhone 上的 Chrome 登录,Ubiquiti 随后询问我是否要信任该设备,但这种情况发生在我已成功登录之后。)
现在,还记得您仍然受网络钓鱼 2FA 困扰的“LinkedIn 问题”吗? Ubiquiti 则不然,它允许我完全删除身份验证器应用程序:
但我们还可以做一件事来进一步加强一切,那就是摆脱电子邮件身份验证,并用比密钥更强大的东西代替它:U2F 密钥。
Ubiquiti 2FA 的物理通用 2 因素密钥
虽然万能钥匙本身被认为是不可钓鱼的,但如果您存储数字密钥的位置受到损害,会发生什么情况?例如,您的 iCloud 钥匙串或您的 1Password 帐户。如果您正确配置和管理这些服务,那么发生这种情况的可能性非常小,但这种可能性仍然存在。现在让我们添加一些完全不同的东西,那就是物理安全密钥:
这是一个YubiKey ,您可以在上面存储您的数字密钥。它需要购买,截至目前,一把钥匙的投资约为 60 美元。 YubiKey 被称为“通用 2 因素”或 U2F 密钥,上面的密钥(即 5C NFC)可以插入带有 USB-C 的设备,也可以放在带有 NFC 的手机旁边(即“近场通信”,一种短距离无线技术,要求设备之间的距离只有几厘米)。 YubiKeys 并不是 U2F 密钥的唯一制造商,但他们的名字已成为该技术的代名词。
回到 Ubiquiti,当我尝试删除电子邮件身份验证时,以下提示让我陷入困境:
我不需要电子邮件身份验证,因为这涉及到向我的电子邮件地址发送代码,而且我们都知道当我们依靠人们在登录表单中输入代码时会发生什么🤔所以,现在让我们逐步了解 Ubiquiti 流程并添加另一个密钥作为第二个因素:
但这一次,当 Chrome 弹出并提供将其保存在 1Password 中时,我将选择提示顶部的小 USB 图标:
然后,Windows 会提示我选择保存密钥的位置,这是我选择已插入 PC 的安全密钥的位置:
每次开始与 U2F 键交互时,都需要轻按一下:
片刻之后,我的数字密钥已保存到我的物理 U2F 密钥中:
正如您可以将密钥保存到 Apple 的 iCloud 钥匙串或 1Password 中并在设备之间同步,您也可以将其保存到物理密钥中。这正是我现在所做的 – 将一个 Ubiquiti 密钥保存到 1Password,另一个保存到我的 YubiKey。这意味着我现在可以删除电子邮件身份验证,但它确实存在风险:
这是反思保护数字生活所呈现的悖论的一个好点:当我们寻求更强大的身份验证形式时,我们创造了不同的风险。例如,丢失所有形式的非网络钓鱼 2FA 会带来失去帐户访问权限的风险。但我们也有缓解控制措施:您的数字万能钥匙的管理完全独立于物理万能钥匙,因此丢失两者的可能性极低。另外,最佳做法通常是拥有两把U2F 密钥并注册它们(我旅行时总是随身携带一把,将另一把留在家里)。新的安全级别、新的风险、新的缓解措施。
查找支持密钥的站点
这一切都很棒,但除了我上面的例子之外,谁真正支持万能钥匙?!服务数量迅速增加,其中许多 1Password 已记录在其优秀的passkeys.directory网站中:
浏览一下那里的列表,您会看到许多非常熟悉的品牌。截至撰写本文时,您还不会看到 Ubiquiti,但我已经完成了“建议新列表”流程来添加它们,并将与 1Password 人员进一步讨论,看看我们如何能够更快地填充该列表。
还请查看“投票支持密钥”选项卡,如果您看到确实应该在那里的品牌,请表达您的声音。嘿,这是一个值得开始投票的好人:
概括
在这篇博文中,我特意只关注万能钥匙的机制,但让我花点时间强调重要的独立但相关的概念。将密钥视为我们所说的“深度防御”的一部分,即应用多种控件来帮助确保您的在线安全。例如,您仍然应该以合理的怀疑态度对待包含链接的电子邮件,并且每当有疑问时,不要单击任何内容并通过浏览器独立导航到有问题的网站。您仍然应该拥有强而独特的密码,并使用密码管理器来存储它们。在将您的凭据手动输入到您的密码管理器没有为您自动填充的网站之前,您可能还应该确保您完全清醒并且没有倒时差躺在床上 🙂
我们还没有处于万能钥匙的最初阶段,也还没有达到临界点……但它就在眼前。就在上周, 微软宣布新帐户将默认无密码,并优先使用密钥。虽然万能钥匙绝不是完美的,但看看它们正在取代什么!现在就开始在您最重要的服务上使用它们,并推动那些不支持它们的人真正认真对待客户的安全。