30 块钱 DIY 一个物理安全密钥

· · 科技·工程

::::warning[警告]{open} (8/6更新)好像大家对这个价格有点误解。

这个跟正规牌子的差的还是挺远的,如果你的密钥被偷了的话,物理攻击是能盗取数据的。

不要对这个价格有一些误解,这个跟市面上的比不了的。

DIY 产品,风险还是得自己承担。 ::::

8/7 更新:修正了一些图片。笔者被 edge 默认的密码管理器坑了。想用这个一定要点击 使用其它方式保存

0. 什么是物理安全密钥?

物理安全密钥(Physical Security Key)是一种实体硬件设备,用于在登录在线账户或系统时验证你的身份。它通常外观像一个U盘或小型电子标签,是目前公认最安全的账户保护方式之一。

你可以把它理解为你数字身份的“物理钥匙”,其核心价值在于,即使你的密码被泄露,没有这个实体设备,攻击者也无法登录你的账户。

你也可以使用该物理安全密钥存储一些私钥,用于加密和签名。

本文的物理安全密钥指 FIDO2 标准的硬件安全密钥。

支持物理安全密钥的平台

为什么要自己做而不去买一个呢?

注意事项

自己制作的物理安全密钥的稳定性难以保证,建议保存好平台通常会提供的 Recovery Codes,防止出现“防住了别人,也防住了自己”的猎奇情况。

1. 购买原料

需要购买带有 RP2350 芯片、支持 USB 的开发板。比较推荐硬件厂商微雪。 型号可选:

不建议使用 RP2040 芯片。虽然也能运行,但 RP2350 新增了安全启动(Secure Boot) 和 OTP 存储,能更好地保护存储在芯片内的密钥材料(如 FIDO 私钥),物理安全性更高。

RP2350-Zero 的外观如下:

真的好小哎……

2. 固件选择

开源社区有几种流行的固件来提供物理安全密钥的功能

3. 下载固件

LibreKeys 官方文档 暂时还没有什么实质内容,不过有固件用就可以。

固件列表:Releases · librekeys/pico-fido-firmwares。

我们需要在 162 种固件中找到符合自己型号的固件,直接找 waveshare_rp2350 的固件,这里有 one/tiny/zero 型号的固件。建议选择有 eddsa 后缀的固件。

4. 刷入固件

按住开发板左侧的 boot 按钮,使用 USB 插入电脑,会发现出现一个叫做 RP2350 的盘。

刷写也是非常地简单,直接把下载的 uf2 格式固件复制进去就好了。

复制进去之后,文件资源浏览器立刻就关闭了,然后 LED 会开始闪动,等到开始持续闪烁蓝灯就 OK了(而且特别亮!)。

5. 配置固件

我们使用 picoforge 作为管理工具,可以去 Releases · librekeys/picoforge 中下载。例如 Windows 用户可以下载这个。

下载后进行安装即可。

然后,打开 picoforge 软件,注意,如果看见右上角 FIDO 没有显示任何内容,请关闭软件,并且 使用管理员权限 运行它。正常是这样的:

改个产品名字

然后我们点击左侧栏的 Configuration ,改改配置。

这似乎是必须的?

笔者测试过不经过这一步就去使用 WebAuthn,发现一直在打转,所以建议还是改一下。

设置个 PIN 密码

点击 Set up PIN,设置一个你忘不掉的数字密码。

6. 测试使用

如果图片不一样的话,注意一下点击 使用其它方式保存

打开 WebAuthn 官网,随便输一个用户名,点击 Register。会发现:

点击创建,按照提示来没有大问题。

点击 Authenticate 来测试密钥登录。

然后这样就成功了:

7. 使用 Yubico Authenticator

前往 Yubico Authenticator 下载安装该软件。

可以看到 Yubico Authenticator 也能识别我们的 DIY 安全密钥。

8. 注意事项:通行密钥未显示?

另外,如果你发现无论 PicoForge 还是 Yubico Authenticator 都没有显示你刚才在某些网站上绑定的密钥,不要慌张,这是因为有不同的显示方式,由网站决定。

测试过 洛谷应该会显示的

至于其他玩法,例如 OTP,比较简单,建议读者自行探索。

9. 给它搞个外壳

裸露的电路板未免有点吓人,而且还容易坏掉,所以建议给它搞个外壳。

在 3D 打印相关的社区中已经有一些现成的外壳模型了。

如果没有自己的 3D 打印机,也可以去找一些打印服务商帮你打印,淘宝上就有不少。

笔者砍价能力不行,又花了 30 元去打印外壳。实际发现可以接着砍价砍到 20……

当然如果你使用 外星科技 纸皮 + 胶水,也可以 DIY 一个外壳的。

RP2350-Zero + 外壳成品如图。

注意事项

电路板边缘有些小突起,导致电路板差一点点才能塞进去,建议打磨一下电路板边缘,包括左右边缘和后边缘。

笔者这里使用了磨刀石。

这个上下外壳似乎并不需要胶水,因为它们卡得很死。

后记

笔者后面还尝试了 RS-Key 固件,这个固件使用也不错。它支持更多功能,例如储存 OpenPGP 密钥,可以用来进行一些数字签名的操作。

这是笔者第一次写 DIY 硬件类型的文章,可能写得有点乱……

也发于笔者的个人博客 tobylai.fun 上。

© 2024–2026 Tobylai. 保留所有权利。

内容采用 知识共享署名 4.0 国际许可协议(CC BY 4.0)。

https://www.tobylai.fun/blog/2026-07-31-diy-rp2350-sk/