Currently in the new-reg stage, the client POSTs a signed message, which
may contain the URI of a user agreement. If the content of the URL changes,
the results could be confusing - client software updating certificates
might post the agreement URL without the user having agreed to the revised
terms.

Is it worth adding an optional agreement integrity field? We could use a
format like this:-

"agreement": "
https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf";,
"agreement-integrity":
"sha512-3Ys8QL9di54ggXIGBAS2RHr_W6cMurZPizhZihkQjwl3VG2dpXZYmsYZ0B7LG-tWlVE9-Hwp9hL3Mosvbr6lCA"

where the checksum is calculated like so:-

$ cat LE-SA-v1.0.1-July-27-2015.pdf  | openssl dgst -sha512 -binary |
openssl base64 -A | tr -- '+/' '-_' | tr -d '='
3Ys8QL9di54ggXIGBAS2RHr_W6cMurZPizhZihkQjwl3VG2dpXZYmsYZ0B7LG-tWlVE9-Hwp9hL3Mosvbr6lCA

That way if the CA updates the agreement without updating the URL, it'll be
clear which version the user has agreed to.

The main downsides to this are:

1. It complicates setting up the client; realistically, instead of
downloading, reading, and checksumming the user agreement most users will
simply copy-and-paste the configuration data from some website. Why add to
the boilerplate configuration, making the software harder to use for no
real benefit? We all know in reality enforcement of the user agreement will
be by certificate revocation, not by the courts; why add to the sound and
fury of threatening legalese when it signifies nothing?

2. Perhaps allowing CAs to update their user agreements without the user's
knowledge is preferable to CAs breaking users' certificate renewal scripts
without the user's knowledge. The latter could mean that a server that is
running fine and securely one day will become inaccessible the next day,
unable to renew its certificate without manual intervention to accept a new
agreement. Reliably sending e-mail is difficult due to spam filtering, so
many servers aren't set up to push notification to administrators when
problems like this arise.

3. The checksummed agreement could refer to other documents; those would
not be covered by the checksum, so they could be changed. The only thing
preventing this is good faith on the part of the CAs. Given that we rely on
that, why not also rely on the good faith of the CA to update the URL when
they update the agreement?

4. If SHA-512 becomes obsolete, manual intervention may be required to
calculate a new checksum using an updated algorithm. In the event there
were multiple CAs and SHA-512 approached obsolescence, some CAs might only
accept SHA-512 while others didn't accept SHA-512. Clients might be
complicated with an ability to send multiple checksums, or to negotiate the
checksum algorithm.

5. This proposal is similar to http://www.w3.org/TR/SRI/ except this
proposal uses URL- and filename-safe base64 encoding (RFC4648 Section 5
with padding removed), only requires SHA-512, and doesn't explicitly
support multiple hash algorithms; whereas the SRI recommendation uses
traditional base64 encoding (RFC4648 Section 4); requires SHA-256, SHA-384
and SHA-512; and explicitly includes support for multiple hash algorithms.
Designs so similar yet incompatible may be a recipe for confusion; perhaps
additional differences should be introduced so the incompatible standards
are more obviously different.

6. People are already writing client software; maybe it's too late to
update the spec for such a marginal improvement.

What do you think?
_______________________________________________
Acme mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/acme

Reply via email to