Implement a simulator for a 3-rotor Enigma type machine with symmetric reflector and plugboard accomodating up to 13 cables (thus allowing all letters to be swapped). Your progam should permit easy redefinition of rotors, and should permit a plugboard setting and initial rotor position to be specified as a key. Use simple "odometer" gearing - rotor 1 counts up from 0 to 25 (or a to z), rotor 2 clicks one step, etc. Make the fastest moving rotor the one closest to the plugboard (and hence farthest from the reflector)
Wiring of rotors and reflectors of original German enigma (from http://www.enigma-replica.com/wiring.html)
In.....A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
1......E K M F L G D Q V Z N T O W Y H X U S P A I B R C J
2......A J D K S I R U X B L H W T M C Q G Z N P Y F V O E
3......B D F H J L C P R T X V Z N Y E I W G A K M U S Q O
4......E S O V P Z J A Y Q U I R H X L N F T G K D C M W B
5......V Z B R G I T Y U P S D N H L X A W M J Q O F E C K
6......J P G V O U M F Y Q B E N H Z R D K A S X L I C T W
7......N Z J H G R C X M Y S W B O U F A I V L P E K Q D T
8......F K Q H T L X O C B J S P D Z R A M E W N I U Y G V
B......Y R U H Q S L D P X N G O K M I E B F Z C W V J A T
C......F V P J I A O Y E D R Z X W G C T K U Q S B N M H L
Using rotors 1, 2, and 3, reflector B, and 6 plugs, encrypt two messages, in english, of (at least) 50 and 1000 characters using the same key (and plugboard setting), and another pair using a different key (and plugboard setting). The 50 character messages will serve as a crib for decrypting the longer, so corresponding plaintext of those should be placed with them in the puzzle file.
Decrypt the enigma encryption you were given. Recover the plaintext of the 50 and 1000 character messages along with the (common) plugboard and rotor settings. The 50 character message with known plaintext can be used as a crib to obtain the rotor settings and some, if not all, of the plugboard settings. The 1000 character message should then be decryptable, serving as a check on the initial key determination, and as data to recover any still unknown plugboard settings. Note that this is somewhat easier than the problem where the long message has different rotor settings but the same plugboard settings) The character loop approach (Turing's method) described in Singh might be helpful here, though the description is incomplete, and the use of multiple loops seems to be necessary. More directly, a partial trail decryption leveraging the fact that only 6 plugs are used can be employed to find rotor and plugboard settings. In any case you can use your encryption program as a basis for a bombe simulator. If you are feeling really ambitious, you could try a ciphertext only attack on the 1000 character message using the index-of-coincidence approach outlined in class. 1000 characters should be enough to give you a good chance of cracking the six plug setup.
The prof has an article that outlines how the ciphertext-only decryption can be carried out (using index of coincidence again), so if you want to do this project you'll want to see him for a copy. This page is maintained by CB.
Last update: 21.8.03.