As a follow up, here are a few tricks that I found with Cryptool 2's Enigma Analyzer:
- Use the search bar one the far left. You'll need a maximum of 3x text inputs, 2x text outputs, and the Enigma Analyzer to do everything.
- ALWAYS input all known settings for model, reflector, rotors, rings, and plugboards (see below for this specifically) if they are known. This will help speed up and improve the accuracy of your decryption. Doing this can make the difference between having an answer in about 10 seconds, or in 100+ years.
- ALWAYS set the language to detect what the message is written in. This will help boost the confidence value, and will give you the correct keys.
- I recommend setting the threads to max when decoding. Unless you are multitasking (IE streaming music, having background applications open, etc.) this will speed up the decryption time considerably.
- I don't mess with the rotor positions and leave them for a search from A to Z for each. If you have other known settings input, this will go quite quick.
- I recommend trying the analysis modes in the following order:
- Trigram Search. Use this if you know the plugboard settings. You'll input those by creating a text input box, and linking it to the bottom left arrow of the Enigma Analyzer, before typing in the plug settings (AEDRCZ etc.) This is by far the fastest method to decode, but you MUST have the plugboard settings known.
- Hillclimbing. Use this if you do not know the plugboard settings, but know MOST of the others. In particular, knowing the reflector, rotor, and ring settings will speed this up considerably. Essentially the Analyzer looks at different settings to get the highest confidence value for the chosen language, and then starts trying plugboard settings. This WILL take longer than a trigram search or a Turing Bombe, but it works great if you don't have a good crib for the message.
- Turing Bombe. If you have a general idea of the structure of a message, have a few strong cribs to try, and don't know most (or any) of the Enigma daily settings, try this. This is much more trial and error based on getting a strong crib, but it will work once you guess the crib directly. MAKE SURE you adjust the crib position FROM and TO settings based on where you expect the crib to appear in the message.
- Simulated Annealing. This method takes the longest, and in my limited experience with the Enigma, I have not had to use it yet. This functions a bit similar to hillclimbing except it WILL have a higher level of accuracy if hillclimbing isn't able to find the optimum settings. This is meant for decoding short messages of about 50 characters where a Turing Bombe attack is not successful due to not being able to guess the crib.
- IoC Search. This looks for an incident of coincidence within Enigma messages. I have not had to use it myself, and found that methods 1, 2, and 3 were all suitable for my current needs.
- Gillogly. This method is designed for long messages and does very poorly at discovering plugboard settings. While it has been proven to attain a 100% success rate at determining rotor settings, I was never able to get it to work correctly in CrypTool 2. In fact, this method led me down the completely wrong path more than a few times before I stopped using it. In reality, it has a lot of merit for 500+ character messages, but in CrypTool 2 I have had zero success.
Additionally, all of these methods have a template prebuilt in CrypTool 2 so you can test it out yourself and see how it works.
Below is how I normally set up my Enigma Analyzer space. Three text inputs, the Enigma Analyzer, and two text outputs is all you need for normal decoding. You can get wild with it and have an entire workspace that takes an original message, applies a Caesar cipher to it, encrypts it on a simulated Enigma, and then decrypts it on an Enigma Analyzer, etc.