通用第二因素(U2F)USB 安全密钥设备
U2F 是开放认证标准,让面向互联网的依赖方为用户提供强健的第二认证因素。
第二因素由实现 U2F 协议的设备提供。USB U2F 密钥是实现该协议的 USB HID。
QEMU 支持主机硬件密钥直通,也支持软件模拟。
u2f-passthru
此设备将主机真实 U2F 密钥连接到客户机,双向转发全部请求。
与普通设备直通不同,专用直通可让多个客户机共享同一安全密钥。
通过 hidraw 指定 Linux /dev/hidrawN 路径:
qemu-system-x86_64 -usb -device u2f-passthru,hidraw=/dev/hidraw0
不指定时,自动扫描并使用找到的第一个 U2F,需要可用的 libudev:
qemu-system-x86_64 -usb -device u2f-passthru
u2f-emulated
这是完全软件模拟的设备,使用 libu2f-emu。该库实现 FIDO Alliance 规定全部传输方式的 U2F 设备端协议。
需要四项内容:
EC X.509 证书
EC 私钥
4 字节计数器
48 字节随机熵
必须以某种方式配置并提供这四项。
假定主机已安装库,有三种配置方式:
临时
设置目录
手动
临时方式最简单,设备为单次生命周期生成全部内容;不传其他选项时默认如此。
qemu-system-x86_64 -usb -device u2f-emulated
也可用 dir 指定主机目录,其中必须有:
certificate.pem:EC X.509 证书
private-key.pem:EC 私钥
counter:计数器值
entropy:48 字节随机熵
qemu-system-x86_64 -usb -device u2f-emulated,dir=$dir
若文件不在同一目录,也可分别通过以下选项提供路径:
cert
priv
counter
entropy
qemu-system-x86_64 -usb -device u2f-emulated,cert=$DIR1/$FILE1,priv=$DIR2/$FILE2,counter=$DIR3/$FILE3,entropy=$DIR4/$FILE4