If it was a single private key for all sites, you would have no way to tell a site to change its public key without telling every other site to do the same. |
I don't see this!
To my understanding, WebAuthn is totally
bilateral: When I register my authenticator with a certain web-site (relying party, RP), my authenticator sends a public-key to the RP server. Usually there will be a "fresh" key-pair for each RP, but the RP really has
no way to check this. In theory, we could use the same key-pair for all sites. Anyway, the RP server will remember the submitted public-key and use it to verify my future logins (challenge signatures). That's it.
No other web-site has any knowledge about this bilateral registration. And, much unlike X.509 certificates, there also is
no "central" authority that needs to approve my public-key, or that could "revoke" my key-pair.
Therefore, I think that the
only way to "revoke" a public-key in the context auf WebAuthn would be to tell the specific RP that it should
no longer accept the previously registered public-key for my logins – provided that the RP offers such an "un-register" functionality. But this certainly will
not effect any other RP's where that same public-key might still be in use. Regardless of whether we use the same key for all sites, or whether we use a different key for each site, we would have to "revoke" the key(s)
separately from each site...
(e.g. when the authenticator was lost, stolen or it broke)
________
There is one important thing I have learned in the meantime: Most, if not all, authenticators do
not really generate (and store) a separate key-pair for each site. Instead, they will "(re)compute" the private-key for each site "on the fly" whenever it is needed, based on a
single "master" key (built into the device), an individual seed, and the site's RPID. This makes having a separate key for each site
very cheap.
Only special "residen" keys are actually stored
in the authenticator.
So, apparently, there is just
no reason to re-use the same key-pair on multiple sites, since
per-site keys come "for free" 🤔