How to remain secure against NSA surveillance
theguardian.com
theguardian.com
SKETCHY ADVICE. Tor might make targeted attacks on you personally take more work, but because Tor attempts to provide anonymity and not confidentiality or integrity, it may make you more susceptible to dragnet surveillance.
2) Encrypt your communications. Use TLS. Use IPsec.
Great advice. But prefer TLS to IPsec, which is largely the provenance of commercial systems and the product of much more vendor-centric standardization.
3) Assume that while your computer can be compromised, it would take work and risk on the part of the NSA – so it probably isn't.
Sure, I guess.
4) Be suspicious of commercial encryption software, especially from large vendors.
Absolutely, great advice.
5) Try to use public-domain encryption that has to be compatible with other implementations.
This starts out great. This sentence is great. It continues:
Prefer symmetric cryptography over public-key cryptography.
Dead on, absolutely. Number-theoretic public-key crypto is terrifying. But then:
Prefer conventional discrete-log-based systems over elliptic-curve systems; the latter have constants that the NSA influences when they can.
ARGH NO ARGH. First, conventional DLP systems also have suspect parameters. Second, the best ECC systems have parameters of well-known provenance. Third, ECC systems are known to be stronger than DLP systems. In fact, the most likely source of any claim about an NSA cryptographic breakthrough is that NSA has a viable attack on RSA-1024 (an IFP system, but six of one).
If you were going to change one thing about the way you decrypted in the wake of today's "new information", make it be that you abandon RSA.
It's really as many suspect - they are prepared for targeting the crypto implementations, through exploits or backdoors and if they can't they can target your computer.
Also, open-source is of course safer and some of us have been repeating for years that you can't trust binary blobs, security being just one reason out of many.
Only if you're auditing the code and building it yourself, or have a trusted place where that's done. I would wager that for the vast majority of users are just using the binary blob provided by someone. Otherwise, the "code" you're using could be as compromised as any closed source program.
Binary blobs can be checked easily if they originated from the source code published. Major Linux distributions, like Debian, have people all over the world auditing the repository. If a backdoor is planted, with the repository being public, most projects have a full history of whom added what and when. Code reviews happen too.
They would have to get the base distribution signing key, which is probably a shared secret that requires multiple people to unlock.
Have there been any hints of NSLs or FISC orders requiring the disclosure of private Linux distribution keys, some of which may not even be held in the US?
So, since they don't specifically need to patch your openssl package to compromise your openssl library, they could just as well suborn the signing key of (presuming Ubuntu) some PPA author, as long as the user they're trying to bug has that PPA in their sources.list.
http://www.oracle.com/technetwork/server-storage/solaris11/t...
That coupled with system wide snapshots is a great tool to audit a system after a patch is applied.
Packaging systems do detect file collisions, however, and with something vaguely similar to checkinstall or fakeroot they could detect attempts to overwrite other packages' files in the pre- and post-install scripts.
On the other hand, audit is possible, which is a hell of a lot better than the alternative, limiting their options to underhanded subversion is again better than the alternative, and to my knowledge nobody has actually ever picked up on a case of this happening (while we do know they have had the security of close-source software subverted).
(I wonder if anyone's audited gcc/clang binaries installed in readily available linux/bsd/MacOSX distros to see if they're free of "Reflections on Trusting Trust" concerns?)
To be sure, absent the measures you describe the effect is significantly weaker than with them, and other effects may dominate.
If you're not, then it absolutely is not an improvement. The attack vector has just shifted slightly.
Using FLOSS, alone, is a marginal improvement in security, other things being equal. It can be combined with still other measures to make a bigger difference.
Which parameters are those? For a classic DH run, there are just two parameters: a prime p, and a generator g. Normally you generate these yourself. Any safe prime is good as a p, and g is usually 2 or 5.
Contrast this to ECC where generation of parameters (the "curve") is so complex that you never do this yourself. You use one of the published curves, for example the ones specified by NIST.
So, I can't judge if ECC was "tweaked" by the NSA or not, but the original statement is true that ECC contains more "magic numbers" than DH, which contains none.
(tin foil speculation) It isn't known if the NSA already has methods that, with this specified set, is more easily broken or is already broken.
I'm certainly not claiming that conventional DLP is more complicated than ECC, though.
NIST publishes standard curves because the instruction list to generate them would require describing Schoof's algorithm to count points, among other things.
I no longer trust the constants. I believe the NSA has manipulated them through their relationships with industry.
http://www.schneier.com/blog/archives/2013/09/the_nsa_is_bre...
On the other hand it is easy to avoid ECC altogether in this scenario.
EDIT: Grammar
For the purposes of exchanging symmetric keys, what would you recommend as a replacement for RSA when configuring various services (tls-based servers, ssh, etc...) that rely on key exchange?
(Note I'm speaking with only cursory knowledge of security -- which boils down to "use RSA 4096 or the like for key-exchange, use well known open sourced and audited implementations of TLS", etc...)
ARGH NO ARGH. ...
Bruce Schneier's suggestion comes after reading countless TS and secret documents. I'm going to go with his advice.
When I read this, I realized that I can't recall Schneier ever saying anything positive about switching to ECC. (Although that's more or less off the top of my head.)
Along those lines, he had a recent post[1] regarding the Blackhat Cryptopocalypse presentation (that you helped with ^D^D^D^D^D^D^D^D^D^D^D were credited on) where he spoke optimistically about the ability of classic number-theoretic ciphers to choose key lengths that out-pace mathematical breakthroughs.
So, it doesn't surprise me to hear him say that.
[1]: https://www.schneier.com/blog/archives/2013/08/the_cryptopoc...
Why is that?
You better believe the NSA can do this
Regardless, even if the hidden service is a node itself, a passive observer can still do traffic correlation attacks. It just requires more resources.
[0]https://www.torproject.org/docs/hidden-services.html.en [1]https://www.torproject.org/docs/tor-hidden-service.html.en
You are correct that a HS node doesn't have to be a bridge, etc. But it is a good idea to mask the traffic.
The keylength is a "known weakness" to the developers and, while the plan is to eventually shift to longer keylengths, I don't believe there is any goal or deadline for that to happen.
So when Rasmus Lerdorf checked in a change to PHP that broke crypt(), and then made a release without bothering to run the tests (he claimed that "This is mostly because we have too many test failures which is primarily caused by us adding tests for bug reports before actually fixing the bug."), was that actually because he was working for the NSA to install a giant backdoor in PHP, and not just completely incompetent and totally negligent? https://plus.google.com/113641248237520845183/posts/g68d9RvR...
"We have things like protected properties. We have abstract methods. We have all this stuff that your computer science teacher told you you should be using. I don't care about this crap at all." -Rasmus Lerdorf
"I'm not a real programmer. I throw together things until it works then I move on. The real programmers will say "Yeah it works but you're leaking memory everywhere. Perhaps we should fix that." I’ll just restart Apache every 10 requests." -Rasmus Lerdorf
0. Don't use a cell phone.
1. Don't use Google.
2. Don't use Skype or any other VOIP or telephone service.
3. Don't use social networks.
4. Don't use electronic money, including the bank account you are presently being paid in to.
5. Don't use individually booked international flights or ships.
6. Don't use email.
7. Don't communicate regularly with the same set of people. If you must communicate, do it either using steganography or in brief and without revealing any identifying information (spelling, voice, writing style, etc.)
"Since I started working with Snowden's documents, I have been using GPG, Silent Circle, Tails, OTR, TrueCrypt, BleachBit, and a few other things I'm not going to write about."
My take on that is that the author does not trust all the things he advises us to use, since he relies on other things he is not going to tell us about. Which means he is safe(r), we are not, and wont be, since he wont share.
Great. What use is all that then? None.
BTW, Just read that O2 UK are blocking VPN traffic.....
Where does it say that? I can't find it
You have to wonder about the Android SecureRandom weakness just discussed in recent weeks:
http://android-developers.blogspot.com/2013/08/some-securera...
Exactly the situation described by Schneier. Normally I would dismiss this out of hand as pure tin hattery. Scarily, I'm actually wondering.
Wasn't this one transfer mechanism for stuxnet? Once a computer is infected, you have to at least suspect that anything that touches it directly or indirectly is infected. It's like an STD.
Or maybe it waits a week before it starts injecting binary, just to wait out your test and validation procedures...
It's not like the US is desperate to know what's in the documents. They already know what's in them. They're the US's own documents. They just want to stop them being published. Raiding Schneier wouldn't do anything to help with that, it'd just mean he has to go over to the Guardian's offices to do the analyzing - it's not like the copies he has are the only ones.
The Guardian's already confirmed that they have copies at at least their New York and Brazil offices, and you can bet they have plans in case those are raided. (Last resort, they're almost certainly part of the august 2013 Wikileaks insurance release, which someone just needs to tweet the password for if somehow all the guardians' copies are simultaneously destroyed).
First, RSA is about factoring composites.
Second, factoring those composites at popular key sizes isn't impossible.
Third, public-key algorithms are much harder to get right; they involve direct mathematical operations on plaintexts and devolve to well-studied math problems much more readily than symmetric ciphers do.
You should absolutely avoid public-key crypto, including public-key key agreement schemes like Diffie-Hellman, if your needs don't absolutely require them.
Also, while PKE is sensitive to implementation issues and parameter choices, you can have much higher assurance that there are no theoretical weaknesses than you can have with something like AES. With PKE you usually have a proof that the security of the system depends on the hardness of one problem, regardless of the specific attack strategy the adversary uses. We do not say that ElGamal is secure against chosen plaintext attacks because we ran a battery of tests designed to detect vulnerabilities to particular CPA strategies; we say it is secure because we can prove that any CPA attack on ElGamal can be used to solve the DLOG problem, and so we only really have to worry about the lower bound on solutions to one problem. With something like AES we only test for certain attack strategies and a few general heuristics that suggest a block cipher is secure.
This is not to say that AES is not secure, nor that PKE is a magic bullet.
Always avoiding public-key isn't really possible unless you have some sort of secure channel to agree on a key for some communication. But then again, if you have that channel, you might just as well communicate through that.
When encrypting files locally though, there is absolutely no reason I can think of to use public-key cryptography.
So that you don't lose your decryption key just because your computer was encrypting when it was seized?
Of course, if the weaknesses are sufficient, then that's irrelevant, but it's certainly "a reason".
Is there an alternative to public-key crypto? We all need to do stuff online.
Yet what of basic online communications where key-exchange is necessary and where we have very little say about the protocols involved?
No I got that just fine. As you know, I'm suggesting that not using public-key crypto or something else for the same purpose is impractical.
This is "sort-of" what I've come to think Miranda was facilitating for Greenwald - it makes little sense that the purpose was for him to mainly carry documents, as while the documents would be more secure if he was not stopped vs. transferring them via the internet, they would have had to consider the possibility that he might be.
But if you pass along a lot of random data, then if it never leaves your possesion, you can be reasonably sure that that data can be safely used as a source for one time pads or keys. If it gets intercepted, then so what? You just ignore that batch of data even if it is handed back to you.
Of course, with UK law saying they can detain you indefinitely until you hand over your keys if they think a file is encrypted, that might not be a good move... though obviously in retrospect they didn't make use of that here.
You probably didn't mean it that way but I feel like fixing that. Prime numbers have no factors except for 1 and themselves. That's the definition of a prime number. What you're thinking about are composites which are a product of two large prime numbers.
[1] http://en.wikipedia.org/wiki/Primality_test#Fast_determinist...
Among the specific accomplishments for 2013, the NSA expects the program to obtain access to "data flowing through a hub for a major communications provider" and to a "major internet peer-to-peer voice and text communications system".
What could this be: "major internet peer-to-peer voice and text communications system" ?!
We already know Skype is compromised and it's not P2P anymore anyway. So what are they talking about? Which other major P2P service for voice and text is there?
I have to wonder if, maybe in some instances, this is why it takes so long for some vendors to patch the vulnerabilities in their software. Maybe some of the problems we report were really there intentionally?
Then turn the en/decryption code into just a simple command line program that reads a file and writes a file -- no opportunity for the spooks to corrupt that code either.
Then call it done. So, for e-mail, type some text into a simple file, wash it through own command line encryption software, get out the file of simple text of the base 64 of the encryption, pull that text into the e-mail program, and send it.
I'm not 'getting it' on just where the security vulnerability is here.
Again, the crucial point is that the core en/decryption code is darned short, quite close to the well known math, and can be checked against some open source code.
Then, if everyone writes their own code in this way and discovers that they are 'interoperable', then everyone knows that they did good work even if they never actually share code.
I'm not getting why this can't work?
Oops. You forgot padding. Because of some strange identity that applies to the simple math you just implemented straight from the textbook, all your encrypted data can be trivially decrypted.
Timing attacks would certainly be harder if you're never signing anything in a situation the attacker controls, but I'm leery about claiming nothing could be done.
Haven't yet implemented the little de/encryption command line program l described so don't know just how I'd store my private RSA key. The private key would likely be just on my computer some place as just ordinary data maybe with a comment that clearly describes the data as my private key.
I'm not sure what you mean by a "passphrase", but I can guess; with my guess, no, I wouldn't do that because (1) it makes life harder for me and (2) doesn't really make decrypting my data much more difficult for an attacker.
> when you take your computer in for repair
Right, if I lose physical control of my computer, then all or nearly all the data I encrypted can now be decrypted by others.
So, right, for anyone who would lose physical control of his computer for any reason, the 'approach to computer security' I outlined would have a huge hole in it.
In my case, I would never take my computer for repair since I built and repair my own computer.
One huge point I keep trying to bring up to friends when I talk about security is: yes if you are the specific target of the state or any asymmetrically powerful adversary you are in a lot of trouble.
But with large scale surveillance the bigger concern is not becoming a target in the first place. Properly securing sensitive communications is a good first step in ensuring that you aren't picked up in sweep through the data.
Sure encryption in the first place may flag you, but at least in the current situation it isn't going to be enough to invoke any rubber hose techniques.
I propose that people abandon the concept that they can archive their email forever, and instead use systems like a Mission Impossible Tape that self-destructs the instant you're done reading it.
I propose that the only way to stop the government from making you decipher your messages, is if it's impossible for you to decipher them.
Everyone should use Perfect Forward Secrecy systems.
If the NSA had compromised certificates on the operating system, how would Chrome detect that a MITM attack was being attempted?
The security provided by the feature, in this case, is then questionable. I'd trust Firefox and Chromium, but not Chrome for this reason.
Talk to people face-to-face, maybe?
If I were to use only symmetric encryption then how do I prevent man in the middle attacks?
It's not enough to protect yourself, even if you could. You are not OK even if you manage to protect yourself, because your friends and family and loved ones and colleagues are mostly, if not all, compromised.
The long term goal should still be for everything to be encrypted. But the near-term goal should be to utterly dismantle the NSA. It should all be taken apart, brick from brick, and destroyed. The people who put it into place should be removed from power and prosecuted.
That's the way it is, and will be until people wake up and change politics.
We should aim to plug the holes now. The race isn't over just because another runner got a little bit ahead.