一直想买一个yubikey,但苦于其高昂的价格一直没能入手,最近突然看到Google的开源FIFO验证器google/OpenSk,可以实现 yubikey的功能,但是所需要的硬件却更便宜,所以就动了心思。
准备硬件
- 一台*nix电脑,OpenSk似乎不能在Win上编译,当然你也可以使用WSL2/虚拟机,关于如何把USB透进WSL2可以看我上篇文章
- 一个nRF52840开发版,opensk官方使用的是Nordic(我买的是这个),同样受支持的还有makerdairy的,感觉他的资料比Nordic还全一些,裸板便宜了10块钱,但是加了个壳贵了50??? 但是一堆国产的就不敢说了,我也没上这种灵车。
- 一个编程器,如Jlink(可选,救砖用)
- 3D打印一个外壳(可选,模型见 https://www.thingiverse.com/thing:4132768 )
编译和安装
首先插上你的开发版,看到开发版上红灯闪烁,并且在设备管理能看到 Open DFU Bootloader
即可刷入系统
准备依赖
## rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
## nrfutil
pip3 install nrfutil
编译
git clone https://github.com/google/OpenSK && cd OpenSK
./setup.sh
# 这里会在crypto_data/里生成私钥和公钥,如果需要使用自己的,请替换`opensk_cert.pem`和`opensk.key`
./deploy.py --board=nrf52840_dongle_dfu --opensk --programmer=nordicdfu
# 官方文档属实不行嗷,翻了半天issues才看到这个可以不用外接编程器
# 如果你有买jlink之类的编程器
brew tap homebrew/cask-drivers
brew cask install segger-jlink
./deploy.py --board=nrf52840_dongle --opensk
# 如果在使用linux,还需要添加udev规则以供普通用户使用
sudo cp rules.d/55-opensk.rules /etc/udev/rules.d/
sudo udevadm control --reload
# 如果需要更新opensk,按住主按钮后面的Reset按钮,插入电脑,进入DFU模式就可以刷机了
结束后重新插入板子,可以看到板子上的灯不闪了,设备管理里面显示的是OpenSK
测试
OpenSK所支持的协议有测试demo可用
Webauthn: https://webauthn.io/
U2F: https://mdp.github.io/u2fdemo/
实际使用
OpenSK所支持的协议主要用于Web登陆的2FA,就我简单的测试来看, 1Password, GitHub, Cloudflare这类支持FIDO的网站和GitLab这类支持U2F都可以通过验证。
但是它没有本地验证的功能(可以用Windows Hello),不能用来登陆(macOS从10.15封禁了这类方法,yubikey也不能用来登陆mac), ssh和sudo,比起yubikey差了许多,不过既然是Google的开源项目,应该不会很快弃坑,期待下一步的发展
最后一次更新于2020-08-01
没有NFC,有机上用不了呢。
By 世界不过是一支筒风琴 at February 2nd, 2022 at 01:24 pm.
楼主,好像漏了一个导入证书的命令,
./tools/configure.py \
--certificate=crypto_data/opensk_cert.pem \
--private-key=crypto_data/opensk.key
我这边的情况是不加这个命令的话在Google账户上面无法导入
By aone98 at September 24th, 2021 at 04:18 pm.