前言

咱其实很久之前就知道了这个东西,一个形似U盘的物理密钥,类似于加密狗的功能,可以插入后跳过登录验证什么的,但是这东西在国内很小众,所以也就仅限了解了就没下文,直到后来看到了群友分享了自己的极其昂贵的 Yubikey ,咱就也想整一个玩玩,虽然商业方案很贵,但是咱相信现在社区应该已经有了很不错的开源方案,简单了解过后,咱发现 Raspberry Pi 的 RP2350是个很不错的选择

为什么选择RP2350?

这里直接列出一个表格来说明一下它们直接的区别

项目RP2350RP2040YubiKeyPicoKeys / 开源方案
平台Raspberry Pi 新一代 MCURaspberry Pi 首代 MCU商业安全密钥开源安全密钥方案(MCU + 安全芯片/固件)
架构双核 ARM Cortex-M33 + 可选 RISC-V双核 ARM Cortex-M0+内置安全芯片 + MCUMCU(RP2040 / STM32 等)+ 加密处理
内存520 KB SRAM,多银行264 KB SRAM内置安全存储、固件取决硬件设计(可能有外部闪存/EEPROM)
安全特性Secure Boot、OTP 存储、TrustZone、TRNG、抗故障/抗干扰无硬件安全特性专用安全模块、防物理攻击可通过安全芯片/防护设计增强
抗攻击能力有硬件抗干扰,社区测试过弱,几乎无保护高,成熟防护机制取决设计是否加入安全防护
生态新兴平台,开源社区支持增强成熟生态,文档丰富厂商支持完善,认证齐全开源社区多样,有成熟项目也有实验性项目
成本略高于 RP2040,板级成本可控极低取决组件,可比商业密钥便宜

从上表可以看出,RP2350 在成本和安全性之间找到了一个较好的平衡——既比商业成品便宜,又提供了硬件安全特性,是开源 PassKey 项目的理想选择。

但是通用 MCU,例如RP2350,本身只是一个基础硬件,只不过提供了安全能力,可以用于自制 PassKey,而为了实现PassKey的功能,是需要刷入PicoKeys的固件的。

不过上面咱没提ESP32的事,ESP32系列当然也能做安全密钥,还能直接使用线刷跳过配置步骤,但是ESP32有爆出来过漏洞可以Flash直读密钥。

硬件购买

硬件上选择的是微雪RP2350-One,价格仅需32CNY

微雪RP2350-One

1. 烧录

下载固件

PickKeys官网下载固件,往下滑找到下载固件, Firmware 固件类型选择 Pico Fido ,供应商和芯片型号根据实际填写,咱选的是微雪RP2350-One,然后点击 Download 下载uf2固件

下载固件的区域

刷入固件

微雪RP2350-One上面有两个按钮,一个是Boot,一个是Reset,按住Boot插入电脑后,你会发现出现了一个127MB大小的盘,把固件拖进去即可,会自动刷入,刷好后开发板上的灯应该会长亮,时不时灭一下,如果没有也不用紧张

然后就刷好啦,刷入固件就这么简单

2. 配置固件

访问 Picokeys 官网的在线调试工具 Pico Commissioner 来配置一下固件设置

如图设置即可

配置说明

  • Vendor设置为YubiKey 4/5,因为咱们要刷的就是YubiKey,后续可以通过YubiKey的软件管理咱们的PicoKey
  • LED brightness是LED亮度,如你所见,默认亮度非常瞎眼,所以设置到1
  • 勾上LED dimmableSecure Boot²Secure Lock²Power Cycle on Reset³,具体有什么用可以 Baidu/Google
  • Product Name设置为 Yubico YubiKey

Secure BootSecure Lock 是为了防止提取密钥的

但是开启 Secure Boot 前一定要考虑清楚,开启后只能运行官方签名固件,安全性高,但限制了自定义固件,如果不希望从此只能运行官方固件但希望开启安全锁可以使用 自签名

配置好后点击Commission via WebUSB,设备选择Pico Key

设备选择

如果点击后没有出现Commissioned successfully的提示

请改用安卓手机进行调试,至于怎么把USB插入手机嘛,用OTG就可以了,咱这里就出现了这个问题,最后是使用手机调试好的

手机调试成功

3. 测试

配置好后,重新拔插一下,然后点击 Commission via WebAuthn 进行测试,不过这个测试只是测试可用而已,如果要功能测试,还是需要去其他网站,例如 WebAuthnToken2

需要注意第一次使用Windows会让你设置PIN,也就是主密码,之后使用此密钥、查看密钥信息都需要输入此PIN,当然后面也可以改,但通常不建议,因为改的次数是有限的

这里以WebAuthn为例,在输入框随便输入一个用户名,先点击Register,也就是注册

注册

然后保存密钥后,点击Authenticate登录测试

登录成功

看到图示界面即登陆成功

此时已经可以恭喜你做好了一个属于你的PicoKey了,而且兼容YubiKey

功能

主页

Pico Keys兼容YubiKey,所以可以很方便的在 Yubico Authenticator YubiKey Managerykman软件里管理密钥,咱使用的是 Yubico Authenticator

Yubico Authenticator主页

注意,密钥的 S/N (序列号)是机密信息,最好不要在网上公开它,所以在此咱打了码。

密钥的使用方法是在需要按按键时按下Boot键,不要在插入时按,那是刷固件的操作。

另外Boot键没有长按功能,想要触发长按的话请连续按两下。

OTP账户

此功能是生成OATH验证码(基于时间的动态2FA)或HOTP验证码(基于次数的动态2FA)
功能和谷歌的Google 身份验证器一样,不同的是两步验证密钥是存放在刚刚制作的物理安全密钥里,不会存在本地硬盘里

在这里你可以添加OTP账户

OTP账户界面

通行密钥

通行密钥是保存在密钥里面的密钥凭证,访问此区域需要输入PIN,你可以在里面查看自己密钥凭证,请不要随意泄露这里的信息

在这里你可以删除密钥或者更改你的PIN

密钥界面

槽位

这是一个比较有意思的功能,可以设置密钥上的物理按键的功能

它可以做到:

  1. 按下按键自动输入静态密码登录电脑
  2. 按下按键自动生成并输入基于次数的一次性2FA代码
  3. 自动应答验证…

槽位界面

槽位功能

自定义图标

自定义Yubico Authenticator里显示的图标,使其更易于管理

Yubico Authenticator默认图标非常不方便看出是哪家,但是你可以通过手动自定义图标包,可以选择去查看Aegis 图标包格式然后一个个自定义图标,或者选择使用Aegis图标包

咱懒,直接选择了Aegis图标包

自定义图标设置

Aegis的效果

最后

折腾完啦,只花了32CNY就获得了一个媲美Yubikey物理密钥的PassKey,安全性也不算差,而且挺好玩的,此外这个其实社区是有3D打印外壳的,感兴趣的话,可以自己去看看哦~

需要注意如果是裸着开发板的情况,请不要放到潮湿的地方,还有,请不要把物理密钥当做是唯一手段,这个东西丢了是真的丢了,做好备份,多套方案才是好的习惯

最后修改:2025 年 10 月 08 日
我很可爱,请给我钱(bushi)