跳转至内容

Tillitis TKey

来自 ArchWiki

TKey 是一款 TKey 是一个 开源硬件 和开源软件的 USB 安全密钥,可以支持如 SSH 登录、Ed25519 数字签名、信任根 (Root of Trust)、FIDO2 等用例。TKey 的软件、电路板设计、FPGA verilog 和固件由 Tillitis 发布。

TKey 的 威胁模型,例如对信任的假设和攻击向量,由 Tillitis 指定

由于 TKey 没有持久化存储,其输出是从任何输入和一个独特的设备密钥 (UDS) 计算得出的,请参阅 Tillitis TKey 开发者手册。每次将 TKey 插入计算机时,都必须加载一个设备应用程序到其中。设备应用程序加载后,TKey 会根据设备应用程序二进制代码的哈希值、UDS 以及可能的用户提供的密钥 (USS) 来计算复合设备标识符 (CDI)。然后,CDI 可供设备应用程序使用,例如用于派生私钥。

警告 如果设备应用程序的代码发生变化,CDI 也会随之改变。这将导致您无法访问使用此特定设备应用程序和 TKey 登录的任何帐户。例如,如果您使用 TKey 和 tkey-ssh-agent 版本 41 进行 ssh 登录,然后升级到 tkey-ssh-agent 版本 42(其中设备应用程序已更改),您将无法登录您的 ssh 帐户。应 备份 程序包版本并防止其升级,请参阅 Pacman#跳过程序包升级

首次使用

TKey 使用设备签名进行标识

$ lsusb | grep Tillitis
Bus 008 Device 001: ID 1207:8887 Tillitis MTA1-USB-V1

并可以通过类似 /dev/ttyACM0 的串行端口访问。要使用 TKey,请将您自己添加到 uucp 用户组

更推荐使用针对供应商 1207 和产品 8887udev 规则,该规则可以使设备 对普通用户可写

使用 tkey-verification 进行验证

为了测试设备是否设置正确,建议运行由供应商提供的 tkey-verification 程序,该程序打包在 tkey-verification-binAUR 中。除了对 TKey 进行功能性检查外,该软件还可以验证 TKey 是否包含与生产时相同的固件,从而确保 TKey 上的固件未被篡改。

$ tkey-verification verify
...
TKey is genuine!

应用程序

本节介绍一些可用工具的使用方法。

tkey-ssh-agent

TKey 可以使用 tkey-ssh-agentAUR 对 SSH 代理请求进行身份验证。要打印其公用的 ssh 密钥

$ tkey-ssh-agent --show-pubkey

可以通过 --uss (需要 pinentry 程序) 或 --uss-file 命令行参数提供额外的用户提供的密钥 (USS)。USS 决定了 ssh 公钥,这意味着提供不同的 USS 将输出不同的密钥。例如,如果用于生成 ssh 公钥的 USS 是 --uss "arch, btw",那么在向使用此公钥的服务器进行身份验证时,应在 pinentry 提示符中输入此 USS。

启动 ssh 代理

$ tkey-ssh-agent --agent-socket $XDG_RUNTIME_DIR/tkey_ssh_agent.sock

同时使用 tkey-ssh-agent 和 ssh-agent

OpenSSH 可以配置 (参见 ssh_config(5)) 来仅使用 tkey-ssh-agent 对某些连接进行身份验证,并为其他 ssh 连接默认使用 ssh-agent。要使用 TKey 对连接到特定主机进行身份验证,请将 ssh 配置选项 IdentityAgent 设置为 tkey-ssh-agent 的套接字路径。

~/.ssh/config
Host aur.archlinux.org
  User aur
  IdentityAgent /run/user/1000/tkey-ssh-agent/sock

上面的示例将询问是否使用 TKey 对 aur.archlinux.org 进行身份验证,假设其 --agent-socket 是上面配置的 IdentityAgent 路径。

如果 tkey-ssh-agent 是通过 tkey-ssh-agent.service (作为 tkey-ssh-agentAUR 程序包的一部分提供) 作为 Systemd/User 单元 启动/管理,那么套接字路径就是 $XDG_RUNTIME_DIR/tkey-ssh-agent/sock 的值。

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.