上周,安全公司帕洛阿尔托网络(Palo Alto Networks)旗下 Unit 42 的研究员阿里·奥尔什泰因(Arie Olshtein)披露了一种被称为 Pass-ta-key 的攻击手法,称其发现了通行密钥(passkey)生态中的「新型攻击面」。这一说法在普通用户与安全从业者中引发了困惑:通行密钥不是被认为比密码更安全吗,怎么会整体失守?

攻击到底做了什么
按照奥尔什泰因的描述,Pass-ta-key 能在运行了恶意软件的 Windows 机器上,提取谷歌密码管理器(Google Password Manager,简称 GPM)中存储的全部通行密钥。这让许多人感到意外——因为大家普遍以为通行密钥只存放在可信平台模块(TPM)里。TPM 是固化在芯片中的隔离安全区,专门保管加密密钥等高度敏感信息。如果密钥真在 TPM 中,Pass-ta-key 又如何能整批取出?
答案有些反直觉:行业组织 FIDO 联盟管理的 FIDO2 规范,其实并没有强制要求把通行密钥存放在 TPM 或其他专用硬件里。事实上,多数平台与第三方通行密钥管理软件都不把密钥放在这类硬件中。几乎唯一的例外是微软——它向用户(主要面向企业)提供了把通行密钥存入 Windows TPM 的可选项。
为什么大多平台改用本地存储
在几年前的架构调整中,除 Windows 之外的所有平台都把通行密钥改成了「设备本地存储」。原因在于,通行密钥若想被广泛采用,必须能轻松同步到用户的所有设备;而一旦要求存入 TPM,同步就几乎不可能——每换一台新设备都得重新逐个创建密钥。
FIDO 规范的制定者最终认为,把密钥放在设备上总体是安全的:macOS、iOS、Android 等系统的应用权限足够细粒度,潜伏在设备上的恶意软件通常无法访问构成通行密钥安全核心的私钥,除非操作系统本身被某种零日漏洞攻破。迄今为止,这一假设在真实环境中被证明基本成立。
Windows 是那个例外
唯一的例外是 Windows。与其他平台不同,Windows 上的应用通常以用户的全部权限运行,沙箱隔离的防护能力有限,无法阻止未沙箱的恶意软件读取已沙箱应用的数据——沙箱只在一个方向上起作用。这意味着 Windows 上的恶意软件访问其他应用的数据要容易得多。
正因如此,许多第三方开发者为 Windows 上的通行密钥管理另选了方案:把密钥以端到端加密的「数据块」形式存放在云端。如今不仅是 Windows 版 GPM,1Password、Dashlane 等第三方应用也采用了服务端存储的设计。
攻击的本质:并不「新颖」
Pass-ta-key 的三类变种中,威力最大的一招是让被感染的 Windows 机器伪装成一台 iPhone,从而触发 GPM 的同步功能,把存储的所有通行密钥转移到这台被感染的设备上。攻击者借此拿到密钥后,便能登录用户在各类网站上的账户。
但安全研究者丹·古丁(Dan Goodin)指出,这种风险早已存在,也是部分人始终认为密码管理器不够安全的原因。一旦设备被感染且已登录敏感账户,攻击者几乎可以为所欲为——无论里面存的是密码还是通行密钥。换句话说,Pass-ta-key 并非什么新事物,它的攻击面涵盖一切需要身份验证才能访问的数据。
通行密钥的设计目标是消除可被钓鱼、可在服务端泄露的共享密钥,它本就不承诺能抵御针对「存放密钥的设备」本身的物理或本地攻击。真正值得记取的教训或许是:当一台(尤其是运行 Windows 的)设备在被登录状态下被攻陷,存放在其中的一切数据都门户大开——这一点,与是否使用通行密钥无关。
来源:Ars Technica





