为什么 Secure Element 不是唯一的信任点
大多数钱包被攻破,问题出在 Secure Element 周边,而不是芯片本身。
在 Secure Element 系列的第一篇文章中,我们介绍了什么是 Secure Element。第二篇讲解了它能防御哪些攻击者,哪些又无法防御。本文将换个角度思考:即使芯片本身足够安全,这就足够了吗?
The short answer is no. And the reason has nothing to do with the chip's engineering. Most successful attacks against hardware wallet users do not break the secure element. They don't need to. They exploit the layers around it, the seed phrase written on a piece of paper, the firmware that tells the chip what to do, and the PIN that controls access to the device. The secure element can be technically impenetrable while the wallet it lives inside is thoroughly compromised.
这正是“钱包安全是一套系统,而不是单一芯片”这句话的含义。Secure Element 是系统中最坚固的核心防线,但它只是其中一环。如果把它当作全部,就会被攻击者利用这种误区。
中世纪的城堡不仅仅是堡垒本身,而是一套分层防御体系:护城河、外墙、内墙、城门楼,最后才是中央的堡垒。每一层都有不同的作用,抵御不同的攻击者。攻破一层并不意味着胜利,只是让攻击者更接近下一道防线。堡垒虽然最坚固,但如果外墙被弃守,再强的堡垒也难称防御严密。
第一层:固件完整性与安全启动
Secure Element 负责存储和保护私钥。但它本身并不决定如何使用私钥,而是接收指令。这些指令来自设备固件,即运行在硬件钱包主处理器上的代码,决定了设备的行为。
这就引出了一个关键问题:你如何确定给 Secure Element 下达指令的固件,真的是厂商发布的正版固件,而不是被篡改过的?
固件完整性意味着什么
固件完整性,指的是你设备上运行的代码与厂商发布时完全一致,未被篡改、未被攻破,且真实可信。在硬件钱包中,固件负责所有可见的操作:设备如何响应、交易如何构建和展示签名。
如果攻击者能替换或修改固件,就能获得巨大优势。恶意固件可以在屏幕上显示与实际签名地址不同的内容,可以悄悄篡改交易金额,可以操控界面窃取 PIN 码,甚至在某些架构下制造条件,降低 Secure Element 的防护效果。这些攻击都不需要攻破 Secure Element 本身,而是通过控制输入输出实现。
安全启动
防止固件被篡改的核心技术是安全启动(Secure Boot):在固件运行前,先验证其加密签名。厂商持有私钥,每一个正版固件都用该密钥签名。设备启动时,会用厂商公钥校验固件。如果签名不匹配(因为固件被修改、替换或损坏),设备将拒绝启动。
这是一道有效防线,但也有局限。安全启动只能保证运行的固件是厂商签名的,无法保证厂商签名体系从未被攻破,固件自身没有漏洞,或未来固件升级不会引入新风险。这些都是残余风险,但对于有良好安全实践的知名厂商来说,通常风险较小。
这一层无法覆盖的内容
安全启动无法防御正版固件中的漏洞。即使是无意中引入的 bug,也可能带来可被利用的安全隐患。这也是为什么固件及时更新很重要:保持最新能修补已知漏洞,但每次升级也需要信任新固件的安全性。
主流硬件钱包厂商会公开固件更新日志、让固件不可更改、强制独立审查,有时还允许用户在安装前独立验证固件哈希值。
第二层:PIN 码与访问控制
假设固件可信且 Secure Element 完好,下一层保护就是访问控制:谁能使用这台设备?
硬件钱包通常要求输入 PIN 码(数字密码)后,设备才会响应操作。PIN 码防止他人拿到设备后直接使用。没有正确的 PIN,设备不会签名交易、显示地址,也无法访问任何功能。
PIN 保护与 Secure Element 的协作
PIN 码的校验由 Secure Element 芯片本身完成,而不是主处理器。这是关键的架构细节。如果 PIN 校验在主处理器软件中,攻击者只要能运行任意代码就能绕过。而在 Secure Element 内部校验,则受和密钥存储同级别的防篡改保护。
大多数通过认证的硬件钱包还会在 Secure Element 内实现 PIN 尝试计数器。输错三到十次后,设备会自毁、永久锁定,或像 Tangem 一样提高安全延迟。这能有效阻止暴力破解 PIN:即使是四位数字 PIN,限定 10 次尝试也几乎不可能被随机猜中。
PIN 保护有效的场景
针对顺手盗窃(比如有人捡到或偷走你的设备但不知道 PIN),设备本地 PIN 校验加尝试次数限制非常有效。攻击者面对的是一台会自毁的锁定设备,根本无法猜码。这就是“城门楼”在发挥作用。
PIN 保护失效的场景
PIN 只能保护设备本身,无法保护助记词。这是城堡的两道不同防线,守护的是不同的资产。
如果有人在同一次盗窃中拿走了你的设备和写有助记词的纸张,PIN 就失去了意义。他们甚至不用设备,直接用助记词在任何兼容钱包恢复即可。相当于直接绕过了“城门楼”。
PIN 的安全性还依赖于输入过程未被偷窥。在公共场所输入 PIN,被摄像头拍到或被旁人看到,PIN 就等于泄露,无论 Secure Element 多强都无济于事。
此外,PIN 只能防止未授权使用,无法防止在胁迫下被迫交出 PIN。遭到威胁时,芯片无法保护用户安全。这不是设计缺陷,而是技术安全无法覆盖的范畴。
第三层:助记词存储
助记词是你设置硬件钱包时生成的 12 或 24 个单词,是私钥的人类可读形式。它的设计初衷是作为恢复机制:如果设备丢失或损坏,可以用这些词在新设备上恢复钱包。每个单词都是一个检查点,组合起来即可重建 Secure Element 保护的密钥。
这种设计既是必需的,同时也是硬件钱包体系中最大的结构性漏洞。
为什么助记词打破了城堡的隐喻
前面提到的安全启动、PIN 保护和 Secure Element 的防篡改,都是基于一个前提:私钥只存在于芯片内,只有芯片能访问。
助记词打破了这个前提。它是密钥的副本,以明文单词形式存在于芯片之外——纸上、金属板上、家中,甚至可能在多个地方。任何人只要拿到助记词,无需接触硬件钱包,就能恢复你的私钥。只要助记词落入他人之手,芯片的所有防护都形同虚设。
这不是硬件钱包的缺陷,而是有意的权衡:设备丢失不应导致资金永久丢失。恢复机制必然带来恢复风险,关键在于如何管理这种风险。
助记词面临的威胁
助记词面临着硬件芯片无法防御的威胁:
Physical theft:助记词写在纸上,放在家里被盗,任何人捡到都能用。无需技术门槛,只要有兼容钱包即可恢复。
Fire and water damage:硬件钱包损坏可以更换,只要助记词安全就能恢复。但如果助记词本身被烧毁或泡水损坏,则资金永久丢失,无法挽回。
Inadvertent exposure:拍照、存云笔记、或输入到任何数字设备,都会让助记词暴露于远程盗窃风险。
Inheritance and estate:没有妥善传承方案的助记词,意味着用户去世或失能后,资金将永久无法取回。
如何加强助记词存储安全
标准做法是用耐用材料做物理备份,至少用纸,资产较多时建议专用金属备份板,并存放在物理安全的位置(如保险箱、安全存储柜),且不要与身份信息直接关联。
在此基础上,还有多种架构性方案降低助记词风险:
Passphrase protection (25th word):大多数助记词标准允许设置额外密码(25 个单词),与助记词组合生成密钥。攻击者只有助记词但没有密码,无法访问资金。密码需牢记或单独安全存放,相当于多了一道秘密,也要妥善保护。
Shamir's Secret Sharing:助记词可用密码学方法分成多份,单独一份无法恢复密钥,需满足一定阈值(如 5 选 3)才能恢复。这种方式能分散地理和托管风险。
Multi-signature wallets:与其只用单一助记词,不如采用多签架构,需多个独立密钥共同授权交易。单一密钥或助记词被攻破也无效。这不是简单加强助记词存储,而是彻底改变安全模型。
技术方案无法彻底解决的问题
助记词的安全最终取决于人的行为:选择存放位置、决定谁可以知晓、长期维护、遇到变故时及时更新。没有芯片能替你判断一张纸该放哪里。这一层的安全,最依赖用户自身,而非硬件。
系统整体视角
用城堡的隐喻串联这三层防御,可以清晰看到硬件钱包安全的实际工作原理,以及它的薄弱点。
The secure element is the keep:最坚固的核心,私钥实际存放之处,依靠工程设计抵御大多数攻击者,通常也是最难被攻破的一层。
Firmware integrity and secure boot are the outer walls:决定哪些代码能接近堡垒,确保芯片收到的指令都是合法的。没有外墙的城堡,再强的堡垒也难以防守。
The PIN and access controls are the gatehouse:人为把关,阻止未授权用户接触城堡。对随机入侵者很有效,对有针对性的威胁则作用有限。
The seed phrase is the secret passage:恢复通道,既可正当使用,也能让其他防线瞬间失效。一旦被知晓,安全性几乎只取决于其存放和知情人。
这种架构的实际后果是,系统的有效安全性并不取决于最强的一环,而是由面对实际威胁时最薄弱的一环决定。哪怕 Secure Element 通过 EAL6+ 认证,但助记词存在手机明文笔记里,保护力就等同于笔记本身,而与芯片无关。
钱包安全是一套系统。Secure Element 是其中最重要的组成部分。但“Secure Element 很强”并不等于“钱包很安全”,这完全是两回事。
Secure Element 之所以重要,是因为它解决了最难的部分:防止远程和物理技术攻击窃取私钥。但它只是更大系统中的一环,固件、访问控制和密钥备份同样需要重视。
理解系统,并不是否定硬件钱包或 Secure Element,而是提醒我们要重视整个体系,从每一层的作用和局限出发,才能真正做到安全。