M4 Message Breaking Project




The M4 message breaking project is attempting to break 3 encrypted signals (messages) which were intercepted in the North Atlantic in 1942 and which are believed to be unbroken. These signals were presented by Ralph Erskine in a letter to the journal Cryptologia in December, 1995. The signals were presumably enciphered with the four rotor Enigma M4 cipher machine. The project broke one of the signals on February 20, 2006, and hopes to break the other two within one month with enough participation. The project expects to crack each cipher with 1 to 10 walks through the Enigma keyspace. See the project's latest results.

The project cracked its first message on February 20, 2006. It cracked its second message on March 7, 2006.

On May 27, 2008, the project attempted to decode the Scharnhorst message and succeeded the next day.

The project uses "a mixture of brute force and a hill climbing algorithm" to crack each cipher. The Enigma keyspace is too large for a brute force approach. The hill climbing algorithm tries to optimize the plugboard settings (which form a very large part of the keyspace) by changing the settings one step at a time and evaluating each step by determining how closely the deciphered plaintext matches the statistics of natural language. The scoring function uses Sinkov Statistics. The software client uses a Python script to download a workunit containing a range of 26^4 keys. It then uses a C program to test each key in the range, and then returns the best or most-fit result to the project server.

See the M4 wiki for notes on running the client interactively, for running it on Mac OSX and Solaris, for running the client behind a firewall, and for many other useful tips. Note that there is no way to specify a user ID or to see your individual statistics. The client supports checkpointing, so it will restart at the point you stopped it the next time you run it. The latest version of the client is available for all supported platforms as of March 29. This version "avoids duplicate scrambler testing and has the ability to download new dictionaries. It also uses different naval dictionaries. Participants are encouraged to upgrade to the latest version as soon as possible.

Join a mailing list about this project.