图片由 Waifu Diffusion v1.2 生成——一个邪恶的黑客在笔记本电脑上侵入五角大楼、动漫风格、黑客巢穴、无处不在的监视器、系列实验 lain、新世纪福音战士
Sooooo优步被弹出了。黑客内部的谣言工厂正在制造大量的scuttlebutt,但出现了一些我以前见过的东西,让我采取了一种激进的新立场。我希望在这篇文章中解释它,供大家学习。快来和我和Cendyne一起踏上这神奇的旅程吧!
tl;博士
您应该真正使用WebAuthn作为您的双因素身份验证解决方案,并使用 Yubikeys 等专用安全硬件或烧入大多数公司拥有的设备的安全芯片。终于,Stallman 所说的将彻底摧毁 Linux 的mangment 引擎有了一个很好的用途!
身份验证对人类来说是一个难题。对电脑来说更难。但总的来说,我们可以使用三种方法或“因素”来进行身份验证:
- 你是什么,比如视网膜或指纹扫描
- 你知道的东西,比如密码
- 您拥有的东西,例如支持基于推送通知的双因素身份验证的硬件双因素身份验证令牌或身份验证应用程序
大多数情况下,您不会看到登录 Facebook 所需的视网膜和指纹扫描。对于很多人来说,通常只是任何人之间的一个密码,他们的整个声誉就被破坏了。努力尝试将硬件身份验证令牌交到尽可能多的人手中,但与使用密码的“简单性”相比,这些确实是糟糕的 UX(用户体验)。我怀疑我能否向祖母解释如何使用 yubikey。更不用说如何使用 TOTP 代码生成器了。
我认为给公司的每个人发一个Yubikey并让每个内部系统都使用它会是一个更好的选择。我认为这是因为网络钓鱼的核心问题:当您不那么警惕时,它的效果最好。许多两因素身份验证机制因其工作方式而易于进行网络钓鱼。以下是我对一些常见问题的愤世嫉俗的想法。
TOTP 代码
许多在线服务支持TOTP 代码生成作为双因素身份验证机制。这些通过在客户端和服务器之间共享一个秘密值来工作。双方都接受这个秘密,输入当前时间,然后生成一个六位数的密码。
但是,当您是计算机时,六位数是一个非常小的搜索空间。最大的问题是运气好,这实际上是百万分之一的机会。事实证明,如果您小心,并且远程服务没有对身份验证尝试进行限制或速率限制,您可以在大约 2 小时内暴力破解 TOTP 代码。
更不用说,TOTP 代码的工作方式基本上意味着攻击者可以轻松地在防弹主机上托管的网络钓鱼站点上创建与您的身份验证设置相同的流程,然后以这种方式嗅探凭据。一旦网络钓鱼者获得了您的密码和 TOTP 代码,他们就可以使用它并将您重定向到实际的登录表单,让您认为它失败了,您需要再试一次。该协议实际上可以相对轻松地实现网络钓鱼。令人恐惧的是,这是 Discord 和 Twitter 用户的最佳安全实践。
Yubikey出版社
Yubikey 内置了多种身份验证方法。其中一种是传统的身份验证方法,它使 yubikey 伪装成键盘,并根据烧录在设备固件中的私钥输入复杂的长代码。这也可以被钓鱼。这是过去工作中任何员工和任意用户帐户之间的主要障碍。你有一个公司发行的 yubikey,你必须使用 yubikey 来进入管理面板的安全区域。
这也是可钓鱼的,例如 twitter 上的shitposters:
为了纪念 Uber 的违规行为,现在是 yubikey 新闻发布的时候了!
vvccccfrjcfnkkncrcuujlhktiredllitinttnkuddrh
— Xe Iaso | @[email protected] (@theprincessxena) 2022 年 9 月 16 日
因此,在保护生产访问权方面,这些都是不可能的。所有类似的基于代码的双因素身份验证方法都存在相同的钓鱼问题。
通知疲劳即服务
进行双重身份验证的另一种常见方法是让用户登录移动应用程序。之后,当您在计算机上登录时,它会向您的手机发送推送通知。然后您接受身份验证,您可以将您的 Minecraft 种子发布到 Facebook 市场或其他任何地方。
谷歌和 Facebook 将这些作为两因素身份验证方法提供。这意味着地球上很大一部分人可能会使用这种身份验证方法。它在实践中非常不安全,但让人们认为它是安全的。我的意思是,你相信你的手机,对吧?
Apple 是另一个例子,但它们不是使用您的 iCloud 帐户连接到桌面和移动操作系统的应用程序。不过,Apple 需要手动将代码中继到另一台设备,这使得这些代码更难以意外接受。没有什么是网络钓鱼准备工作无法解决的。
据称,这就是优步黑客所做的。当可怜的受害者试图睡觉时,他们一遍又一遍地向两个因素身份验证通知发送垃圾邮件一个小时。你知道,当你本能地放松警惕时,你更有可能本能地采取行动让噪音箱闭嘴。老实说,作为一名信息安全专业人士,我几乎不得不承认这种攻击方法,尤其是他们在 WhatsApp 上假装是 IT 向该人发送消息说他们需要批准请求以确保访问其帐户的请求。它很巧妙,我可能会爱上它。
也许我们应该考虑这整个两因素身份验证机制对实现安全目标有害。对于高管来说,这看起来令人印象深刻,他们通常出于某种原因做出有关安全产品的决定。
所以你可能想知道这样的事情:
我不确定这里最好的解决方案是什么,但我可以提出一些我认为有助于减少伤害的建议: Webauthn 。
网络认证
WebAuthn是一种使用硬件设备通过所有权证明对用户进行身份验证的协议。基本思想是你有一个包含私钥的某种硬件安全模块(例如 iPhone 的 Secure Enclave 或 Yubikey),然后服务器根据设备的公钥验证签名以验证会话。它还被设置为不可能发动网络钓鱼攻击,每个 WebAuthn 注册都绑定到它设置的域。 xeiaso.net
的密钥对不能用于向evil-xeiaso.net
进行身份验证。
用户体验很棒。网站向身份验证 API 发出请求,然后浏览器以 Web 技术无法复制的方式生成身份验证窗口。浏览器本身会询问您要使用什么身份验证器(通常这可以让您在嵌入式硬件安全模块或 USB 安全密钥之间进行选择),然后从那里继续。网络钓鱼是不可能的。即使复制了视觉样式,身份验证器也不会对浏览器进行身份验证!
由于浏览器可能不知道用户想要哪个验证器,它会提示用户输入平台验证器或漫游验证器,如 Yubikey。平台身份验证器将 Face ID、Touch ID 或 Windows Hello 等生物识别技术与受信任的平台模块或安全飞地结合起来进行身份验证。虽然漫游身份验证器可能需要存在测试和可选的 PIN 码。这个额外的步骤还可以保护用户的隐私免受任何路过的客户呼叫。验证生物特征或 PIN 时,服务器会收到用户已验证的标志。生物特征和 PIN 数据不会发送到服务器。没有 PIN 码的标准 yubikey 将显示为未经验证。
继续努力使 WebAuthn 更容易和更好地使用。 Apple 最近发布了带有 iOS 16 的Passkeys ,它允许您将 iPhone 用作任何其他设备(包括 iPad 和 Windows 机器)的硬件验证器。这有效地将您的 iPhone 的 Secure Enclave 变成了您在其他机器上使用的漫游安全密钥,为您提供两全其美的体验。您可以从 Apple 业界领先的设备安全处理器中受益,并且还可以在您的其他机器上使用它。 WebAuthn 的所有现有保证都被继承,包括每个 WebAuthn 凭证都绑定到一个网站这一事实。今天,您可以在 Chrome 中选择“添加新的 Android 手机”并使用您的 iOS 设备进行扫描。Safari 还没有赶上,我们期待稍后。
总之,用于身份验证的推送通知应该被认为是有害的。你不应该使用它们,你应该优先考虑转向硬件身份验证令牌,例如 Yubikeys。这样做的硬件和培训成本是值得的。
作为奖励,这是 web3 人得到这种事情的一种方式,它比错误更正确。他们使用以太坊密码系统作为身份验证因素。
EIP-4361:使用以太坊登录
WebAuthn 是一种协议,您可以在其中获得硬件元素来签署消息以证明您拥有相关密钥对,并允许通过“您拥有的东西”流程进行身份验证。在以太坊和其他区块链生态系统中,每个人都有一个密钥对,用于签署诸如“将 NFT 转移到另一个地址”或“向该地址发送一些钱”等指令的消息。这足以让您构建一个身份验证因素。这个身份验证因素的强度……值得怀疑,但通过符合EIP-4361 ,您可以将以太坊密钥对转换为 Web 应用程序的身份验证因素。这将连接到带有 WalletConnect 的硬件钱包或带有MetaMask等浏览器扩展的软件钱包。这与 WebAuthn 的工作方式非常相似,但具有以下核心原则:
- 身份验证是通过确认用户有权访问私钥来签署使用公钥验证的消息来完成的,很像 WebAuthn。
- 钱包应用程序会向您显示您尝试进行身份验证的网站的 URL,并且无法轻松伪造。
- 生成新的以太坊密钥对是免费的,任何人都可以这样做,而无需购买硬件来充当密钥托管。
但是由于所有这些的实现,它具有以下弱点:
- 没有协议级别的方法可以告诉用户正在使用哪种安全元素(如果有的话)。有几种不同类型的硬件“冷钱包”,最常用的策略之一是制作一个“热钱包”,它只是由 MetaMask 等浏览器扩展管理的密钥对。
- 在许多 web3 应用程序中,以太坊密钥对是唯一的身份验证因素。这意味着,如果有人设法以某种方式访问您的密钥对或恢复短语,他们就可以窃取您的猿猴,如果不尝试与威胁参与者协商,您就无法将其取回。
- 提取以太坊地址的私钥被认为是一项安全功能,鼓励人们将他们的私钥写在纸上并将其存储在安全的地方。许多以太坊空间事物的首次用户体验将迫使您通过询问您它是什么来写下恢复短语,我只能想象有多少人正在使用真正安全的机制这样做。有一些有趣的产品可以用来做一些事情,比如把你的种子短语打入金属,这样你就可以把那个金属物体放在保险箱里。
- 这是通过浏览器扩展实现的,而不是正确嵌入操作系统本身,这意味着理论上可以进行网络钓鱼,但在实践中看起来非常困难。