Trying to wrap my head around the FIDO protocol suit.
Premise
- Authenticator has a master private key(also called attestation key)
- During the registration ceremony, authenticator signs the challenge and a couple of other parameters along with the newly generated public key and sends it to the FIDO universal server via WebAuthN protocol. And the private key generated is stored in the authenticator locally.
Questions
- How does the FIDO server verify the integrity of public key generated by authenticator (simply put how does the server validate the certificate chain back to root of trust)? This is assuming that there is scope for mitm attack between authenticator and web client.
- Does the server have corresponding public key of attestation key/master private key built in (replicating a CA model)?
- If so, do all the fido authenticators have same master key when they are created(be it software module or a hardware module)? If not how do manufacturers and FIDO servers keep up with huge number of physical authenticators and software modules being created and deployed?