Sunday, January 24, 2016

WW2 Ciphers Part 2: On teamwork and the little mistakes that made the difference

Before I move forward with explaining Tunny and the German ciphers, I'm going to take a few minutes and explain at the highest level how they failed. I'm also going to mention one difference I have with Hollywood's recent portrayal of Alan Turing in The Imitation Game.

The movie portrays Turing as socially hostile, fighting against his coworkers and the British Government who had little belief in his work. That is not what happened. Bletchley Park cracked those codes through the determined efforts of hundreds of people, it was an incredible story of team work, not hostility. And it was fully backed by the British Government at the highest levels, and why wouldn't they back it, because early Enigma ciphers had been cracked before World War II even started.

The German Government continued to tinker with the machines, making them more complicated as the war dragged on. The British would crack the codes for a while, and then they would hit a dry patch for a few months with little success before reestablishing a new method. Sometimes they would only crack a few messages a day, sometimes they had wide success. As the Germans continued to add rotors eventually the Colossus machine (featured prominently in the movie) became more and more necessary to assist the scores of young women "computers" that every day followed the mathematical scripts to decode messages.

Both Enigma and Tunny were incredibly powerful ciphers and should have provided enough protection, it was the little mistakes of the hundreds (or thousands) of daily users of those machines that provided the keys to cracking it. The following are some of the failures that enabled the code breakers.

·        The short weather reports were rather easy to guess and allowed the code breakers to propose a starting message and find a key that would match the output. Senders were instructed to not follow forms and to switch up these types of messages but they didn't do so often enough.

·        Each message was sent with a daily key, and an added message key that kept all of the day's messages from being encoded exactly the same way. If users choose the same message key, or reused their own message key it would lead to multiple messages being coded the same. In one of my later posts I'm going to show how you can crack those examples.

·        Sending the exact same message in different ciphers was a different problem. Sometimes an important message would be transmitted verbatim in Enigma or Tunny, and also in a really simple field cipher for those who didn't have an enigma machine. The field ciphers were so easy to crack that they could find the original message and then use that to find the key for the complex ciphers. Once they had the daily key for the complex cipher they could crack hundreds of other messages.

·        Messages were often personally addressed to the main Generals. The code breakers would look for that General's name in the message.

·        When they were in really dire straits, the British would go fishing for the small German weather monitoring boats that had only a couple sailors and an enigma machine. They successfully captured several along with the daily code keys for a month's worth of messages. They successfully did this several times.

·        The information to crack Tunny mostly came from one really intriguing message. In August of 1940 a huge message (4,000) characters was sent with Tunny. But the receiving end didn't get it correctly. They broadcast and unencrypted request for the message to be resent which told the allies what was happening. The sender should have changed the public part of the key before resending but they didn't which left it coded the exact same way. The second problem was that it was almost impossible to exactly key in the 4,000 characters the same way, and the sender used an abbreviation early in the message that offset the twomessages by a few characters. Out of this one small window the British teased out a huge amount of the underlying pseudo-random data used for the enciphering.

I hope you found that interesting, it was a lot more history then the examples of what I'm doing with my example program. Next post we will get back into the program and how it uses exclusive-or arithmetic.

No comments:

Post a Comment