关于OpenSK
OpenSK 于2020 年 1 月 30 日由Google发布。它是一个完全开源的 FIDO 安全密钥实现,包括硬件和软件。
OpenSK 的固件是用 Rust 开发的,它同时实现了 FIDO U2F 和 FIDO2规范。
硬件选择
咱这次使用的是一块 “Nordic nRF52840 Dongle” 。 (也就是下面演示所使用的)
不过网上的其他人似乎更喜欢”nRF52840 MDK USB Dongle”这款国货之光?! 看上去好看点,并且有自带外壳版本,想整的看看价格合适不合适!
如果你手上的和咱一样是”Nordic nRF52840 Dongle”或者国产类似的版本,欢迎您继续看下去。如果是”nRF52840 MDK USB Dongle”建议参考国内其他博客及官网的教程,不用看咱这边那么麻烦的部署。
然后这一块板子其实挺强大的,除了可以做安全密钥,还有非常非常多的项目可以玩耍。
比如 nRF5 SDK、OpenThread(边界路由器)、Web Bluetooth、iBeacon、Eddystone 等等很多..
软件部署
然后咱在mac只能成功构建出develop分支,x86 mac没人权 确信)
WSL事先准备(配置USB设备直通)
在Windows中操作:
WSL 本身并不支持连接 USB 设备,因此你需要安装开源 usbipd-win 项目。
- 转到 usbipd-win 项目的最新发布页。
- 选择 .msi 文件,该文件将下载安装程序。 (你可能会收到一条警告,要求你确认你信任此下载)。
- 运行下载的 usbipd-win_x.msi 安装程序文件。
或者,也可使用 Windows 程序包管理器程序 (winget) 来安装 usbipd-win 项目。 如果已安装 winget,只需使用命令 winget install --interactive --exact dorssel.usbipd-win
安装 usbipd-win 即可。 如果你省略了 –interactive,winget 可能会立即重启计算机(如果这是安装驱动程序所必需的操作)。
Linux中操作:
进入系统中执行
sudo apt install linux-tools-virtual hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20
WSL直通USB设备
在Windows下以管理员身份打开“终端”PowerShell
输入” usbipd wsl list “
会得到一个如上图的list,接下来找到 USB串行设备 (一般是这个,当然你有一堆串口设备就自己找下把w) 记住左边的ID。
接下来输入” usbipd wsl attach –busid 上面看到的ID “
现在设备应该就已经直通到WSL里。
基础环境准备
- rustup(可以与Rustup一起安装)
- python3 和 pip(可以
python3-pip
在 Debian 上随包一起安装) - OpenSSL 命令行工具(可以使用 Debian 上的
libssl-dev
和软件包安装和配置)pkg-config
nrfutil
(可以使用安装pip3 install nrfutil
)如果你想用 DFU 刷新设备uuid-runtime
如果您缺少uuidgen
命令。
下面就正式开始了(Mac和Linux基本一样)
#Install Rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
#Python3 和 pip (Mac基本自带了,下面是Debian按照命令) 及其他
apt install python3-pip libssl-dev pkg-config
#安装nrfutil
pip3 install nrfutil
开始创建!
建议国内提前配置代理或者镜像(要下载的包挺多的)
git clone https://github.com/google/OpenSK.git
cd OpenSK
./setup.sh
接下来稍等即可w
如果是Linux用户则还需要进行下面的操作(您需要安装一个udev
规则文件以允许非 root 用户与 OpenSK 设备进行交互。)
sudo cp rules.d/55-opensk.rules /etc/udev/rules.d/
sudo udevadm control --reload
如果在第二条命令的时候提示”Failed to send reload request: No such file or directory”则先执行一次”sudo udevadm control –reload”再次执行即可解决w
正式创建!
接下来插好你的DIY安全密钥(WSL用户请把设备挂载到WSL主机里,上面的步骤)! 在刚刚的地方继续!
./deploy.py --board=nrf52840_dongle_dfu --opensk --programmer=nordicdfu
敲下这条命令,只需要稍等(会再要求确认一次Enter)下,你的下一代”YubiKey”就完成了!
至此,你的密钥应该就做好啦~,拔下来重新插入,然后到处去玩把!
如何测试
当然w,你也可以跳过这一步,直接就去把这个Key绑在你的各个账户上w 生产环境当测试w
想要试试的可以打开这个网址 https://webauthn.io/ 然后输入个名字 点下即可开始测试w
需要授权的时候,这不比”YubiKey”酷炫多了!
未完成Incomplete….(之后会在此处更新咱的外壳,定了个绿色的w)
参考
https://learn.microsoft.com/zh-cn/windows/wsl/connect-usb
https://github.com/dorssel/usbipd-win