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:

- A very recent article in the Guardian
- Some comments on the mistreatment of homosexuals, also in the Guardian
- The original apology from 2009, which the film referred to
- A statement of Gordon Brown concerning said apology

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.