Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Confused About What To Do With Attestation Trust Paths #1662

Closed
DanielSanchezDiaz opened this issue Aug 11, 2021 · 4 comments
Closed

Confused About What To Do With Attestation Trust Paths #1662

DanielSanchezDiaz opened this issue Aug 11, 2021 · 4 comments

Comments

@DanielSanchezDiaz
Copy link

Hello! I was a bit confused by step 21 in registering a new credential.
"Otherwise, use the X.509 certificates returned as the attestation trust path from the verification procedure to verify that the attestation public key either correctly chains up to an acceptable root certificate, or is itself an acceptable certificate (i.e., it and the root certificate obtained in Step 20 may be the same)."
How do we know we've reached an acceptable root certificate?
Do we need to make sure that the root certificate follows the format outlined in 8.2.1?
I believe I understand how to check if the attestation public key and the root certificate are the same. Are there other ways to see if an attestation is itself an acceptable certificate?
Thanks so much!

@sbweeden
Copy link
Contributor

The procedure is not normative in this spec, but typically you would ensure that the certificate is signed by a trust root from FIDO metadata services, or from metadata obtained directly from the vendor(s) of the authenticators you are willing to accept.

@cyberphone
Copy link

This is a highly valid question. I have proposed a simplified and decentralized approach which should be sufficient for most RPs that do not have the luxury defining what authenticators and associated devices their customers use:
ietf-rats-wg/ietf-rats-usecases#3

@arshadnoor
Copy link

@DanielSanchezDiaz The IETF defined a mechanism called PKIX Validation that defines a very precise process for how to find the Trust Anchor of a given certificate (for example, the Attestation certificate used by the Authenticator) to determine whether you choose to trust the certificate.

This trust depends, quite significantly, on whether the creators of the Attestation certificate chose the right certificate extensions, populated them with the right values, and established the "infrastructure" to support certificate verification on the internet. Unfortunately, without looking at the actual Attestation certificate and going through the PKIX Validation process, it is impossible to tell whether you can validate such a certificate or its chain completely - each certificate in the chain must have all the right values to chain correctly.

Mozilla Developer Network used to have one of the most easily understood articles on this topic; the links are broken right now (I've filed an issue), but you can get a decent introduction to the topic if you look at the section on "How CA Certificates Are Used to Establish Trust" in this archived copy at http://web.archive.org/web/20140704130514/https://developer.mozilla.org/en-US/docs/Introduction_to_Public-Key_Cryptography.

The link at Oracle provides useful tools on how to perform the validation using Java. If you're looking for a simplified implementation of those classes, you'll find it in the source code of PKI2FIDO at Sourceforge.

@sbweeden
Copy link
Contributor

Per discussion on WebAuthn working group call 11 August, this question has been asked and answered so closing the issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants