Removing expiry dates for TOFU
Baschdel
baschdel at disroot.org
Tue Jul 7 18:06:07 BST 2020
I really like the way of announcing future certificates by putting them
in a well known location (not just their fingerprint, as this requires
either the server or the client (probably both) to support multiple
fingerprinting algorithms because even if we agree on one hash algorithm
today, there are already people trying to break it and updating that
will be a mess).
That said the name of this well known location should include the name
tls somewhere to keep the door open for potential tls replacements (I
think TLS is a great choice, but if something else emerges I don't want
to bother with legacy magic paths).
There are also three other certificates besides the future one that
could/should be served at a well known location:
- Alternative (Backup) certificates for both the current and future
certificate, that can be used when the key behind the original
certificate was compromised, they have to be valid for the same
time-span as the originals and become the originals as soon as they are
used. The private keys of these of course should be kept in cold storage
until they are needed. Clients should at least notify the user when they
see a backup certificate being used and treat the original certificate
as untrusted but not delete it immanently (as it is possible that only
the backup key was compromised and still be used by the original
server). The user must have the ultimate choice which certificate to
trust after a backup certificate has been used as which certificate is
trustable should be communicated out of band in such a case.
- The currently used certificate that could be checked by clients to
detect general purpose dragnet TLS interception, that knows nothing
about Gemini and its conventions (basically what I'd do if I was the
dictator of a surveillance state to monitor and censor internet access
for thousands or millions of people). This too could also be useful if
some TLS alternative emerges, you already trust one key the server uses,
so why not use that to get the other keys it uses. Another possible
usecase is that someone really concerned could use any niche proxy
protocol to fetch the certificate the server should have (I know
portal.mozz.us already has a feature that allows one to fetch the server
certificate but proxy.vulpes.one doesn't and a gemini to gemini proxy
would have to use a well known endpoint to fetch the certificate anyway
(but that wouldn't allow you to check if the proxy got MitMd by a lazy
TLS interception)) To make this even more of a pain for attackers each
server could have (a) secondary endpoint(s) that is/are only
communicated in human readable form (i.e. generating a captcha image
that contains the filename in a nonstandard location) that changes on a
regular basis) that too serve(s) the certificate used with the
possibility for a security focused client to have a tool that can
automatically check against the certificates it trusts and the one it
received from the server. (All of this can be realized by adding two
configuration options to a Gemini server, or if the server doesn't
support that symlinks should work as well).
Again, I'm just throwing Ideas around hoping that they'll be considered
useful.
Have a nice Evening
- Baschdel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.orbitalfox.eu/archives/gemini/attachments/20200707/f3df19bb/attachment-0001.htm>
More information about the Gemini
mailing list