Tomu
Tomu 是一个开源 FIDO2 安全密钥系列。本文将介绍如何设置和使用它。目前,此页面仅限于原始 Tomu – 请帮助扩展它。
原始 Tomu
依赖
要构建 Tomu 镜像,您需要安装 arm-none-eabi-gcc 和 arm-none-eabi-newlib。要将软件刷写到 Tomu 上,请使用 dfu-util。
验证
您的 Tomu 应该预装了 dfu-util。如果您将 Tomu 插入 USB 端口并且 toboot 启动,绿色和红色 LED 灯应交替闪烁。要检查您的 Tomu 是否运行着引导加载程序 toboot 以及其版本,请运行
# dfu-util --list
... Found DFU: [1209:70b1] ver=0101, devnum=19, cfg=1, intf=0, path="1-1.2", alt=0, name="Tomu Bootloader (5) v2.0-rc7", serial="UNKNOWN"
TOBOOT_CONFIG_FLAG_AUTORUN 标志并立即开始运行。这些程序将不会(有必要地)以这种方式闪烁,并且 dfu-util 将找不到它们!要在此类设备上进入 Toboot,请在将 Tomu 插入 USB 端口的同时,用镊子短接两个外引脚 [1]。更新引导加载程序 (toboot)
如果您的 Tomu 的引导加载程序不是最新版本,您应该更新它。您可以自行编译,或下载预编译版本。按如下方式安装更新:
# dfu-util -d 1209:70b1 -D toboot-booster.dfu
安装其他软件
如果您**不**想将 Tomu 用作 U2F 令牌,而是用于其他目的,您可以在 GitHub 上找到示例应用程序:GitHub。您可以使用 df-util 来安装它们。
# dfu-util -d 1209:70b1 -D application.dfu
安装 U2F 固件 (chopstx 端口)
Tomu 的 U2F 固件代码可以在 GitHub 上找到:GitHub。使用 git 克隆并编译它:
$ git clone https://github.com/im-tomu/chopstx.git $ cd chopstx/u2f $ make
您有两个选择:
- 无密钥刷写: 如果没有密钥进行刷写,固件将在首次启动时生成一个 EC 私钥,并在进入引导加载程序时将其擦除!您无法创建备份。但这有一个优点,就是密钥永远不会存在于 Tomu 之外。请务必有替代的第二因素或恢复方案。不丢失私钥就无法更新软件。
- 注入私钥: 在您的计算机上生成一个密钥,将其注入固件,然后一起刷写到 Tomu。
注入私钥 (可选)
生成您的私钥:
$ openssl ecparam -name prime256v1 -genkey -noout -outform der -out key.der
您可能希望将其加密备份和/或离线存储。将其注入构建:
$ ./inject_key.py --key key.der
刷写
您可以将软件刷写到设备:
# dfu-util -v -d 1209:70b1 -D build/u2f.bin
刷写成功后,LED 灯应该停止闪烁。将其移除并重新插入——使用 U2F 软件时,红色 LED 灯应只非常短暂而快速地闪烁。
更新或恢复
如果您注入了私钥,您可以重新构建软件并注入私钥。但是,您必须将计数器设置为至少比 Tomu 上的值高 1。
$ ./inject_key.py --key key.der --ctr 1001
如果您仍有原始 Tomu(即您想更新),您可以在 Yubikey 演示站点上找到计数器。否则,将其设置为一个“足够大”的值。
用法
您可以使用 https://webauthn.io/ 或 Yubikey 演示站点在终端上使用 pamu2fcfg 来测试您的 U2F 密钥。
插入 Tomu。当应用程序(例如您的浏览器)要求您按下按钮时,Tomu 上的红色 LED 开始闪烁。您现在必须按下“下部按钮”。电容式按钮是 Tomu 末端的四个触控区域。从带有芯片的一侧观看时,“下部”按钮位于底部。用手指按下它——可能很难够到——最坏的情况下可以使用金属螺丝刀或类似工具。按下后,红色 LED 灯会亮起几秒钟,然后应用程序将收到响应。