研究人员周二表示,YubiKey 5 是基于FIDO 标准的双因素身份验证最广泛使用的硬件令牌,但它存在一个加密缺陷,当攻击者获得对它的临时物理访问权限时,这个手指大小的设备很容易被克隆。
这种加密漏洞被称为侧信道 Side channel,存在于大量其他身份验证设备中使用的小型微控制器中,包括银行智能卡、电子护照和安全区域访问。虽然研究人员已经确认所有 YubiKey 5 系列型号都可以克隆,但他们还没有测试使用该微控制器的其他设备,例如英飞凌生产的 SLE78 以及被称为英飞凌 Optiga Trust M 和英飞凌 Optiga TPM 的后续微控制器。研究人员怀疑,任何使用这三种微控制器和英飞凌加密库的设备都存在同样的漏洞。
YubiKey 制造商 Yubico 发布了一份咨询报告,并与安全公司 NinjaLab 发布了一份详细的披露报告。该公司对 YubiKey 5 系列进行了逆向工程,并设计了克隆攻击。所有运行 5.7 版之前固件的 YubiKey 都存在漏洞。该固件于 5 月发布,用自定义版本取代了 Infineon 加密库。无法更新 YubiKey 上的密钥固件。这意味着所有受影响的 YubiKey 都存在永久漏洞。
该公告确认:“攻击者可以利用此问题进行复杂且有针对性的攻击,以恢复受影响的私钥。” “攻击者需要实际拥有 YubiKey、安全密钥或 YubiHSM,了解他们想要攻击的账户以及执行必要攻击的专用设备。根据使用情况,攻击者可能还需要其他知识,包括用户名、PIN、帐户密码或身份验证密钥。”
侧信道是物理表现形式中留下的线索的结果,例如电磁辐射、数据缓存或完成泄露加密机密的任务所需的时间。在这种情况下,侧信道是数学计算(称为模数求逆)所花费的时间。英飞凌加密库未能实施一种常见的侧信道防御,即常数时间,因为它执行涉及椭圆曲线数字签名算法的模数求逆运算。常数时间确保执行的时间敏感加密操作是统一的,而不是根据特定密钥而变化的。
更准确地说,侧通道位于英飞凌的扩展欧几里德算法实现中,该算法是一种用于计算模逆的方法。通过在令牌进行自我验证时使用示波器测量电磁辐射,研究人员可以检测到微小的执行时间差异,从而揭示令牌的临时 ECDSA 密钥(也称为随机数)。进一步的分析使研究人员能够提取支撑令牌整个安全性的秘密 ECDSA 密钥。
在周二的报告中,NinjaLab 联合创始人 Thomas Roche 写道:
在目前的工作中,NinjaLab 发现了 Infineon 9 在该制造商的任何安全微控制器系列上的 ECDSA 实现中存在新的侧信道漏洞。此漏洞存在于 ECDSA 临时密钥(或随机数)模块反转中,更准确地说,存在于 Infineon 的扩展欧几里得算法(简称 EEA)实现中。据我们所知,这是第一次发现 EEA 的实现容易受到侧信道分析(与 EEA 二进制版本相反)。我们通过真实的实验证明了此漏洞的利用,并表明攻击者只需要访问设备几分钟。离线阶段花费了我们大约 24 小时;如果在攻击开发中投入更多的工程工作,则只需不到一小时即可完成。
通过对 Feitian 10 开放 JavaCard 智能卡进行旁道分析,对英飞凌实施情况进行了长期了解后,我们在 YubiKey 5Ci(Yubico 的 FIDO 硬件令牌)上测试了该攻击。所有 YubiKey 5 系列(2024 年 5 月 6 日固件更新 5.7 11 之前)都受到攻击的影响。事实上,所有依赖于在英飞凌安全微控制器上运行的英飞凌加密库的 ECDSA 的产品都会受到攻击的影响。我们估计,该漏洞在英飞凌顶级安全芯片中存在了 14 年多。这些芯片和加密库的易受攻击部分在 2010 年至 2024 年期间经历了大约 80 次 AVA VAN 4 级(用于 TPM)或 AVA VAN 5 级(用于其他芯片)的 CC 认证评估(以及略少于 30 次的证书维护)。
在一次在线采访中,罗氏详细阐述道:
英飞凌生产“安全微控制器”或“安全元件”。您可以在市场上找到很多这样的产品。其中一些(例如 YubiKey 5 系列)运行英飞凌加密库(英飞凌为不想自行开发的客户开发)。
这个加密库是高度机密的(甚至它的 API 也是秘密的,你需要与英飞凌签署保密协议才能知道 API)。除了英飞凌,没有人知道加密库的细节,尤其是它的对策选择。
与许多其他加密库一样,此加密库也实现了 ECDSA(FIDO 的核心加密函数,但也用于许多不同的应用程序/协议)。在 ECDSA 方案中,有几个子函数调用,其中一个是 ECDSA 临时密钥的模数反转。这是一个非常敏感的操作:任何有关 ECDSA 临时密钥的信息泄露最终都会泄露 ECDSA 密钥。
在英飞凌密码库中,模数逆运算不是常数时间:不同的临时密钥将导致不同的逆运算执行时间。当获取运行此功能的芯片的电磁辐射时,可以提取逆运算过程中执行时间的微小差异。这些微小的时间泄漏使我们能够提取临时密钥,然后提取秘密密钥。
此类攻击需要价值约 1.1 万美元的设备,以及对电气和密码工程的深入了解。攻击难度意味着,只有国家或其他拥有类似资源的实体才有可能实施此类攻击,而且只会在高度针对性的场景中进行。此类攻击在野外被广泛使用的可能性极低。Roche 表示,双因素身份验证和一次性密码功能不会受到影响:因为它们不使用库中易受攻击的部分。
NinjaLab 周二的报告概述了克隆攻击的完整流程:
然而,这份清单忽略了一个关键步骤,即拆开 YubiKey 并露出里面的逻辑板。这可能需要使用热风枪和手术刀拆下塑料钥匙外壳,露出逻辑板中作为存储加密机密的安全元件的部分。从那里,攻击者会将芯片连接到硬件和软件,在密钥用于验证现有帐户时进行测量。测量完成后,攻击者会将芯片密封在新外壳中并将其返还给受害者。
此次攻击及其潜在漏洞与 2021 年 NinjaLab 克隆 Google Titan 密钥的攻击几乎完全相同。那次攻击需要对令牌进行物理访问约 10 小时。 这些攻击违反了 FIDO 合规密钥的一项基本保证,即密钥存储的秘密加密材料无法被任何其他设备读取或复制。这一保证至关重要,因为 FIDO 密钥用于各种安全关键环境,例如军事和企业网络。
尽管如此,符合 FIDO 标准的身份验证是最强大的身份验证形式之一,不易受到凭证钓鱼或中间人攻击。只要密钥不落入技术高超、装备精良的攻击者之手,它仍然是最强大的身份验证形式之一。还值得注意的是,克隆令牌只是获得对帐户或设备的未经授权访问所需的两个主要步骤之一。攻击者还必须获取用于第一个身份验证因素的用户密码。这些要求意味着物理密钥仍然是最安全的身份验证方法之一。
为了发现侧信道,研究人员对英飞凌加密库进行了逆向工程,这是一套经过严格保护的代码集合,制造商竭力保密。该库的详细描述可能会引起密码学研究人员的极大兴趣,因为他们正在分析该库在其他安全设备中的工作原理。
想要了解其 YubiKey 运行的固件版本的人可以使用Yubico Authenticator应用程序。主屏幕的左上角显示钥匙的系列和型号。在下面的示例中,根据周二的公告,YubiKey 是 YubiKey 5C NFC 版本 5.7.0。
YubiKeys 提供可选的用户身份验证保护,包括要求用户提供 PIN 码或指纹或面部扫描。要使用这些附加措施对 YubiKeys 进行克隆攻击,攻击者还需要拥有用户验证因素。有关使用这些附加措施进一步锁定 YubiKeys 的更多信息,请点击此处。
目前仍未解答的一个关键问题是,还有哪些安全设备依赖这三个易受攻击的英飞凌安全模块并使用英飞凌加密库?英飞凌尚未发布公告,也没有回复索要公告的电子邮件。目前,尚无已知的 CVE 来跟踪该漏洞。