32元制作一个超好玩的物理安全密钥Pico Keys


前言

物理安全密钥,是作为验证身份提高安全性的小玩意,当我第一次发现谷歌账号可以绑定安全密钥时我心里就痒痒的,物理安全密钥小巧的外观也很吸引人,再加上我很喜欢折腾各种各样的小东西,所以我一直很想要一个物理安全密钥,但苦于Yubikey贵得要死,而且没有开源相关内容内部是个黑箱,所以我一直没打算买个安全密钥。(要是把Yubikey价格后面的美元去掉我可能还会考虑买它,老外的东西就是这样,去掉货币单位价格刚好)

正好这阵子刷论坛时看到有人用RP2350制作物理密钥,发现挺简单的,再加上我自己本来就想要一个安全密钥,遂花32大洋买了个RP2350-One制作安全密钥,毕竟,能用几十块钱体验一把“小众产品”,何乐而不为?

不过鉴于制作教程网上很多了,大家都是重复的文章重复的内容没啥意思,所以本文的着重点是细节,以及后续使用。

制作教程来自此帖子,我仅作细节补充

制作

制作类教程网上很多,这里就简单重复一遍此帖子,着重说明重点

买硬件

Pico Keys 支持 RP2040 RP2350以及ESP32,但通常是使用树莓派芯片烧录。

芯片推荐选择RP2350,因为RP2040没有安全启动,也没有内置安全硬件,理论上可以直接读取出密钥;而RP2350则添加了安全启动,即从此只能运行此固件。另外RP2350还可以给固件签名,然后让此芯片只能运行签名过的固件,不能运行其他未签名存在安全隐患固件,以此提高安全性。(缺点就是麻烦,还有就是容易变砖)

当然ESP32系列也能做安全密钥,直接使用线刷跳过配置步骤,不过需要注意的是ESP32有爆出来过漏洞可以Flash直读密钥,这些要注意。

我选择的是RP2350-One做安全密钥,价格高达32大洋。

烧录、配置

  1. 下载固件

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

  1. 烧录

按住Boot键然后把开发板插入电脑,此时它会被处理成一个U盘一样的设备,在文件管理器里出现过U盘图标打开,然后把固件拖进去,复制好后固件会自动加载,文件管理器窗口将会被关闭。

刷好后开发板上的灯应该会长亮,时不时灭一下,如果没有也不用紧张。

  1. 配置

前往 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 Managerykman软件里管理密钥,我下载的是Yubico Authenticator,打开Yubico Authenticator可以看到页面很简洁,完全长在了我的审美上,一共有账户、通行密钥、槽位三大功能,接下来依次说明。

注意事项

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

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

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

账户

此功能是生成OATH验证码(基于时间的动态2FA)或HOTP验证码(基于次数的动态2FA)

此功能是生成两步验证代码的,功能和谷歌的Google 身份验证器一样,不同的是两步验证密钥是存放在刚刚制作的物理安全密钥里,不会存在硬盘里。

此为基于时间的2FA动态验证码(OATH)

添加两步验证代码也很简单,点击右上角的添加账户即可,可以手动输入密钥,也可扫描二维码,为了安全性也可以设置下密码。

通行密钥

查看网站创建的通行密钥

通行密钥是你在网站上创建的,比如GitHub的通行密钥,进入此区域需要输入PIN,你可以在里面查看自己密钥凭证。注意哈,一定不要透露这里面的内容。

槽位

设置安全密钥的按键功能

最有意思的功能无疑是这个槽位设置了,它是设置按下按钮时触发的操作的,比如可以按下按钮自动输入一次性2FA密码。

它可以做到:

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

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

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

效果:

按下按键会模拟键盘输入指定密码,并回车确认。

此密码数据完全存放于物理密钥中,不依赖任何软件,输入密码的过程是物理密钥模仿键盘输入的,不需要安装任何软件即可使用。(必须连接USB才能输入)

有两个槽位,一个是短按,另一个是长按,注意,长按Boot键没有效果的,自制的物理密钥要连续按两下。

自定义图标

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

可以看到我的页面中各个服务都有它们的图标,看着一眼就知道是什么。

而Yubico Authenticator默认是没有图标只有字母的,需要手动自定义图标包,你可以选择去查看Aegis 图标包格式然后一个个自定义图标,也可以选择使用Aegis预制图标包

完毕

好了,折腾完毕,现在可以愉快的使用此物理密钥的各种功能了!按一下解锁电脑,按一下登录账号,真好玩不是么?

不过要记住不要把此密钥放在潮湿的地方,不然容易生锈损坏密钥,也不要傻乎乎的不备份把密钥丢了,虽然用密钥解锁电脑很帅,但等密钥丢了找密钥的样子也很狼狈

另外密钥的OATH、HOTP验证码功能真好用



  目录