On 04/10/14 01:30, Joanna Rutkowska wrote:
> There are several major problems with using HTTPS for
qubes-os.org and
> iso download:
>
> 1) HTTPS/SSL Public CA trust infrastructure is far from ideal so to
> say... There are way too many well known CAs that each browser trusts by
> default, and it is expected that an attacker would be able to relatively
> easy get/steal a signed cert from one of those many "trusted" CAs. As we
> all known that happened many times in the past.
Despite cprise's recommendation in his other email, I still think
there's lots of benefits to using a CA-signed certificate. Nothing stops
you from getting your cert signed by a CA _and also_ distributing the
fingerprint in some other fashion for those that don't trust CAs.
Causing cert warnings in browsers when it's not actually an attack is
always a bad idea and encourages users to click through warnings.
Once a website uses HTTPS, the way browsers end up trusting it can
easily be swapped out. The PKI that everyone uses by default is trusting
CAs (because this is default, I think it's good to support it), but
those exact same certs can be used with other methods, like
convergence.io, Sovereign Keys, some of the HTTPS web of trust models, etc.
But more immediately, Chrome and Firefox have an HSTS preload list [1]
(here's the complete list right now [2]). According to that page, both
browsers share the same list. Once you're using HTTPS, you can email
a...@chromium.org to get your website added to it.
You can make it so Chrome and Firefox automatically preload
qubes-os.org
in the HSTS list, which forces HTTPS, and you can pin to a specific CA.
This means that if someone loads
https://qubes-os.org/ and is served a
cert that's signed by a different CA, the browser throws a warning. You
still use a CA, but by doing this you can shrink the attack surface by
orders of magnitude.
> 2) But, even if #1 was not a problem: we still don't (want to) trust our
> cloud operator (and the cert private key must be on the server, and the
> operator can always, at the very least, sniff our servers memory without
> leaving any traces). This specifically considers a government-backed
> attackers.
This is a hard problem. But even limiting your threat model from anyone
to (a small number of) government-backed attackers is good. You could
also choose a cloud provider outside of the jurisdiction of the
governments you distrust the most (so those governments would be forced
to do attacks instead of lawful data requests), but that's not ideal.
More on real solutions below.
> 3) And even if #1 and #2 were not problems: we don't want to host ISO
> images on our own (hosted) sever(s) because of high bandwith costs, and
> that is why we use
sf.net to distribute ISOs.
Understandable. If you had funding specifically for more secure hosting
though, would that make the issue go away?
> So, I'm concerned that HTTPS might only offer an illusion of trust,
> surely much less than digital signatures we use could offer [*]. Having
> that said, I just recently re-opened a ticket [1] to get cert for the
> wiki server. But as the ticket says this is mostly for "aesthetic
> reasons" and would not apply to ISO download (yet fingerprints will be
> listed on a HTTPS wiki site -- again, still not sure if this a good or
> bad idea...)
>
> Curious to hear your thoughts on addressing the above mentioned
> problems, specifically by "all the cool kids" you mentioned? :)
Freedom of the Press Foundation also operates on a small budget, and is
also using a cloud host that we choose to trust with our SSL key. But
we're actually being even more trusting than that -- we've had to deal
with DDoS attacks before, so we decided to put our whole website behind
CloudFlare in order to weather the storm. This means that the SSL cert
and key served by
https://pressfreedomfoundation.org/ is controlled by
CloudFlare (not us), and then CloudFlare connects over the internet to
our VPS with an SSL key controlled by us -- but also readable by our
cloud host.
So the weak points are: trusting CloudFlare and trusting our VPS
provider, and finally trusting all the browser-trusted CAs to not issue
fake certs for our domain. A lot more trust than is ideal, but I still
think this is much, much better than nothing. Also it's cheap.
I'm not sure about the hosting environment for
torproject.org and
tails.boum.org, but I'm pretty confident it's much better (but also more
expensive).
I believe Tor owns their physical servers, has physical access to the
data center they're hosted in, and has taken physical security measures
as well. They don't trust any third parties (except for CAs, sort of).
They're in the Chrome/Firefox HSTS preload list. And because they're
using HTTPS, software like Tor Browser Launcher [3] is able to pin to
their actual cert before downloading tarballs and sigs, cutting CAs out
of the loop.
This is clearly more expensive, but setting up HTTPS now in
less-than-ideal situations is a good first step. If you ever get a
better physical hosting situation, it will be easy to generate a new key
and be protected against even more threats.
Without any HTTPS, attacks can be done without leaving any evidence.
Passive attackers can see everything -- someone logs into the wiki at
some point, right? Teenagers at cafes can trick people into downloading
malicious isos. With HTTPS (event trusting CAs) attacks need to be much
more sophisticated and they automatically cut out the set of attackers
that don't have access to a CA. If you get in the Chrome/Firefox preload
list, you automatically cut out the set of attackers that don't have
access to _your_ CA.
And even when there are active attacks, it's impossible to do them
without leaving behind a trail of evidence that software like the SSL
Observatory will pick up [4].
> joanna.
>
> [*] Currently the biggest hole in trust chain for Qubes OS are all the
> packages we get from Fedora (and a few other software we download "in
> raw" format such as e.g. kernel and xen). However all this is digitally
> signed [**] so at least we could always pinpoint where the breach came from.
>
> [**] Not actually true. A few sources for KDE is not digitally signed,
> because the KDE project doesn't understand why signing is good, as well
> as some software components we use to build Xen. In that case we keep
> hashes of those components in our repos, and the hashes were obtained by
> just downloading the component "by a fair amount of parties" via "a fair
> amount of internet connections" :) See e.g. [2]
>
> [1]
https://wiki.qubes-os.org/trac/ticket/203
>
> [2]
>
http://git.qubes-os.org/?p=joanna/desktop-linux-kde.git;a=blob;f=kde-baseapps/sources-4.9.5;h=7cd127e8a0f098a9428f7bee1bf45c87c5b7500c;hb=HEAD
>
[1]
http://dev.chromium.org/sts
[2]
https://src.chromium.org/viewvc/chrome/trunk/src/net/http/transport_security_state_static.json
[3]
https://github.com/micahflee/torbrowser-launcher
[4]
https://www.eff.org/deeplinks/2012/02/https-everywhere-decentralized-ssl-observatory
--
Micah Lee