The Enigma Machine

By George McCormack

Enigma was the name of the machine the Germans used to encode messages for the German war effort. The way Enigma encrypted messages was based on mathematical permutations of the letters of the alphabet. Everyday, the Germans would set up the machine in a different way so that messages were never encoded identically. A set of encryption wheels would be put into the machine in a different order. To further increase the number of alphabetical permutations, there was a plug board in front of the machine that would add additional permutations to pairs of letters. The number of permutations Enigma could generate was 150 million, million, million.

There were two reasons why the Enigma code was eventually broken. The first was its design was not perfectly random, and the second was because Enigma operators made mistakes. Enigma operators would fill their messages with stock phrases like, “Heil Hitler,” and because the machines never coded a letter to itself, these stock phrases could be used to crack the setting for the day. Throughout the war, adding extra wheels and randomizing settings would set the code breakers back for months. However, the German’s overconfidence in Enigma led to its ultimate failure.

During one period, when the allies could decipher no messages, a book of random letter pairings was captured revealing Enigma settings. With this knowledge and a set of clever initial guesses, mathematical algorithms were devised by Alan Turing to rule out large groups of Enigma settings. By enhancing a device developed by Polish mathematicians, Turing wrote the algorithms for electronic devices called the bombes. These devices made a ticking sound as they proceeded through the decoding algorithm. The bombes were so efficient at decoding Enigma messages that, at one point during the war, English intelligence was decoding German messages faster than the Germans in the field.

Question Gallery

  1. In exactly how many ways can four different letters be permutated?
  2. How would you define the word, “random”?
  3. Can human engineer a completely random device? Why or why not?
  4. Write a short one-sentence message in code and give it to the person next to you. How could you make your coding method more complex? Are there any obvious weaknesses in your coding method?