从加密令牌中提取私钥如何容易编写但“不可能”?

信息安全 密码学 硬件 优比键 防篡改
2021-08-09 18:36:51

许多加密狗声称一旦写入就不可能提取存储的私钥。

尤比科

YubiKey AES 密钥信息永远无法从 YubiKey 设备中提取——只能对其进行编程。

硝基

除了普通的软件解决方案之外,密钥始终安全地存储在 Nitrokey 中。它们的提取是不可能的,这使得 Nitrokey 对计算机病毒和特洛伊木马免疫。

字面意思的说法似乎是营销废话。加密狗本身可以访问私钥,因此可以以某种方式读取它。

不过,这是一个有趣的主张。词语的选择——“从不”、“总是”、“不可能”——表明这里有一些可以证明的东西。或者,也许我给了他们太多的信任。这有什么关系吗?它是什么?

我的猜测是,他们的意思是,如果不对加密狗进行物理篡改,就不可能提取私钥。似乎可以证明根本没有物理通道可以在设备外部中继私钥。这使编写密钥变得复杂,我看不出如何解决。我可以看到的一种方法是不逐字写入密钥,但以某种方式允许它随机化,但我相信这些设备实际上允许写入密钥。

或者也许有比这更多的实质内容。据我所知,这些设备使用一些奇特的机制来存储在不破坏设备的情况下确实无法直接读取的位。


我确实在这里找到了答案,表明这有一些真正的意义,但没有详细说明。

https://security.stackexchange.com/a/92796/45880

直接从卡中提取私钥几乎是不可能的。通过一些酸性包装破坏和电子显微镜工作,一个熟练的团队,以及足够的时间、金钱和运气,理论上你可以提取密钥,但这不仅涉及物理访问,还涉及卡片将被物理破坏的场景。

2个回答

好吧,“不可能”是不可能证明的,这就是为什么在链接的答案中我说“几乎不可能”,甚至可能夸大了它。通过使用安全的硬件设备,攻击向量从“远程安装在主机上的恶意软件窃取机密”变为“攻击者需要物理访问硬件设备并破坏性地删除私钥”。后者当然不是不可能,但要困难得多。

这些 USB 加密狗的工作方式与智能卡非常相似。我对智能卡有更多经验,因此我将在答案中使用它,但大多数相同的原则都适用。事实上,许多 USB 加密狗在内部使用智能卡 SoC。它们价格便宜、可编程并提供强大的安全性,因此在许多应用程序中,仅在内部使用智能卡而不是尝试构建新的东西是有意义的。

可编程智能卡是单芯片或片上系统 (SoC) 中的完整计算机。现在它是一台非常有限的计算机,但仍然是一台计算机。智能卡与“外部世界”的连接是一个低权限的简单串行接口。卡从主机获得命令(更像是请求),卡以响应进行响应。这些命令仅限于卡已被编程执行的操作。

因此,如果我们有一张智能卡编程为对指令进行数字签名(如信用卡 EMV 中的支付请求),主机将通过串行接口向卡发送一个请求,该请求由命令和一些输入组成。卡解析命令并假设它是有效的,它通过相同的接口将数字签名发送回主机。在许多方面,它类似于客户端-服务器关系,智能卡是服务器,主机系统是客户端。在此过程中,私钥永远不会离开卡。它只是请求输入,响应输出。主机没有机制来强制智能卡返回私钥或做任何它没有被编程做的事情。当然,这假设没有“请给我所有的私钥”命令,这显然是没有意义的并且不提供安全性。智能卡可能有一个用户分配的 PIN 并且 PIN 是命令格式的一部分。智能卡验证 PIN,如果它无效将拒绝该命令。它有自己的内部存储器,因此它可以在内部记录无效尝试的次数并编程为关闭(或在极端情况下擦除卡)。

智能卡的编程(闪烁)在发货前完成。当然,如果攻击者可以对智能卡进行重新编程以运行“给我所有的密钥”程序,那么它就不安全了,所以大多数卡在一次写入内存中使用某种安全位。所以卡被编程并且写位被设置。然后,该卡将拒绝任何未来的重新编程尝试。

尽量不要挂在智能卡上。它们是可编程设备,因此它们的实现会有所不同,但一般概念是您拥有这台自包含的计算机,它具有自己的内部安全存储,该存储已被编程为通过简单的低权限接口响应来自主机的请求。 我同意“不可能”这个词是营销,但事实并非如此。你可以说几乎不可能。 非常基本的设计和锁定功能意味着您最终会得到一个难以攻击的强化设备。

然而,古老的公理“没有物理安全就没有信息安全“仍然适用。私钥仍然在智能卡中。通过物理访问和足够的动机,您几乎可以“解密”任何秘密。如链接的示例中,可以绕过智能卡,直接从物理上读取密钥常用的方法是取出卡,取出SoC,用酸解构烧掉封装,用电子显微镜和足够的技巧,你可以找到存储密钥的硅片上的点,连接引线并读出它们。它已经完成,所以这绝对不是不可能的,但在大多数情况下,这不是我们试图防御的攻击或攻击者的类型。老实说,如果你的攻击者达到那个水平,我会更担心5 美元的扳手

像这样的硬件加密模块受到一组称为FIPS 140-2的标准的监管,这些标准指定了设备必须达到的荒谬长度,以保护其中的私钥。

FIPS 140-2有四个级别,简要概括为:

级别 1:它做基本的加密技术。

级别 2: “防篡改”;如果不以明显的方式损坏设备(例如:破坏密封、重新焊接引脚等),就不可能提取或修改私钥。

3 级:这些设备应该具有“检测到物理访问的高概率”,如果检测到篡改,它们通常会将密钥归零——想想访问面板上带有传感器的服务器机架。或者在DARPA 的一项很酷的新研究中,电路在暴露于空气和湿气时会溶解。

级别 4:加强了篡改检测和密钥归零的要求。还必须对使用极端温度和极端电压的攻击具有高度抵抗力。


所以当你说

不过,这是一个有趣的主张。词语的选择——“从不”、“总是”、“不可能”——表明这里有一些可以证明的东西。

我猜它们的意思是相对于 FIPS 140-2 标准“经过验证”。事实上,通过点击您提供的链接,这两款设备都通过了 FIPS 140-2 2 级认证。