Hey! I'm David, a security engineer at the Blockchain team of Facebook, previously a security consultant for the Cryptography Services of NCC Group. I'm also the author of the Real World Cryptography book. This is my blog about cryptography and security and other related topics that I find interesting.

# Links from the past weeks posted June 2015

## Daniel J. Bernstein: "How to manipulate standards"

DJB being DJB

The funny tale of a dude who wants to safely ssh to his server on his brand new windows laptop. This follows by how to safely download, execute and use PuttY... and it's hilarious.

## Cloudflare explains Logjam

An awesome article written by Filippo that complements mine quite well. I don't know who made this logo but it rocks!

## Recent Hacks

A timeline of famous hacks, leaks, etc... If you are curious

## Cooperative Strategy

A whitehouse blogpost by Ed Felten on cooperative strategy, a nice counter-intuitive puzzle that I will not forget!

Alice and Bob are playing a game. They are teammates, so they will win or lose together. Before the game starts, they can talk to each other and agree on a strategy.
When the game starts, Alice and Bob go into separate soundproof rooms – they cannot communicate with each other in any way. They each flip a coin and note whether it came up Heads or Tails. (No funny business allowed – it has to be an honest coin flip and they have to tell the truth later about how it came out.) Now Alice writes down a guess as to the result of Bob’s coin flip; and Bob likewise writes down a guess as to Alice’s flip.
If either or both of the written-down guesses turns out to be correct, then Alice and Bob both win as a team. But if both written-down guesses are wrong, then they both lose.

## Cryptography in Wolfram

Okay that one seems kind of useless. But if someone wants to tell me otherwise I'm all ears! But this seems more like a stunt to introduce their new cloud service:

One of the main motivations for adding cryptographic functionality to the Wolfram Language was the arrival of the Wolfram Cloud.

If you haven't heard, some people from (or not) Lulzsec have found some serious vulns on the Hola! Plugin. And also they are not happy. Personally I find this Hola! really useful as a free solution to get a netflix US account when not in the US and being able to watch youtube (because everything is "blocked in your country" when you are not in the US). And the fact that you are basically a TOR node is also nice, it increases global anonymity! But that's just my opinion.

## Elliptic Curve Playground

Play with elliptic curves!

## MOAR?

You can find more on the links section. You can also suggest me links there =)

1 comment

# The Logjam Attack posted May 2015

Since it is now common custom to market a new vulnerability, here is the page: weakdh.org you will notice their lazyness in the non-use of a vulnerability logo.

The paper containing most information is here:

Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice, from a impressive amounts of experts (David Adrian, Karthikeyan Bhargavan, Zakir Durumeric, Pierrick Gaudry, Matthew Green, J. Alex Halderman, Nadia Heninger, Drew Springall, Emmanuel Thomé, Luke Valenta, Benjamin VanderSloot, Eric Wustrow, Santiago Zanella-Béguelin, Paul Zimmermann)

## Not an implementation bug, flaw lives in the TLS protocol

This is not an implementation bug. This is a direct flaw of the TLS protocol.

This is also a Man in The Middle attack. By being in the middle, the attacker can modify the ClientHello packet to force the server to use an Export Ciphersuite, i.e. Export Ephemeral Diffie-Hellman, that uses weak parameters. I already explained what is an "Export" ciphersuite when the FREAK attack happened.

The server then generates weak parameters for a public key and sends 4 messages:

• ServerHello that specifies the Ciphersuite chosen from the list the Client gave him (if the attacker did things correctly, the server must have chosen an Export ciphersuite)
• Certificate which is the server's certificate
• ServerKeyExchange which contains the weak parameters and his public key.
• ServerHelloDone which signals the end of his transmission.

The ServerKeyExchange message is here because an "ephemeral" ciphersuite is used. So the Server and the Client need extra messages to compute an "ephemeral" key together. Using an Export DHE (Ephemeral Diffie-Hellman) or a normal DHE do not change the structure of the ServerKeyExchange message. And that's one of the problem since the server only signs this part with his long term public key.

Here you can see the four messages in Wireshark, the signature is computed on the Client.Random, the Server.Random and the ECDH parameters contained in the ServerKeyExchange.

Thus, the attacker only has to modify the unsigned part of the ServerHello message to tell the Client his normal ciphersuite has been chosen (and not an Export ciphersuite).

Now all the attacker has to do is to crack the private key of either the Client or the Server. Which is easy nowadays because of the low 512bits security of the Export DHE ciphersuite.

It can then pass as the server and read any messages the client wants to send to the server

(taken from the paper)

## Not an implementation bug, but implementations do help

the use of common DHE parameters is making things easier for attackers since they can do a pre-computation phase and use it to quickly crack a private key of a weak DHE parameters during the handshake.

This happens, for example when Apache hardcoded a prime for its Export DHE Ciphersuite that is now used in a bunch of servers

(taken from the paper)

## Defense from the Server

Don't use common DH or DHE parameters! Generate your owns. But even more important, remove the Export Ciphersuites as soon as possible.

# Defense from the Client

From a client perspective, the only defense is to reject small primes in DHE handshakes.

This is the only way of detecting this Man in The Middle attack.

You could also remove DHE in your ciphersuite list and try to use the elliptic curve equivalent ECDHE (Elliptic Curve Diffie-Hellman Ephemeral)

Another way: if you control both the server and the client, you could modify both ends so that the server signs the ciphersuite he chose, and the client verifies that as well.

## 1024 bits primes?

In the 1024-bit case, we estimate that such computations are plausible given nation-state resources, and a close reading of published NSA leaks shows that the agency’s attacks on VPNs are consistent with having achieved such a break. We conclude that moving to stronger key exchange methods should be a priority for the Internet community.

Seems like the NSA doesn't even need to downgrade you. So as a server, or as a client, you should refuse primes <= 1024bits

## Where is TLS used?

TLS is not only used in https!

For example, what about EAP, i.e. wifi authentication? From a quick glance it looks like there are no export ciphersuite.

But weak DH and DHE parameters should be checked as well everywhere you make use of Discrete Logarithm crypto

comment on this story

# Previous Links posted April 2015

There is a Link section here that is not very visible, I don't really know how I could show its content on the frontpage here. But here's one way:

## More

And you can find more on the Links section of this blog

comment on this story

# Plaid CTF posted April 2015

The Plaid Parliament of Pwning, a security team at Carnegie Mellon University is organizing a CTF right now until tomorrow: http://play.plaidctf.com/

There are two crypto challenges at the moment, and maybe more if someone unlocks one. Have fun!

# How would you detect an Evil Twin attack, especially in a new environment? posted April 2015

An interesting question on security.stackexchange

If two wifi have the same name, and you know one is there for a man in the middle attack, then how can you guess which one it is?

There are a lot of interesting answers, like triangulating the signal to see which one is your modem, or checking the MAC address...

comment on this story

# encryption with a one letter XOR? Really? posted April 2015

So there is this app that encrypts your data on your mobile, in case it ends up in the wrong hands. Sounds good. And then there is this guy who took a look at it and figured out the data was just XORed with a 128bit keys consisting of only 4s. If the data is longer than 128bits? Let's not encrypt it!

I don't know how legit it is, especially considering how easy it is to just write aes(something) but here you go

comment on this story

# Unix command of the day: Tee posted April 2015

The tee command allow you to write to a file and still display the result in output.

For exemple

ls

display the content of the current folder in stdout (the terminal)

ls > file.txt

saves that in a file file.txt

ls | tee file.txt

saves that in a file file.txt and displays in stdout at the same time

1 comment

# Truecrypt report posted April 2015

Some news about the Truecrypt open audit: the report is out.

The TL;DR is that based on this audit, Truecrypt appears to be a relatively well-designed piece of crypto software. The NCC audit found no evidence of deliberate backdoors, or any severe design flaws that will make the software insecure in most instances.

comment on this story

# Cryptool... posted March 2015

I just discovered Cryptool. I can't believed I didn't know about that earlier.

The CrypTool Portal raises awareness and interest in encryption techniques for everyone. All learning programs in the CrypTool project are open source and available for free. The CrypTool project develops the world most-widespread free e-learning programs in the area of cryptography and cryptoanalysis.

On their main page (cryptool portal) you have links to: Cryptool 1, Cryptool 2, JCryptool, Cryptool Online and Mystery Twister C3. Each project is a huge amount of information that was gathered by a group of volunteer (so yeah, for free). There are tons of tutorials and ways to play with ciphers to understand them. There is even a coppersmith and boneh-durfee explanation/implementation of the attacks I implemented these last months... This is huge. I feel like I'm just discovering the tip of the iceberg and it's all really confusing so here's a recap of what is everything, for me and for you :)

## Cryptool 1

CrypTool 1 (CT1) was the first version of CrypTool. It was released in 1998 and allows to experiment with different cryptographic algorithms. CT1 runs under Windows. CT1 has two successors: CT2 and JCT.

It doesn't seem like it's useful to dig into this one since CT2 and JCT are supposed to be the updated versions. I've still installed it and it looks really old! But it's super complete and super fast so... still super useful.

## Cryptool 2

CrypTool 2 (CT2) supports visual programming and execution of cascades of cryptographic procedures. CT2 also runs under Windows.

I skimmed through it seeing no resemblance to CT1. I have to spend more time with it but CT1 seemed way more educational and complete...

## JCryptool

JCrypTool (JCT) is platform-independent and runs under Linux, Mac and Windows.

Haven't tried it yet but it looks like a multiplatform CT2

## Cryptool Online

CrypTool-Online (CTO) was released in spring 2009. This tool allows to try out different algorithms in a browser / smartphone.

I'm gonna be honest here, not really nice compared to CT1 and CT2. Pretty limited.

## Mystery Twister C3

You like riddles? You always loved to solve the crosswords in your newspaper? Or maybe you are just curious and want to find out about some of the ways to hide a secret (and possibily even to uncover it)? This is your place! Here at MysteryTwister C3 you can solve crypto challenges, starting from the simple Caesar cipher all the way to modern AES we have challenges for everyone.

The first riddle is just a sequence a number where you have to guess the last entry. Typical IQ test but it has been solved by 2138 people.

There are raffles every month so it might be a nice playground :) play here