[cap-talk] A petname toolbar for Firefox

David Wagner daw at cs.berkeley.edu
Sat Feb 19 05:03:36 EST 2005


Trevor Perrin writes:
>An alternative is to form a fingerprint by hashing (CA pubkey || domain 
>name).  If you don't want to use a 3rd-party CA, you can make your own.

That's equivalent to storing (CA pubkey, domain name), from a security
point of view.  The only point in displaying H(X) rather than X itself is
perhaps for useability reasons, to reduce the amount of information
presented to the user.  But I'd rather store X instead of H(X); it gives
me more flexibility.  And in this case, there is an argument that perhaps
you'd rather display (CA pubkey, domain name) rather than a hash, in case
users find it meaningful to examine the domain name associated with some
given petname.

>Wouldn't it achieve the same thing if the client just ignored cert validity 
>intervals?  If the server wishes to stop depending on the CA, it simply 
>stops renewing its certificate (which highlights that your proposal 
>eliminates the usefulness of validity intervals in reducing the damage done 
>by a compromised key).

In theory, that works, but in practice, I suspect it's not viable.
The server would have to keep presenting its expired certificate to all
comers.  However, I believe this will cause most modern browsers to pop
up a scary-looking "certificate expired" window, and that might be reason
enough to cause the server administrator to be reluctant to continue
using the expired certificate.

>In an ideal world, it might be better to form a fingerprint by hashing (CA1 
>pubkey, CA2 pubkey, domain name, "either of [1,2] must sign a subkey 
>certificate to make it valid under this fingerprint").

I don't know.  In my ideal world, I'd sign only the server's long-term
public key.  In essence, the server would act as its own CA.  If the server
wants to change its SSL key, it can do so by producing a new self-signed
certificate (signed by its CA key, and containing its SSL key).  The petname
scheme could store the server's long-term key (i.e., its CA key), and accept
any SSL key signed by that CA key as a valid identifier for that site.
This would eliminate the vulnerability to incompetent or malicious CAs.

The only purpose of a CA is to introduce you to a site.  But maybe there
are other ways to be introduced to a site, too.  (For instance, we could
have an extended-style URL which contains both a https: URL as well as a
public key to use when authenticating the corresponding server.)  And it
seems that we could probably separate the "being introduced to a site" from
the "identifying that it is the same site that you visited the last time"
functionality.


More information about the cap-talk mailing list