The Breaking of German Naval Enigma
by Tony Sale | Back to Naval Enigma Index |

Tony Sale's
Codes and Ciphers


Alan Turing realised, when he was first looking at German Naval Enigma in 1938, that it might be possible to exploit the German cryptographic mistake of putting the wheel turnover notches at different letter positions for each wheel. He reasoned that if it could be shown that for a given days messages, turnover could NOT occur in certain ranges on the input alphabet, this would PRECLUDE certain wheels from being on the right hand side.

That this might be possible depended on German Naval procedure requiring all Enigmas on a given network for a given day, to encipher their message setting from the same three letter wheel start position, the Grund.

Then provided that the Bigram Tables had been capture or re-created, the code breakers had the enciphered message setting (the trigram). They did not know what the original message setting was but they had its encryption starting at the Grund.

Since all encipherments started at the Grund, the same letter at the same place in a pair of enciphered message settings meant that the unknown message setting letters must also have been the same.

If the trigrams differ only in the last letter then the message starts must also only differ in the last letter. If you have two lengths of cipher text and from the trigrams you think that they may have been enciphered from nearly the same wheel start positions, then Banburismus enable you to find the difference in start postions of the two texts. This only works because the letter distribution of language text is not flat random.

This can be demonstrated for two German U Boat messages from 29th July 1941. Click here to investgate two messages.

You need to "Encipher German Texts" and then scroll down on the right hand panel to get to "Histogram of Cipher" and "Histogram of source".

When these are clicked, the histograms show quite clearly the nearly flat distribution of the cipher letters and the very peaky distribution of German text letters.

Banburismus depends on this non-random text letter distribution. What it means is that there is a probability that if two messages start at different encipherment points, at some point down the messages, the same letter will occur in both texts and this same letter when keyed into the Enigma machine will result in the same cipher letter but only when one message has "caught up" with the other. In the example, the starts are CGC and CGG. Thus when the first four characters of the first message have been keyed in, its Enigma machine has advanced to CGG which is where the second message starts its encipherment. From that point on both Enigmas are advancing in synchronism, so if the same letter appears by chance in the two messages the enciphered texts will match at that point.

So do enough "same letters" appear by chance in two German texts offset by various amounts? Click here to compare the two German texts and their encipherments. Click "Encipher German Texts" first then scroll down to "Compare two sources" and click on it.

You will see that there is large number of matching letters shown by the count at each offset. (the letters are actually counts as described in the page heading). Thus there is a POSSIBILITY of a large count of same cipher letters when the two cipher texts are aligned at the offsets corresponding to the difference in the right hand wheel start letters.

This is where Banbury Sheets come in. This involves punching the two cipher texts onto different sheets and then these sheets being slid past one another counting the holes that overlap. Hopefully the maximum score corresponds to the offset of the original encipherment starts.

To see this for yourself Click here and after "Encipher German Texts" scroll down to and click "Set Banbury Sheets". You can then click "Move Right" to move the second (top) sheet to the right. (it takes a few moments to recalculate the sheet overlap).

Continue moving right the hole counts stay low until a hole count of 11 occurs at offset 4, which is the difference between starts CGC and CGG. As a check, on moving right again, the count drops to 6.

If you scroll down to and click on "Compare Just two Ciphers" you can see the resultant counts of sequentially moving the Banbury Sheet right. This comfirms the maximum count at offset 4 (letter "e" at the top) (a=0).

This alignment of cipher text starts is known as a "depth".

The German text of the two messages is shown in the right hand panel and can be printed by first clicking on the panel then going to "print" on the browser control bar.

Its even more spectacular if you compare two continous enicipherements of the same letter, E as it happens, from the start positions CGD and CGH.

Click here and then click "Encipher German Texts", scroll down to the "Cipher Texts" text boxes and change 01 to 03 and 02 to 04. Now scroll down to Histograms and look at the histogram for the enciphered text of message 3. This looks a pretty normal cipher distribution, but now look at the histogram for source 3. Just E!!

Go up to "Set Banbury Sheets" and click it. Now when the top sheet is moved right a vast score appears at offset 4. Suddenly all the hole line up.

This is what you would expect since at this point the first Enigma has caught up with the second Enigma and exactly the same enciphered letters are being produced by each encipherment from that point.

You may think that the punching into sheets was an over elaborate method for counting coincidences along two alphabetic strings. Not so, it is very difficult to spot coincidences in letter strings, especially doing it for long periods at high speed and under stress. The "holes" method, although more time consuming, was far more accurate, a vital neccessity when dealing with very small statistical results.

This page was originally created by the late Tony Sale
the original curator of the Bletchley Park Museum