Software Enigma v0.1.1 (c) Copyright 2000 by Konrad Rieck Roqefellaz - http://www.roqe.org/senigma DOCUMENTATION --------------------------------------------------------------------------- * What is the Software Enigma? The Software Enigma is a little application that imitates the original behaviour of the Enigma, a cryptographic device that was used in World War II by the german Nazis. The cipher mechanism was cracked by several different parties (polish, english, ...) in the 40s. The enigma uses a symmetrical encryption algorithm based on 3 wheels that carry letters in a random order and a reflector wheel also carring letters in random order. A letter passes the 3 wheels, the reflector wheel and then passes the wheels reverse. after each letter the position of the wheels is changed according to the Enigma specifications, see the links below. You can find several links regarding the history of the Enigma and solving its cipher mechanism at: http://www.pbs.org/wgbh/nova/decoding http://home.us.net/~encore/Enigma/enigma.html http://www.trincoll.edu/depts/cpsc/cryptography/enigma.html The Software Enigma was designed in order to demonstrate the techniques used to crack this mechanism in a coding competition in summer 2000. The Software Enigma is able to work with more than 3 wheels and can handle more than 26 different charakters. See the Configuration section for more information. * Configuration Beside the operating system specific configuration that should be made in the Makefile, there are some definitions that control the behaviour of the cipher algorithm. You can find these definitions in the wheel.h file. Take a look at this file and modify the definitions to fit your needs, e.g. reconstructing the original Enigma behaviour or reconstructing the behaviour of later Enigma machines that used 4 wheels. * Compilation The cryptographic power of the Enigma and the Software Enigma is based on the wheels that pass the charakters while enciphering, at the first step you should generate the senigma.h file that helds exactly the layout of these wheels by executing: $ make new-wheels Whenever you generate new wheels old messages cannot be encrypted therefore you should use the following directive if you want to recompile the sengima binary and keep the wheel configuration untouched: $ make senigma * Usage The senigma binary en/decrypts an input file and generates an output file with the new content. Depending on how many wheels you used for your configuration the command line will look like this: $ ./senigma ... This combination of the keys is the key for en/deciphering the input file. * Credits The code was developed by Konrad Rieck. Thanks for comments and help to Fabian Kroenner and Konrad Kretschmer.