Caloogy 文章
English

硬件钱包的攻击面

日期
2025 年 11 月 14 日
系列
钱包
阅读
4 分钟
主题
WalletHardware walletSecure elementFault injection

一句话版本

硬件钱包把私钥锁在一个专用小设备里,私钥永远不进入电脑,签名在设备内部完成。它能挡住绝大多数远程攻击(电脑中毒、浏览器被控制)。 但它有自己的攻击面:物理接触(故障注入、侧信道)、供应链(被调包或预装的设备)、用户界面(屏幕显示看不懂导致盲签)、以及用户自己(被骗说出助记词)。了解这些边界,才能用对它。

全文分三层:

  1. 通俗理解:保险柜锁得住小偷,锁不住骗子
  2. 实际用处:Kraken 实验室的电压毛刺研究、假设备、数据泄露后的钓鱼、Ledger Recover 争议
  3. 原理与工程要点:安全芯片、故障注入、侧信道、固件验证、防篡改

第一层:通俗理解

1.1 保险柜锁得住小偷,锁不住骗子

攻击者 硬件钱包挡得住吗
远程黑客控制了你的电脑 挡得住:私钥不在电脑上,每笔签名都要你在设备上按键确认
偷走设备的人 基本挡得住:需要 PIN,多次输错会清空
有实验室设备、拿到设备很长时间的人 部分型号挡不住(见 2.1)
卖给你一台动过手脚的设备的人 挡不住
让你在被篡改的网页上签一笔看不懂的交易的人 挡不住(盲签)
打电话说"你的钱包有风险,请提供助记词"的人 挡不住

后三种其实是最常见的。


第二层:实际用处


第三层:原理与工程要点

3.1 安全芯片(Secure Element)

普通微控制器 安全芯片
设计目标 便宜、通用 抗物理攻击(银行卡、护照、SIM 卡同类芯片)
防护 少 主动屏蔽层、电压 / 时钟 / 温度异常检测、内存加密、抗侧信道设计
认证 — 通常有 CC EAL5+ 等安全认证
开源程度 可以完全开源 通常受保密协议约束,难以完全公开

这形成了一个取舍:开源可审计 vs 物理抗攻击。不同厂商做了不同选择,有的同时用两颗芯片。

3.2 故障注入

在芯片运行的关键时刻制造干扰,让它"算错一步":

目标通常是跳过一条比较指令(比如"PIN 是否正确"、"读保护是否开启")。防御:重复检查、随机延迟、异常检测后自毁关键数据、把关键判断写成"多次计算一致才通过"。

3.3 侧信道

不直接读数据,而是通过功耗、电磁辐射、执行时间推断正在处理的秘密。例如,椭圆曲线标量乘法如果按私钥的每一位做"加"或"不加",功耗曲线上就能直接读出私钥的比特。防御是常数时间、常数功耗的实现(无论密钥是什么,执行的操作序列都一样),以及加入随机掩码。

3.4 固件与供应链

风险 防护
恶意固件 设备只运行厂商签名的固件;启动时验证签名
设备被调包 设备首次启动时向厂商服务器做真伪认证;防篡改包装
预设助记词 任何时候都只用设备自己生成的助记词;附带"恢复卡片"的设备一律视为恶意
二手设备 不要买;或者至少完全重置并升级固件

3.5 屏幕是最后一道防线

硬件钱包最重要的安全特性,其实是那块独立的小屏幕:它是一条不受电脑控制的显示通道(见《带外核对》)。但如果屏幕上只显示一串哈希或十六进制数据,用户只能盲签,这条防线就失效了(见《盲签与所见即所签》、Bybit事件与前端完整性)。所以要选支持清晰签名(把交易解码成人话显示)的设备,并真的去读屏幕上的内容。


总结

层次 要点
擅长 挡远程攻击:私钥不离设备,签名需物理确认
弱点 物理接触(故障注入、侧信道)、供应链、盲签、社工
原理 安全芯片抗物理攻击;常数时间实现抗侧信道;固件签名
用法 官方渠道购买;只用设备生成的助记词;加 passphrase;读屏幕