How does kinto know which certificates you yet need to download?

On Fri, Mar 8, 2019, 3:29 PM J.C. Jones <j...@mozilla.com> wrote:

> # tl;dr #
>
> At the end of February I enabled Intermediate CA Preloading for all
> desktop Nightly users to begin gathering telemetry. This means all
> intermediate CAs disclosed to Mozilla will be pre-loaded into
> profiles, so the common secure website misconfiguration of forgetting
> this certificate won’t stop Firefox users. It has other benefits, too,
> but for those read on.
>
>
>
>
> In Bug 1404934 we've added support to download the Intermediate
> Certificate Authorities that have been disclosed to the Mozilla CA
> Root Program from Kinto in the background during normal Firefox
> operation. I turned this on for all desktop nightly users a bit more
> than a week ago, prompting Nightly users to download 100 intermediate
> CA certs into their profile each day. I do not have a timeline at
> present for this to ride the trains.
>
>
> # What it does #
>
> Websites using encryption should provide two digital PKI certificates
> [0] when connecting to clients: One for the website itself, and one
> for the intermediate CA that produced the website's digital
> certificate. Sometimes, websites are set up incorrectly.
>
>
> When other browsers encounter this case, they use AIA-chasing, a
> mechanism where the user's browser then, in the background, connects
> to the CA and downloads the certificate during the TLS handshake.
>
> ## Performance benefit ##
>
> Preloading the intermediate CA data avoids the just-in-time network
> fetch, which delays the connection.
>
> ## Privacy ##
>
> Avoiding the network fetch is also a privacy improvement, as it
> doesn't disclose your browsing pattern to the certificate authority
> that issued the misconfigured website's certificate.
>
> It's also helpful because it's possible to "fingerprint" a user by a
> website carefully analyzing what other websites load or do not load
> due to which intermediate CAs have been "seen" by a user [1].
> Preloading ensures that all users have "seen" all the same
> intermediate CAs.
>
> ## Protection ##
>
> The Mozilla CA program requires all members to disclose unconstrained
> intermediate CAs before using them, as a safety measure. However,
> there is not currently a way to technically enforce that. Intermediate
> Preloading could eventually be used to perform that enforcement, by
> only trusting intermediate CAs which were disclosed already. This
> protects against a scenario where a compromised CA is coerced into
> producing an undisclosed secret intermediate CA, which is then used to
> attack people on the Internet.
>
>
> ## Future usefulness ##
>
> The experimental CRLite concept [2] (aiming to replace OCSP) requires
> a mapping of Intermediate CAs to an “enrollment status” flag. Since we
> need to enumerate the Intermediate CAs for that future functionality,
> actually preloading their data is a rational extension.
>
>
> # How it works #
>
> Intermediate Preloading fetches ~100 intermediate certificate
> authorities' certificates once a day during the Kinto main update [3],
> and loads them into your profile, as if you had visited a site that
> used that intermediate. At 100 per day, summing to between 300-500 kB,
> it will take approximately three weeks for a Firefox profile to
> preload all intermediates [4]. We will likely increase the rate after
> the initial experiments.
>
> The certificate data is loaded into the NSS Certificate Database, as
> is done for normal web browsing. In the future, we will use the faster
> Rust "rkv" database, in Bug 1530545.
>
> Currently preloading is only enabled for desktop users on Nightly. We
> will want to (A) restrict the download to be only over WiFi and maybe
> plugged in, and (B) switch to the faster database before enabling on
> mobile. (Bug 1520297)
>
>
> # What we expect #
>
> Intermediate Preloading should reduce the number of
> SEC_ERROR_UNKNOWN_ISSUER errors seen by Firefox users over time, which
> is our most common secure connection error. It will also remove the
> tracking vector (above, Privacy), and give us a path to enforce CA
> disclosure.
>
>
> # Things to keep in mind #
>
> Right now, these certificates go into the NSS Certificate Database,
> and are visible in / totally overcrowding the Certificate Manager (Go
> To about:preferences#privacy , View Certificates.., Authorities tab).
> That’ll change when this moves to rkv.
>
> This is potentially a bunch of data, approximately 3 megabytes of
> binary, but it’s data that changes only very slowly.
>
>
> # Telemetry #
>
> Telemetry for Intermediate Preloading is available in the histograms:
>
>   "INTERMEDIATE_PRELOADING_ERRORS"
>   "INTERMEDIATE_PRELOADING_UPDATE_TIME_MS"
>
> and the scalars:
>
>   "security.intermediate_preloading_num_pending"
>   "security.intermediate_preloading_num_preloaded"
>
> ... which show how many of the ~2300 intermediates have been loaded,
> per profile.
>
> # More info #
>
> Well, maybe. ;) There's a wiki page about this which can be used to
> help explain the same things as are in this post. Otherwise, send your
> questions to me, Mark Goodwin, or Dana Keeler.
>
> https://wiki.mozilla.org/Security/CryptoEngineering/Intermediate_Preloading
>
> :: Footnotes::
>
> [0] The WebPKI generally has one root CA certificate, one intermediate
> CA certificate, and then one end-entity (specific website)
> certificate. Sometimes there can be more than one intermediate CA
> certificate, potentially much more than one.  Sometimes that’s because
> of cross-certification CA certificates, sometimes it’s technical debt
> someone hasn’t cleaned up yet. See https://signed.bad.horse for an
> egregious (and untrusted) example.
> (
> https://tls-observatory.services.mozilla.com/static/certsplainer.html?id=188088012
> )
>
> [1]
> https://shiftordie.de/blog/2017/02/21/fingerprinting-firefox-users-with-cached-intermediate-ca-certificates-fiprinca/
>
> [2] https://wiki.mozilla.org/CA/Revocation_Checking_in_Firefox#CRLite
>
> [3] 100/day is configurable by a pref, it is likely to change. See
>
> https://searchfox.org/mozilla-central/source/security/manager/ssl/security-prefs.js#166
> .
>
> [4] The data is loaded from Kinto here:
>
> https://settings.prod.mozaws.net/v1/buckets/security-state/collections/intermediates/records
> . This data is exported from the Common CA Database maintained by the
> Mozilla root program.
> _______________________________________________
> dev-platform mailing list
> dev-platform@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-platform
>
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to