|Simulating the Turing-Welchman Bombe With A Pi
|Written by Historian
|Saturday, 10 October 2015
If you are looking for a weekend software/hardware project how about buidling your own working replica of that most iconic of machines, the Turing Bombe? Simon Jensen's reverse engineering project uses C++, a Raspberry Pi and an Arduino.
The Bombe was the electro-mechanical device used by British codebreakers to crack the Enigma codes during World War II.
Over the course of their operation Bletchley Park 210 Bombes helped decode up to 5,000 intercepted message per day. Although attributed to Alan Turing with a refinement later added by Gordon Welchman, the initial design came from Polish cryptographers who handed over copies of the Enigma machines together with details of their "bomba kryptologiczna" prior to the German invasion of Poland.
At the end of the war all the Bombes were dismantled.
However a fully-functioning replica was completed in 2007 and is on display at Bletchley Park as shown in this video:
You'll notice that this replica is big, occupying quite a lot of floor space. By contrast Simon Jensen's simulator is small and sits neatly on a table top. Nevertheless it provides a neat demonstration of how the Bombe worked, as explained in this video.
Prior to embarking on the Bombe, Jensen had built a three-rotor Enigma machine wrist watch - a fully functioning version of the type of machine used by German Wermacht in WW2 for encoding messages.
On his Asciimation website Jensen has provided details of both projects and his post announcing Turing-Welchman Bombe completed he writes:
My Turing-Welchman Bombe machine makes use of some software I wrote in C++ running on a Raspberry Pi 2. I figured out for myself how the Bombe worked then wrote my own software version, initially in BASIC of all things to run on my homemade 6502 computer Orwell. With the general algorithm worked out I ported it to C++.
The Raspberry Pi 2 connects to an Arduino which then drives three stepper motors, via driver boards, to turn the three indicator drums on the front of the machine. These drums mimic the three indicators on the real Bombe. The Arduino reports back the position of the drums to the Pi as a series of pulses then the Pi can tell the drums when to stop. An LCD screen on the side of the machine mimics the original Bombe mechanical indicator unit as well as providing a basic user interface. Start and Stop button are provided on the front of the machine as on the real Bombe.
The machine runs in real time (although the next stop is pre-calculated) so a Bombe run should take the same amount of time as a real Bombe run at Bletchley Park.
He goes on to provide details of the casing.
If you are interested in the the way the project unfolded there is a 10-part set of posts covering the entire build which was started in June. This video comes from early in the project:
Jensen also offers to share his C++ code with other enthusiasts!
or email your comment to: firstname.lastname@example.org
|Last Updated ( Saturday, 22 September 2018 )