Dark Skippy:如何用2个签名黑掉你的硬件钱包私钥?

网络安全1个月前更新 cryptobaby
116 0 0

概要:本文介绍了一种名为Dark Skippy的新型硬件钱包破解技术,它通过在硬件钱包中植入恶意固件,利用低随机性签名将用户的助记词嵌入到比特币交易中,再从区块链上提取助记词以盗取用户资产。文章还解释了比特币签名的原理、如何避免此类攻击,并提出了多重签名作为解决方案。

本文作者:OneKey 中文@OneKeyCN。发文时间:下午10:59 · 2024年8月14日


海外加密安全圈炸锅了。

又一个改进的硬件钱包破解手段披露,更高更快更强。服了,难道黑客白帽们也在搞奥运?

OneKey 将会用尽量简单语言来解释,一起潜入 👇

(1)黑客是如何黑入视频里的硬件钱包的?✨

1. 攻击者将恶意固件刷到你的硬件钱包上。

2. 黑客使用这个带有恶意固件的硬件钱包发送比特币交易。恶意固件会将你的助记词通过低随机性签名的方式「嵌入」到这笔交易中,而这笔交易会公开地存储在区块链上。

3. 攻击者在区块链上找到你的交易,运行一个特殊算法,从中提取出你的比特币助记词。

4. 拿到你的助记词后,攻击者就能访问并盗走你的比特币。

(2)这个具体的攻击算法的原理是什么?✨

到这里会需要你对 BTC 转账有点了解。如果你不是个爱刨根问底的好奇宝宝,可以直接跳到下一个如何避免被攻击 :)

在进行比特币转账前——你需要准备好交易数据,这包括交易的输入(也就是你要花费的比特币来源)和输出(你要把比特币转到哪里)。

随后你通过哈希算法计算出消息哈希值。这是需要签名的数据摘要,你可以理解为「浓缩的交易数据」。

接下来重头戏来了——你需要对这个交易数据进行签名。以椭圆曲线数字签名算法(ECDSA)为例,你需要结合一个内部随机数 k 来输出签名结果。

随机数 k 的引入是为了确保每次签名的唯一性和安全性。假如你每次使用相同的随机数 k,那么虽然你签署的消息(交易)可能不同,生成的签名却可能出现规律,导致攻击者通过数学分析破解你的私钥。

因此,每次都使用一个不可预测的随机数 k 可以保证每次生成的签名都是独一无二的,即使对同一个消息进行多次签名,结果也会不同。

随后矿工就会验证并把交易打包广播到区块链。

在早期一些不规范的使用中,多次随机性不好的签名就有可能被黑客算出私钥。(都是 2013 的甚至更早的事情了)现在大部分硬件钱包,包括 OneKey,都采用了 RFC6979 安全标准,保证这个内部随机数在数学上足够随机。

这也是为什么早期的时候很多比特币 OG 的地址都是用一次换一次,公钥暴露降低比特币地址的安全度,还得手动设置专门的找零地址。现代比特币钱包(如HD钱包,分层确定性钱包)可以自动生成和管理大量地址,并将其背后的复杂性隐藏起来。当然,这里就扯远了,有兴趣的朋友可以自行考古。

到这里,理解下面视频里面的攻击就不难了:

虽然我无法直接从加密芯片上读取私钥,但是假如我能修改你的固件里面的随机算法,让这个随机数 k 不随机,我就能通过几次签名,通过链上广播的信息反求出你的私钥。

从某种意义上,这就等于把私钥嵌入到你的多个签名里了。在 Dark Skippy 中,他们将这个需求降低到了只需要2个签名(对于12个助记词而言 2 个,24个助记词需要4个签名)来破解私钥。确实比以往的方法更高效了。

(3)如何避免被攻击?✨

这一攻击成功,在于两件事,他们成功「拿到」了无辜用户的硬件钱包,并且成功「植入」恶意固件。

所以……

1. 确保硬件钱包从出厂、运输直到你的手里,没被第三方碰过。

现在几家硬件钱包品牌包括 Onekey,都有多层的防拆、加密塑封设计的「防供应链攻击」。保证到货后如果有拆封痕迹都能够立即发现。

建议您从收到货开始全程录像开箱,作为售后依据!

开始使用了之后,也要保管好钱包。确保你的硬件钱包不会被别人拿到,防止被恶意修改。

2. 确保固件代码不会被人恶意修改。

确保你是从官网渠道下载的更新。

还要做好校验工作。这里这里各家厂商的措施都不太一样,下面以 OneKey 为例,如果您使用其他厂商的可以查询下相关的措施。

首先,我们的软件和硬件代码是开源的(https://github.com/OneKeyHQ),并通过了慢雾科技
@SlowMist_Team和@Offside_Labs等知名安全机构的审计。

其次,OneKey 最新的硬件采用多颗军工级保密 EAL 6+ 芯片,机器和 App 都会自动校验固件。机器开机后,如果是非官方固件的签名,会被检测到并硬抹除助记词数据。你甚至不能恶意降级——这同样会导致助记词被抹除。

同时,用户可以自行验证的固件代码一致性,参考这篇:验证 OneKey 发布的固件文件与开源代码的一致性

(4)总之 ✨

无论如何,如果硬件钱包一旦丢失或者落入黑客手中,我们都建议立即启用备份助记词,尽快转移资产,确保万无一失。

这个风险相对于助记词触网储存和钓鱼,还是比较小的。

✨ 补充阅读:

在原文提到的攻击方法中,提到了一种方式也能够预防——“反泄露 Anti-exfil”,是一种防止上述攻击的方法。简单来说,反泄露是一种安全技术,它将硬件签名设备的熵与第二台设备(通常是伴随软件钱包的主机)的熵结合起来生成随机数。

然而,这种方法有两个缺点。

首先,目前还没有反泄露的完全公认的标准,这个还在发展中,所以你必须信任供应商完美实施了反泄露。

其次,由于反泄露改变了生成签名的方式,即每笔交易都需要从第二台设备获取随机数,这与当前大多数比特币钱包的工作方式不兼容,因此会带来用户界面和体验上的挑战。

在反泄露有了明确的标准并获得更广泛的钱包兼容性之前,如果你真的很担心「Dark Skippy」,我们建议使用多重签名作为更实用的解决方案。

多重签名与反泄露在本质上实现了相同的目标:它也需要来自第二台设备的熵来授权每笔比特币交易。如果你愿意,多重签名还可以从不止两台设备中添加熵(例如3-of-5多重签名)。最后但同样重要的是,多重签名在比特币中已经使用了10多年,经受住了考验(保护了数千亿比特币),并且已经非常标准化(比如PSBT、BSMS、输出描述符等标准)。

很多大的公司和基金,包括门头沟、贝莱德等,都在用比特币多签。

英文资源:Dark Skippy Disclosure

Dark Skippy:如何用2个签名黑掉你的硬件钱包私钥?

Dark Skippy 是一种强大的方法,用于恶意签名设备泄露秘钥。

使用 Dark Skippy,恶意签名者可以利用修改后的签名函数,通过将主秘钥嵌入交易签名中,高效且隐蔽地输出他们的主秘密种子。

这种攻击是在比特币签名设备和硬件钱包的背景下发现和讨论的,尽管可能适用于比特币之外的环境。
Dark Skippy 需要签名者通过恶意固件受损。Dark Skippy 在野外尚未被发现。

https://darkskippy.com/

© 版权声明

相关文章

暂无评论

暂无评论...