可以使用 OpenSSH FIDO2 ssh 密钥证明数据来验证密钥仅驻留在 FIDO2 令牌(例如 Yubikey)吗?

问题描述 投票:0回答:2

OpenSSH >=8.2 允许使用 FIDO2 身份验证,并且 ssh-keygen 命令允许在 FIDO2 令牌上创建驻留密钥(例如 Yubikey)。还可以选择在密钥生成期间使用写入证明选项输出证明数据。例如

ssh-keygen -t ed25519-sk -O resident -O write-attestation=id_ed25519-Yubikey.attest -O application=ssh:id_ed25519-Yubikey -f id_ed25519-Yubikey

两个问题:

  1. OpenSSH 创建的证明文件的格式是什么?

  2. 证明数据可以用于验证相应的 ssh 公钥是在 FIDO2 令牌上生成的,因此仅作为 Yubikey/FIDO2 令牌上的常驻密钥驻留吗?

ssh openssh webauthn ssh-keygen fido
2个回答
1
投票

格式记录在此处

Attestation information is useful for out-of-band key and certificate
registration workflows, e.g. proving to a CA that a key is backed
by trusted hardware before it will issue a certificate. To support this
case, OpenSSH optionally allows retaining the attestation information
at the time of key generation. It will take the following format:

    string      "ssh-sk-attest-v01"
    string      attestation certificate
    string      enrollment signature
    string      authenticator data (CBOR encoded)
    uint32      reserved flags
    string      reserved string

我不相信现在的 openssh 服务器可以直接使用它。但是,您可以将其与 ssh 证书颁发机构结合使用,仅向已证明它们是在特定 fido2 设备上生成的密钥颁发证书。


0
投票

您可以使用类似这样的快速&脏脚本:https://gist.github.com/joostd/ed790ade9ddd4b711af6c1b80eaed7ca

$ openssl rand 32 > challenge.bin
$ ssh-keygen -t ${KEYTYPE} -f ./id -N "" -O challenge=challenge.bin -O write-attestation=attestation.bin
...
$ curl -sL https://mds3.fidoalliance.org/ > mds.jwt
$ ./ssh-sk-attest.py --mds mds.jwt  
✅ valid attestation for hardware authenticator (ee882879-721c-4913-9775-3dfcce97072a): YubiKey 5 Series
© www.soinside.com 2019 - 2024. All rights reserved.