如何复制Pico Key(Pico Fido Security Key)

背景

大部分的商业USB Security Key都是无法复制的,这是个很好的安全功能。但如果在不考虑物理密钥被盗或者类似的情况下,这类安全密钥的备份方法只有一种:就是为同一个安全项目添加多个物理密钥,一旦某个坏了或者丢了,就可以用另一个来登录。这也是我一直很抗拒这种安全设定的一个原因,直到有了Pico Fido项目,基于Pico Fido的USB Security Key其实可以很方便的完整备份。

步骤

1.准备好Raspi Pico tool.

官方并没有提供现成的二进制文件,linux用户编译应该是比较方便的。windows用户建议安装msys2,然后参考Getting started with pico 里面Appendix A编译openocd部分的操作准备编译环境,缺什么就装什么。最后编译下来也是很容易的。

Update:

后来我发现,其实官方的PICO SDK Windows版本里就已经自带了picotool,安装好Windows版本的SDK就可以在下面的目录找到了:

C:\Program Files\Raspberry Pi\Pico SDK v1.5.1\picotool

2.准备好Zadig驱动.

按住bootsel按键插入你的pico key,把RP2 Boot设备的驱动替换成WinUSB驱动,注意这里会有两个interface,只需要替换interface1即可。

如图:

pico bootsel驱动替换

3.导出SPI Flash内文件.

一条命令即可,dump.bin这个文件名是可以随意定义的。

picotool.exe save -a dump.bin

4.复制。

换上一个新的pico key,同样需要按住bootsel按键进入bootsel模式,把dump出的的bin文件烧录进去。

picotool.exe load dump.bin

克隆之前可以在webauthn网站上注册一下你的pico key,这样可以验证克隆是否成功。