I had tremendous fun being the local expert for the movie Codebreaker that was shown as a part of the 1st Heidelberg Laureate Forum. The folks at the Klaus-Tschira Foundation set up a film festival at Heidelberg's Karlstorkino. The idea was to show a film and get an expert to answer audience questions later on. This Tuesday, I was the expert. At first, I felt slightly out of my depth–the things I don't know about cryptography fill multiple volumes. Still, I was able to engage the audience in a very nice discussion.

The discussion was too short to cover all the material I wanted to talk about. I thus decided to write down my thoughts. This post is more a stream of consciousness than a stringent account of things. My apologies.

The film

As far as I could tell, the film gave a very accurate portrait of the life of Alan Turing. The directors found the ideal balance between drama and information. The mathematical aspects were covered correctly (insofar as they were any). There was one glaring mistake, though: The movie depicted a Turing machine that was unable to write data. But being able to write and read data is the whole point of the machine!

Furthermore, the film mentioned an official apology of the British government concerning Turing's treatment in the 1950s. I thought that this was still an ongoing effort, so I searched for some reports:

Also, the film slightly misrepresented how the Enigma was deciphered. It was not solely Turing's genius, but a team effort of Polish scientists that ultimately led to the machine's downfall. I guess the film tried to convey that Turing's work was superb and without equal, so it makes sense to present the audience the one codebreaker. Don't be fooled, though–even Turing collaborated with other scientists.

A last grievance of the film is the portrayal of the scientific community as such. The film used descriptions such as “a bunch of eccentric mathematicians” and talked about some Turing's eccentric behaviour (wearing a Gas mask because of his hay fever, hiding silver etc.). This narrative device is a nice way of getting a chuckle out of the audience, a sort of comic relief maybe. But it is also very, very trite. These sorts of descriptions seem to strike a nerve with me. If people (whatever their profession) are characterized as brilliant, outstanding, and so on, there seems to be the tendency to ascribe them negative traits such as eccentric, insane, and so on. Is this a crude way of trying to balance the scales somehow? Something like "Turing was brilliant, but his genius came with a large price! (insert dramatic sound here)". Here's my protip for all directors: If you stop painting characters larger-than-life, you won't have to resort to these cheap tricks.

To be fair, the movie does not do this a lot, so I am definitely overreacting here. Still, if you, dear reader, watched that movie without knowing many mathematicians or computer scientists, please don't believe this simple characterization. As Neal Stephenson put it: We are all geeks now

Would you like to know more?

This is where the homework starts. I can recommend several books on Turing and cryptography. They are covered in no particular order:

Neal Stephenson: Cryptonomicon

This is by far my favorite book and in the past 10 years, I have read it numerous times. I even borrowed the Tolkien characterization of people. But I am getting ahead of myself. Without too many spoilers, Cryptonomicon takes you on a joyride through time and space. There are at least three different stories, all connected by pivotal events in the book. The main theme is about cryptography and mathematics. In the dawn of World War II, some mathematicians (including Turing, of course), talk about the future of mathematics. A young man decides to join the marines. War erupts and in general, all hell breaks loose. Fast forward 50 years. Two high-tech entrepreneurs want to install high-speed submarine communications cable in the Philippines.

It does not sound remotely believable, but Neal Stephenson manages to mash these stories into a consistent narrative: Characters you can relate to, science, technology, history, ...

A fair warning: Neal Stephenson likes to digress. A lot. You think you know digressions (maybe from reading this blog?), but compared to Neal Stephenson, everything else I have every read so far pales. So go buy the book already!

George Dyson: Turing's Cathedral

This book covers the historical perspective quite well. It's a heavy read if you are unfamiliar with the material, but it's well worth it in my opinion. The book does not solely focus on Turing, but more on the history of computers in general. Contrary to the title, the main "character" is John von Neumann.

Charles Petzold: Code

By far the most readable and accessible explanation of how computers actually work. This book is really hands-on. Charles Petzold has the remarkable talent of explaining the basic concepts of computers to anyone. I am not a hardware guy myself and even I was tempted to build my own mechanical computer afterwards. This is the book I am forcing people in my family to read so that they can understand that there is nothing magical about computers after all (for balance, I am reading car manuals in order to understand that there is nothing magical about cars).

Simon Singh: The Code Book

This book focuses on cryptography. Simon Singh does a very good job of covering the history of this science, starting from simple substitution ciphers, and ending with quantum computing. There is also a good explanation of the RSA algorithm.

Taking it to the next level

If you are really, really serious about doing cryptography, nothing beats the two bibles written by Bruce Schneier: Applied cryptography and Practical cryptography. However, these books require a solid understanding of imperative programming languages, preferably C or C++. Nothing for the faint of heart. A more accessible introduction to cryptographic algorithms is the CipherSaber project. Here, your goal is to create your own implementation of the RC4 algorithm. Give it a try!

Shameless self-promotion

You might want to take a look at CipherDagger, my own implementation of the CipherSaber algorithm. I wrote this a long time ago and should probably rewrite it, but it might be a good starting point for your own implementation.

Also, if you can read German, why not take a look at my slides about cryptography. The target audience for this talk did not have any in-depth mathematical knowledge, so I tried to keep everything very accessible.

I will probably update this post if I remember anything else that might be of interest. Thanks for bearing with me!

Edit: As a sort of belated Christmas present, I was made aware (thanks, Lutz!) that Alan Turing has finally been pardoned. See this article on the Universal Machine blog.