Tillitis TKey
The TKey 是一个 开源硬件 和 开源软件 USB 安全密钥,可以支持诸如 SSH 登录、Ed25519 数字签名、信任根、FIDO2 等用例。TKey 的软件、电路板设计、FPGA verilog 和 固件 由 Tillitis 发布。
TKey 的 威胁模型,例如关于信任和攻击向量的假设,由 Tillitis 指定。
由于 TKey 没有持久存储,它的输出是从任何输入和一个唯一的设备密钥 (UDS) 计算出来的,参见 Tillitis TKey Developer Handbook。每次将 TKey 插入计算机时,都必须将设备应用程序加载到其中。加载设备应用程序后,TKey 会基于设备应用程序二进制代码的哈希值、UDS 以及可能的用户提供的密钥 (USS) 计算复合设备标识符 (CDI)。然后 CDI 可供设备应用程序使用,例如从中派生私钥。
首次使用
TKey 使用设备签名进行识别
$ lsusb | grep Tillitis
Bus 008 Device 001: ID 1207:8887 Tillitis MTA1-USB-V1
并且可以通过类似 /dev/ttyACM0
的串行端口访问。要使用 TKey,请将您自己添加到 uucp
用户组。
最好对供应商 1207
和产品 8887
使用 udev 规则,以便使设备 对用户可写。
使用 tkey-verification 进行验证
为了测试设备是否已正确设置,建议运行供应商提供的 tkey-verification 程序,该程序打包在 tkey-verification-binAUR 中。除了 TKey 的功能检查外,该软件还验证 TKey 包含的固件是否与生产时相同,从而确保 TKey 上的固件未被更改。
$ tkey-verification verify
... TKey is genuine!
应用
本节介绍了一些可用工具的用法。
tkey-ssh-agent
TKey 可以使用 tkey-ssh-agentAUR 验证 SSH agent 请求。要打印其公共 ssh 密钥
$ tkey-ssh-agent --show-pubkey
可以通过 --uss
(需要 pinentry 程序)或 tkey-ssh-agent 的 --uss-file
命令行参数提供额外的用户提供的密钥 (USS)。USS 决定了 ssh 公钥,这意味着提供不同的 USS 将输出不同的密钥。例如,如果用于生成公共 ssh 密钥的 USS 是 --uss "arch, btw"
,则在向使用此公共密钥的服务器进行身份验证时,应将此 USS 输入到 pinentry 提示符中。
要启动 ssh agent
$ 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
的值。