![在 Macos 上使用 libfido2 在 USB 安全令牌上设置 PIN](https://linux22.com/image/228428/%E5%9C%A8%20Macos%20%E4%B8%8A%E4%BD%BF%E7%94%A8%20libfido2%20%E5%9C%A8%20USB%20%E5%AE%89%E5%85%A8%E4%BB%A4%E7%89%8C%E4%B8%8A%E8%AE%BE%E7%BD%AE%20PIN.png)
我购买了 FIDO-U2F/FIDO2 USB 安全令牌,并设法将其添加为我的 macOS (sonoma) 上的 github 的密钥。
它不适用于另一个网站,我怀疑这是因为密钥还没有 PIN 码。
可以使用 libfido2 提供的 fido2-token 命令来设置密钥 PIN,libfido2 可以在 macOS 上通过brew 安装。
但它需要一个设备名称作为参数,我不知道要使用什么设备名称。在 Linux 上,我们必须添加用户设备,密钥卖家提供了这样做的方法,但他们没有提供 macOS 的任何信息。
Windows 在系统参数中提供了 GUI 界面来设置密钥 PIN,但我宁愿避免使用 Windows 机器来执行此操作。
编辑1:自从我发布问题后,我发现您可以通过进入 Apple 图标 > 关于本机 > 更多信息 > 系统报告 > USB 来查看已连接的 USB 设备。您的版本中的路径可能略有不同。
我确实看到了那里列出的密钥,就像我在与brew一起安装的lsusb时也看到了它一样,但它没有显示我可以用来与之对话的/dev。
答案1
经过进一步的研究,我找到了解决方案。
通过brew安装libfido2后,我们可以使用命令列出FIDO2安全令牌(例如USB密钥)fido2-token -L
。它提供了用于其他命令的设备。
libfido2 命令的手册,尤其是 fido2-token 命令的手册可在此处找到:https://developers.yubico.com/libfido2/Manuals/fido2-token.html。
$ fido2-token -L
ioreg://4295015862: vendor=0x1e0d, product=0xf1d0 (NEOWAVE NEOWAVE Winkeo FIDO2)
$ fido2-token -I ioreg://4295015862
proto: 0x02
major: 0x01
minor: 0x00
build: 0x00
caps: 0x05 (wink, cbor, msg)
version strings: U2F_V2, FIDO_2_0
extension strings: hmac-secret
aaguid: 3789da91f94346bc95c350ea2012f03a
options: rk, up, noplat, noclientPin
fwversion: 0x0
maxmsgsiz: 2048
maxcredcntlst: 0
maxcredlen: 0
maxlargeblob: 0
pin protocols: 1
pin retries: undefined
pin change required: false
uv retries: undefined
从 中可以看出noclientPin
,当前未设置密钥 PIN。
然后我设置密钥 PIN
$ fido2-token -S ioreg://4295015862
Enter new PIN for ioreg://4295015862:
Enter the same PIN again:
$ fido2-token -I ioreg://4295015862
proto: 0x02
major: 0x01
minor: 0x00
build: 0x00
caps: 0x05 (wink, cbor, msg)
version strings: U2F_V2, FIDO_2_0
extension strings: hmac-secret
aaguid: 3789da91f94346bc95c350ea2012f03a
options: rk, up, noplat, clientPin
fwversion: 0x0
maxmsgsiz: 2048
maxcredcntlst: 0
maxcredlen: 0
maxlargeblob: 0
pin protocols: 1
pin retries: 8
pin change required: false
uv retries: undefined
我们可以看到密钥 PIN 码现已设置。