深色模式
安全保障
YuerKey 从硬件到软件采用了多层安全设计。本页面用通俗的语言解释设备如何保护你的数据,帮助你了解这些安全机制背后的思路。
你的数据如何被保护
硬件级加密
设备使用 eFuse 硬件密钥进行加密。eFuse 是一种一次性写入的存储单元,写入后物理不可逆,即使拆开设备、用专业设备探测芯片也无法读取原始密钥。
所有存储在设备中的内容——密码、密钥、OTP 令牌——都使用 AES-256 加密。每条密码、每个密钥都有独立的加密保护,互不影响。即使某条记录的加密被理论上突破,也不会波及其他数据。
设备还支持可选的外置安全芯片(SE050 或 ATECC608),将最敏感的密钥操作隔离在独立的硬件中执行,提供额外一层防护。
安全启动
设备采用 Secure Boot v2 安全启动机制。每次开机时,芯片会验证固件的数字签名,确保设备只运行经过官方签名的固件。任何被篡改的固件都无法通过验证,设备会拒绝启动。
存储芯片中的所有数据受 Flash 加密 保护。即使有人将存储芯片拆下并直接读取,看到的也只是加密后的乱码。
固件更新(OTA)同样受到严格保护:设备与服务器之间使用 双向证书认证(mTLS),确保只从可信的服务器下载固件;下载的固件还需通过 数字签名验证 才会被安装。
内存隔离
设备支持双世界内存隔离架构,类似于手机中的"安全区域"概念:
- 安全世界:执行所有密码学运算,存放密钥材料。普通程序完全无法访问这个区域。
- 普通世界:运行用户界面、USB 通信等常规功能。
这意味着,即使应用层存在软件漏洞,攻击者也无法穿越世界边界触及你的密钥。密钥始终在安全世界中使用,从不暴露给外部。
PIN 保护
设备支持 PIN 码锁定。输入正确的 PIN 才能解锁设备、使用密钥和查看密码。
PIN 验证使用 Argon2id 算法——这是目前公认最强的密码哈希算法之一。它故意消耗大量内存和计算资源,使得暴力破解变得极其昂贵且缓慢。即使攻击者拥有专用硬件,逐一尝试所有可能的 PIN 组合也需要不可接受的时间。
此外,连续多次输入错误 PIN 后,设备会自动进入冷却期,强制等待一段时间才能再次尝试,有效阻止自动化攻击工具。
物理确认
对于危险操作——比如使用密钥签名、解密数据、自动输入密码——设备会要求你在屏幕上确认或按下物理按键。
这道防线的意义在于:即使你的电脑被恶意软件感染,它也无法在后台偷偷使用你的密钥。每一次敏感操作都需要你本人在设备上明确同意。没有你的物理参与,任何软件都无法调用你的密钥。
如果设备丢失了怎么办
设备丢失令人担忧,但 YuerKey 的多层保护确保拾获者无法轻易获取你的数据:
- PIN + 硬件加密双重保护:没有正确的 PIN,无法解锁设备;即使绕过 PIN,存储的数据也受硬件加密保护,无法直接读取。
- 注册多个安全密钥:建议在每个服务上注册至少两个安全密钥(一个日常使用,一个放在安全的地方作为备份)。各大服务如 Google、GitHub、Microsoft 都支持绑定多个安全密钥。
- 保留 GPG 主密钥备份:如果你使用 OpenPGP 功能,应在将密钥导入设备之前,导出主密钥并安全保存在离线介质上(如加密 U 盘)。设备中的密钥无法导出。
- 及时移除绑定:发现设备丢失后,应尽快登录各服务的安全设置,移除丢失设备的安全密钥绑定,防止他人在破解后使用。
安全设计原则
YuerKey 的安全架构遵循三条核心原则:
最小特权
每个软件模块只能访问它完成工作所必需的资源。USB 通信模块无法触及加密密钥,界面显示模块无法读取密码原文。即使某个模块被攻破,攻击者能获取的信息也极为有限。
纵深防御
安全不依赖单一机制,而是多层叠加。从安全启动、Flash 加密、内存隔离、PIN 保护到物理确认,每一层都是独立的防线。突破其中一层不会导致整个系统失守——攻击者还需要面对其余所有防线。
零信任
设备不信任任何外部输入。来自电脑的指令、来自网络的数据、来自蓝牙的连接请求——所有外部通信都经过严格的签名验证和权限检查。设备始终假设外部环境可能是恶意的,只在验证通过后才执行操作。
信任与透明
YuerKey 的固件目前不开源。这意味着你无法直接阅读源代码来验证设备的行为。我们理解这会引发信任问题——"我怎么知道固件里没有后门?"
坦率地说,没有任何硬件安全密钥厂商能绝对"证明"固件无后门。YubiKey 同样是闭源固件,用户信任的是 Yubico 这个品牌和它背后的认证体系。对于 YuerKey,我们选择通过以下方式建立信任:
签名密钥不可复制
YuerKey 的固件必须经过数字签名才能运行。签名使用的私钥存储在一枚独立的硬件安全密钥的安全芯片中,物理上不可导出——即使是开发者本人也无法将私钥复制出来。
这意味着:
- 全世界只有这一枚物理密钥能签出合法的 YuerKey 固件
- 没有任何第三方能够制作通过签名验证的固件
- 固件签名的公钥是公开的,任何人都可以验证某个固件是否由官方签发
固件一致性可验证
每个固件版本发布时,我们会同时公开该版本的 SHA-256 哈希值。你可以通过设备的诊断功能查看当前运行固件的哈希,并与官方公布的值进行比对。
如果两者一致,说明你设备上运行的固件与所有其他用户的完全相同——不存在"给某个用户特供后门版本"的可能。
安全架构公开可评估
虽然源代码不开源,但 YuerKey 的安全架构设计是完全公开的:
- 密钥如何保护:eFuse 硬件密钥 → HMAC 派生 → 双层加密,完整的信任链条可供安全专家评估
- 隔离如何实现:World0/World1 双世界隔离的具体机制、权限划分、系统调用接口均有详细文档
- 每个协议如何工作:FIDO2、OpenPGP、PIV、HSM 的实现架构都有独立的技术文档
公开架构设计而非实现细节,是安全领域的常见做法——密码学的安全性应当建立在算法和架构的公开审视之上(Kerckhoffs 原则),而非依赖实现的保密。
已知问题主动披露
我们维护了一份详细的内部安全审计记录,涵盖每个功能模块的已知安全问题及其严重程度。发现问题后会在版本更新中修复,并在更新日志中说明。
主动披露已知缺陷而非假装完美,是我们认为比"声称零漏洞"更诚实、也更负责任的做法。
正在开发但尚未启用的保护层
诚实地告诉你:YuerKey 的安全体系并不完整。我们正在开发一项重要的保护机制,目前尚未启用。我们选择公开说明这件事,而不是等它完成后再提。
这是什么
硬件安全密钥的历史告诉我们:攻击者最常命中的并不是密码学本身,而是协议解析代码。设备通过 USB 和电脑通信时,需要解析大量的消息格式(CTAP、APDU、CBOR 等)。任何解析代码里的 bug 都可能被恶意主机利用,让攻击者读取设备内存中的密钥。
我们正在开发一种运行时内存隔离机制,利用设备的硬件权限控制功能,把协议解析代码运行在一个"非特权"环境中。即使这段代码存在漏洞,硬件也会阻止它访问密钥存储区——攻击者拿到的只是一个被隔离的沙箱。
当前状态:已推迟
坦白地说,我们尝试过,但遇到了技术难题。硬件隔离功能对软件架构有特定假设,而 YuerKey 当前的代码结构与这些假设不完全匹配。要做对需要较大的重构。
我们做了一个取舍:优先保证当前版本的稳定性和功能完整度,把这项隔离推迟到产品核心功能稳定后再进行。具体启动时机会在 release notes 中公告。
为什么告诉你这些
我们本可以等做完了再提,或者干脆不提。选择公开是因为:
- 你今天购买的 YuerKey,在这项隔离完成之前,理论上仍然存在"协议栈 bug 导致密钥泄露"的攻击面
- 但这类攻击需要攻击者同时具备:(1) 对你设备的 USB 物理访问、(2) 尚未被发现的协议解析漏洞、(3) 专门针对 YuerKey 的攻击工具
- 对普通用户而言,前面描述的其他安全层(Secure Boot、Flash 加密、eFuse 绑定、按记录加密、PIN 保护)已经构成了可靠的纵深防御
- 我们相信告诉你完整的事实比营造"一切都完美"的印象更有意义
与 YubiKey 对比
作为参考:YubiKey 5 系列直到 2024 年也没有运行时 TEE(可信执行环境)。它们依赖的是 Infineon SLE78 安全芯片、不可更新的固件、FIPS 认证和严格的供应链控制。运行时内存隔离对硬件安全密钥来说是锦上添花,不是基础要求。
我们把它列入 roadmap,是希望 YuerKey 做得更好,而不是在说"不做就不安全"。
如果你仍然无法信任闭源固件
我们完全理解。如果你对闭源固件有顾虑,以下是一些开源替代方案:
- Nitrokey 3:固件和硬件设计完全开源,使用 Rust 编写,支持 FIDO2
- SoloKeys v2:固件开源,支持 FIDO2,提供"Hacker"版本允许自定义固件
选择安全密钥最重要的是你对它的信任。如果开源方案更符合你的信任模型,我们鼓励你选择它们——它们同样是优秀的产品。使用任何安全密钥,都比不使用安全密钥更安全。