>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Rust

如何将5美元的开发板变成硬件安全密钥

像YubiKey这样的硬件密钥要50到100美元,为了可靠性你通常还得买两个。如果只是想保护家庭服务器、通过硬件模块签署Git提交,或尝试使用Passkeys无密码登录,这个价格就让人肉疼了。最近发现了一个叫RS-Key的项目,它以一种令人惊喜的优雅方式解决了这个问题。

RS-Key operation diagram

这个项目能将任何基于树莓派RP2350微控制器的开发板变成全功能的USB令牌。你只需要下载一个现成的二进制文件,像普通U盘一样将其拖放到开发板上即可。无需焊接、编程器或从源码编译。

固件内部有什么

RS-Key采用Rust编写,不依赖标准库(rp2350-pac),模拟了一个复合USB设备。当将开发板插入电脑时,系统会同时识别多个接口:用于网页认证的FIDO HID、智能卡接口和键盘。

Board options for RS-Key

以下是这个小巧固件的功能:

  • FIDO2和WebAuthn。浏览器中支持Passkey登录、双因素认证,以及像age这样的硬件SSH密钥。物理存在确认通过开发板上的标准BOOT按钮实现。
  • OpenPGP 3.4智能卡。存储用于在Git中签署提交的密钥,通过GnuPG加密和解密文件。支持RSA和椭圆曲线。
  • PIV和OATH。实现X.509智能卡标准并生成TOTP和HOTP一次性验证码。通过特殊构建版本伪装VID/PID,设备可被标准Yubico工具如yubihsm-shell识别。
  • 种子备份。FIDO主密钥可导出为BIP-39或SLIP-39助记词短语,以便在开发板丢失时恢复访问。
  • 实验性后量子密码学。作者内置了ML-DSA-44和ML-DSA-65方案,针对RP2350内存优化了栈使用。

如何在几分钟内开始使用

首次启动过程很简单。准备任何基于RP2350的开发板(如Waveshare RP2350-One或Seeed XIAO RP2350),然后按照四个步骤操作:

  1. 从仓库的发布页面下载UF2文件文件。
  2. 按住开发板上的BOOT按钮,然后插入电脑的USB端口。系统会出现一个名为RPI-RP2的驱动器。
  3. rskey.uf2文件复制到这个驱动器。开发板会立即重启进入安全密钥模式。
  4. 打开测试网站webauthn.io,尝试注册新密钥,设置PIN码,然后按BOOT按钮确认触碰。

对于喜欢带屏幕设备的用户,Waveshare RP2350-Touch-LCD开发板有单独的构建版本。在这种情况下,登录确认和PIN输入直接在设备的显示屏上完成。

Screen operation demo

配置和主机软件

为了从终端管理密钥,仓库包含了一个Python工具rskey-cli和一个仪表板rskey-dashboard。这些工具可以查看设备状态、更改LED设置、生成备份和管理插槽。

如果你不喜欢命令行,第三方项目PicoForge提供了完整的图形界面来配置所有RS-Key模块。

PicoForge interface

对于手头还没有RP2350芯片的开发者,仓库中有一个模拟器在emulator文件夹里。它通过套接字或Linux虚拟USB(USB/IP)直接在PC上运行固件逻辑,这有助于在没有物理硬件的情况下测试集成。

局限性和威胁模型

项目作者在文档中坦诚警告:RP2350是一款通用微控制器,不是经过认证的安全芯片(安全元件)。

如果你潜在的对手拥有用于芯片去层、总线探测或功率故障注入的实验室设备,这块芯片就扛不住了。RS-Key无法防御实验室级别的芯片开封攻击。

话虽如此,RP2350芯片确实有OTP(一次性可编程熔丝)和安全启动功能。仓库记录了硬锁固件的详细过程,其中主密钥被烧录到OTP中,并且只允许启动由你签名的二进制文件。这使得简单的Flash转储在密钥被盗时毫无用处,但熔丝烧断操作是不可逆的。

谁会发现这个项目有用

RS-Key非常适合日常开发者任务:

  • 签署Git提交和标签,而不必担心私钥从笔记本硬盘泄露。
  • 通过硬件确认通过SSH访问服务器。
  • 家庭实验室、GitHub账户或邮箱的二步验证。
  • 通过真实的Rust代码学习CTAP2、WebAuthn和智能卡协议的工作原理。

如果你需要一块经济实惠的令牌用于工作或家庭实验室设置,廉价RP2350开发板和RS-Key固件的组合能让你花的每一分钱都物有所值。在国家级威胁下用它来保护企业机密是不明智的,但作为一个实用的开发者工具,这个项目绝对值得在你的钥匙扣上占有一席之地。

相关项目