跳转至内容

Tomu

来自 ArchWiki

Tomu 是一个开源 FIDO2 安全密钥系列。本文将介绍如何设置和使用它。目前,此页面仅限于原始 Tomu – 请帮助扩展它。

原始 Tomu

依赖

要构建 Tomu 镜像,您需要安装 arm-none-eabi-gccarm-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"
注意 某些 Tomu 程序(包括 U2F 代码)会设置 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 灯会亮起几秒钟,然后应用程序将收到响应。