Verificador de atestado PIV da YubiKey (YubiKey PIV Attestation Verifier)
Uma YubiKey consegue provar que uma chave PIV foi gerada dentro dela e não pode ser exportada: ela assina um certificado de atestado da chave com uma chave própria do dispositivo, certificada pela Yubico. Cole o atestado e o certificado do dispositivo — a cadeia, as políticas e os alertas de segurança conhecidos do firmware são verificados aqui, com os certificados de CA da Yubico incluídos na página.
Os certificados de atestado são lidos e verificados nesta aba do navegador; nada é enviado.
ykman piv keys attest 9a attestation.pemykman piv certificates export f9 f9.pemOs mesmos arquivos com o yubico-piv-tool: yubico-piv-tool -a attest -s 9a e yubico-piv-tool -a read-certificate -s f9.
Chave esperada e âncoras de confiança (opcional)
Por padrão, a cadeia do atestado precisa chegar aos certificados de CA da Yubico incluídos nesta página: a raiz Yubico PIV, usada desde 2016, e as raízes Yubico Attestation e os intermediários PIV introduzidos em 2024. Cole outras raízes só para dispositivos de teste ou uma hierarquia privada.
Exemplos
Atestados com os nomes de titular e as extensões da Yubico de dispositivos YubiKey 5, gerados a partir de chaves de teste determinísticas pela suíte de testes deste site (tools/yubikey-attestation-verifier/fixtures/generate.ts). A cadeia deles chega a uma raiz de teste, “Example PIV Root CA (test)”, carregada como âncora personalizada — e não à Yubico; por isso o exemplo “avaliada pela CA da Yubico” falha.
What an attestation proves
A certificate authority that issues certificates for keys on hardware tokens — code signing under the CA/Browser
Forum rules, a company's VPN or SSH CA — needs to know that the private key was generated inside the token and
cannot leave it. A CSR alone cannot show that: anyone can sign a CSR with a key kept on disk. A YubiKey answers with
attestation (Yubico, PIV attestation). On
request it issues an X.509 certificate for the public key in a PIV slot, signed by a device
attestation key in slot f9. That key's certificate was issued by Yubico at manufacture. The attestation only exists
for keys generated on the device; an imported key cannot be attested.
The chain that is checked
- Slot certificate ← f9. The attestation certificate (subject
YubiKey PIV Attestation 9afor slot 9a) must be signed by the key of the device certificate. The f9 certificate is not a CA certificate, so this link is checked on its own, without CA path rules. - f9 ← Yubico. The device certificate must chain to a Yubico root. Two hierarchies are in use, and both are bundled with the page: the Yubico PIV Root CA that has signed device certificates since 2016, and the Yubico Attestation Root 1 with its PIV attestation intermediates, introduced in 2024. Yubico's published bundle also contains FIDO, OpenPGP and Secure Domain CAs; a PIV attestation must not chain through those, so they are excluded. For a test device or a private hierarchy, paste your own roots under Custom trust anchors.
- Consistency. The serial number stated in the slot certificate must equal the one in the device certificate, and the attestation should be within its validity period.
A chain that ends anywhere but at a trusted root means the key may not come from a genuine YubiKey, and the verdict says so.
What the attestation states
Yubico writes the device's properties into extensions under the OID arc 1.3.6.1.4.1.41482.3:
- Firmware version (
.3) — which also decides the advisories below. - Serial number (
.7) — printed on the key and shown byykman info; match it against your inventory. - PIN and touch policy (
.8) — whether the key can be used without the PIN, with it once per session or for every use (and, on the Bio series, with a fingerprint), and whether every use needs a touch, a touch cached for 15 seconds, or none. Set Require a PIN policy and Require a touch policy to turn your own rules into checks: "at least once per session" accepts every use, "at least cached" accepts every use. - Form factor (
.9) — USB-A or USB-C, keychain or nano, Lightning, Bio; the high bit marks FIPS models. - FIPS and CSPN (
.10,.11) — certified models.
The slot names follow NIST SP 800-73: 9a PIV authentication, 9c digital signature, 9d key management, 9e
card authentication, 82–95 retired key management. If you compare against a CSR you are about to sign, paste its
public key or certificate under Expected public key: the attested key must be exactly that key.
Firmware advisories
- ROCA (CVE-2017-15361, Yubico YSA-2017-01): RSA keys generated by firmware 4.2.6 to 4.3.4 are weak enough that the private key can be computed from the public key. Such an attestation is reported as not valid; the key must be replaced.
- EUCLEAK (CVE-2024-45678, Yubico YSA-2024-03): ECDSA on firmware before 5.7.0 leaks through a side channel. Exploiting it needs physical access and laboratory equipment, so it is a warning, not a failure.
What stays in your browser
The certificates are parsed and every signature is verified on this page; the Yubico CA certificates come with it, so nothing is fetched and nothing is uploaded. Attestations are public by design — they exist to be shown to whoever must trust the key — so the page can put them into a share link, in the URL fragment that browsers never send to a server. Private keys are refused in every field.
To produce the two files, run ykman piv keys attest 9a attestation.pem and
ykman piv certificates export f9 f9.pem, or with yubico-piv-tool, -a attest -s 9a and
-a read-certificate -s f9. A CSR made from the same slot can be read in the
CSR decoder, and FIDO2 attestations of security keys are a different format,
checked by the WebAuthn inspector.