-
Notifications
You must be signed in to change notification settings - Fork 34
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
[Spike] Rework trusted manufacturer checks. #628
Comments
Also from the FIDO Specification (thanks @7flying for the heads up):
So we actually need a way to trust at least one Public Key within the OV entries array. We must bear in mind, though, that the specification says that those are Public Keys and not X509 Certificates and we are assuming precisely the opposite. Also this behavior should be optional and the rendezvous server must have a mechanism to protect itself against not trusted OVs. |
X509 Certificates are a standard way of defining public keys, and always have a public key inside of them, so, I think that in this case "X509 Certificate" can be used interchangeably with "public key".
|
The specification states that it is not a certificate and it does not identifies the manufacturer (for manufacturer's protection I guess?) in any way:
I agree that the most familiar way for all of us would be the manufacturer using a certificate to sign the first entry, putting the public key within the OV for verification and providing the certificate to the owner. But that's not what the specification says. If the manufacturer wants to use random public keys for some device sets and provide those to the corresponding rendezvous servers (public keys don't expire while certificates do), it would remain conformant to the specification. In this case, we wouldn't be able to verify those public keys as we expect certificates but we could workaround the problem by disabling the verification of the manufacturing servers. Either way, I think this is not crucial for passing the conformance tests and we can revisit it later. |
Currently the Rendevouz server gets the list of the trusted manufacturer CAs from the trusted_manufacturer_keys_path variable within the config file and checks if the OwnershipVoucher's Manufacturer Public Key (OwnershipVoucher.OVHeader.OVPubkey) is in the list of of the trusted manufacturer CA certificates by extracting the pub key of each CA.
But according to the FIDO specification the OwnershipVoucher.OVHeader.OVPubkey is used for the verification of the first entry of the OwnershipVoucher.OVEntryArray only because it's just a public key, not a certificate:
To decide which manufacturer's CAs are trusted by Rendevouz server I think we should perform a verification of the OwnershipVoucher.OVDevCertChain instead, the same check as the Owner is supposed to do.
Also, it might be convenient to explore the possibility of adding support for disabling this check so the servers can trust any manufacturer.
(It seems that currently the RendeVouzServer already checks the OwnershipVoucher.OVDevCertChain and trusts all the certificates)
The text was updated successfully, but these errors were encountered: