[HTTPS-Everywhere] Draft specification for file used to check for ruleset updates
Jacob Hoffman-Andrews
jsha at eff.org
Thu Jun 12 07:18:34 PDT 2014
> Instead of hashing a stringified version of the `update` object
directly, we could sort an array of the keys in the update object and
then create an array of key, value pairs in the sorted-key order.
Presumably, we would also want to recursively sort any sub-objects in
the update object? What encoding do we use to serialize the update
object for signing?
Your solution is definitely workable, but instead of using new (i.e.
existing) tools, it means inventing our own tools, which are likely to
be underspecified and have unique bugs.
Here are two alternatives that allow us to specify a signature over a
byte sequence rather than canonicalized JSON:
1) The first line of the update file is a signature of the following
bytes, up through the first newline. Everything following is valid JSON,
and the signature is determined over those raw bytes. E.g.
uc0mBep1KTsWuJKpfF5LC8GPPa/Qy9+JfIAljVdBXIA=
{
"foo": "bar"
}
2) The signature is not embedded in the JSON at all, but fetched from
another file. e.g. /update.json and /update.json.sig.
Note that either of these approaches works with nsIDataSignatureVerifier.
Relatedly: We will probably want the extension to ping a certain URL
when signature verification fails, so we can keep an eye out for
malfunctions.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.eff.org/pipermail/https-everywhere/attachments/20140612/b1d64603/attachment.html>
More information about the HTTPS-Everywhere
mailing list