前言
物理安全密钥,是作为验证身份提高安全性的小玩意,当我第一次发现谷歌账号可以绑定安全密钥时我心里就痒痒的,物理安全密钥小巧的外观也很吸引人,再加上我很喜欢折腾各种各样的小东西,所以我一直很想要一个物理安全密钥,但苦于Yubikey贵得要死,而且没有开源相关内容内部是个黑箱,所以我一直没打算买个安全密钥。(要是把Yubikey价格后面的美元去掉我可能还会考虑买它,老外的东西就是这样,去掉货币单位价格刚好)
正好这阵子刷论坛时看到有人用RP2350制作物理密钥,发现挺简单的,再加上我自己本来就想要一个安全密钥,遂花32大洋买了个RP2350-One制作安全密钥,毕竟,能用几十块钱体验一把“小众产品”,何乐而不为?
不过鉴于制作教程网上很多了,大家都是重复的文章重复的内容没啥意思,所以本文的着重点是细节,以及后续使用。
制作教程来自此帖子,我仅作细节补充
制作
制作类教程网上很多,这里就简单重复一遍此帖子,着重说明重点
买硬件
Pico Keys 支持 RP2040 RP2350以及ESP32,但通常是使用树莓派芯片烧录。
芯片推荐选择RP2350,因为RP2040没有安全启动,也没有内置安全硬件,理论上可以直接读取出密钥;而RP2350则添加了安全启动,即从此只能运行此固件。另外RP2350还可以给固件签名,然后让此芯片只能运行签名过的固件,不能运行其他未签名存在安全隐患固件,以此提高安全性。(缺点就是麻烦,还有就是容易变砖)
当然ESP32系列也能做安全密钥,直接使用线刷跳过配置步骤,不过需要注意的是ESP32有爆出来过漏洞可以Flash直读密钥,这些要注意。
我选择的是RP2350-One做安全密钥,价格高达32大洋。

烧录、配置
- 下载固件
首先你要到Pico Keys官网下载固件,找到下载,Firmware固件类型选择Pico Fido,供应商和芯片型号根据实际填写,我选的是我买的微雪RP2350-One,然后点击Download下载uf2固件

- 烧录
按住Boot键然后把开发板插入电脑,此时它会被处理成一个U盘一样的设备,在文件管理器里出现过U盘图标打开,然后把固件拖进去,复制好后固件会自动加载,文件管理器窗口将会被关闭。
刷好后开发板上的灯应该会长亮,时不时灭一下,如果没有也不用紧张。
- 配置
前往 Pico Commissioner - Pico Keys进行调试需要设置几个值

- 设置 Vendor 为 YubiKey 4/5,这需要根据你的设备更改
- VID:PID 参考这篇文章 YubiKey USB ID 值 ,我们需要让电脑知道此设备是一个多协议YubiKey 5安全密钥,所以要将USB Vendor ID设置为YubiKey 的 USB ID 值,设置为
1050:0407
(YubiKey 5 NFC (OTP+FIDO+CCID)) - Product Name 设置为
yubico yubikey
,这样才能使用YubiKey软件管理 - LED brightness 是LED亮度设置,一般来说设置低一点避免瞎眼,如果有外壳可以考虑设置高一点,我是设置为
1
- Options 开启
LED dimmable
Secure Boot
Secure Lock
这三个选项,分别是LED控制、安全启动和安全锁,但开启Secure Boot前一定要考虑清楚,一旦开启,这个芯片从此以后只能使用 Pico Keys 官方签名过的固件,如果不希望从此只能运行官方固件但希望开启安全锁可以使用 自签名 )
然后点击Commission via WebUSB进行调试,设备选择pico keys。调试好后可以点击Commission via WebAuthn按钮进行测试,第一次使用Windows会让你设置PIN,也就是密码,之后使用此密钥、查看密钥信息都需要输入此PIN。
使用
好了,密钥制作完成,以上部分都是来自此帖子的,我仅作细节补充
此物理密钥使用起来很舒服,不用费劲巴拉的找手机获取2FA验证码,只需要插入物理密钥轻轻一按即可,小巧玲珑的可以很方便的携带(别弄丢了)。
不过为了保险起见建议做两个密钥,互相为备份不用担心丢了全抓瞎
Pico Keys兼容YubiKey,所以可以很方便的在 Yubico Authenticator, YubiKey Manager,ykman软件里管理密钥,我下载的是Yubico Authenticator,打开Yubico Authenticator可以看到页面很简洁,完全长在了我的审美上,一共有账户、通行密钥、槽位三大功能,接下来依次说明。
注意事项
注意,密钥的 S/N (序列号)是机密信息,最好不要在网上公开它。
密钥的使用方法是在需要按按键时按下Boot键,不要在插入时按,那是刷固件的。
另外Boot键没有长按功能,想要触发长按的话请连续按两下。
账户
此功能是生成OATH验证码(基于时间的动态2FA)或HOTP验证码(基于次数的动态2FA)
此功能是生成两步验证代码的,功能和谷歌的Google 身份验证器一样,不同的是两步验证密钥是存放在刚刚制作的物理安全密钥里,不会存在硬盘里。
此为基于时间的2FA动态验证码(OATH)

添加两步验证代码也很简单,点击右上角的添加账户即可,可以手动输入密钥,也可扫描二维码,为了安全性也可以设置下密码。
通行密钥
查看网站创建的通行密钥
通行密钥是你在网站上创建的,比如GitHub的通行密钥,进入此区域需要输入PIN,你可以在里面查看自己密钥凭证。注意哈,一定不要透露这里面的内容。

槽位
设置安全密钥的按键功能
最有意思的功能无疑是这个槽位设置了,它是设置按下按钮时触发的操作的,比如可以按下按钮自动输入一次性2FA密码。
它可以做到:
- 按下按键自动输入静态密码登录电脑
- 按下按键自动生成并输入基于次数的一次性2FA代码
- 自动应答验证…

这里拿自动输入密码登录电脑举例

选择短按或长按,设置静态密码,键盘选择US(英文键盘),然后输入你的电脑密码,这里可以勾选附加回车
,这样会自动回车。
效果:

按下按键会模拟键盘输入指定密码,并回车确认。
此密码数据完全存放于物理密钥中,不依赖任何软件,输入密码的过程是物理密钥模仿键盘输入的,不需要安装任何软件即可使用。(必须连接USB才能输入)
有两个槽位,一个是短按,另一个是长按,注意,长按Boot键没有效果的,自制的物理密钥要连续按两下。
自定义图标
自定义Yubico Authenticator里显示的图标,使其更易于管理
可以看到我的页面中各个服务都有它们的图标,看着一眼就知道是什么。

而Yubico Authenticator默认是没有图标只有字母的,需要手动自定义图标包,你可以选择去查看Aegis 图标包格式然后一个个自定义图标,也可以选择使用Aegis预制图标包
完毕
好了,折腾完毕,现在可以愉快的使用此物理密钥的各种功能了!按一下解锁电脑,按一下登录账号,真好玩不是么?
不过要记住不要把此密钥放在潮湿的地方,不然容易生锈损坏密钥,也不要傻乎乎的不备份把密钥丢了,虽然用密钥解锁电脑很帅,但等密钥丢了找密钥的样子也很狼狈
另外密钥的OATH、HOTP验证码功能真好用