Breaking A Monoalphabetic Encryption System Using a Known Plaintext Attack

We recall that Monoalphabetic substitution is a system of encryption where every occurrence of a particular plaintext letter is replaced by a cyphertext letter. For instance, Caesar substitution is monoalphabetic while Vigenere is not. A 2x2 Hill encryption is a monoalphabetic substitution acting on pairs of letters. Keep in mind that the definition of a monoalphabetic substitution allows for the possibility that two distinct plaintext letters are replaced by the same cyphertext letter. However, to break this system using a known plaintext attack, we will require that any two distinct plaintext letters are replaced by two distinct cyphertext letters.

To encrypt (decrypt) using the Applet below, simply cut and paste your plaintext (cyphertext) into the textarea, select Encrypt (Decrypt) and start entering your key. The plaintext (cyphertext) will be encoded (decoded) as you enter the key. To enter a key, first click in the square below (above) the plaintext (cyphertext) letter you want to encrypt (decrypt). The square should now be highlighted in yellow. Now type the corresponding cyphertext (plaintext) letter. The square to the right should now be highlighted. To delete a letter, click on the appropriate box and simply press Back Space or Del. The Space Bar and Arrow keys can be used to cycle through the key without editing it. Notice that letters that do not yet occur in the key are shaded gray.

IMPORTANT: The applet allows for the partial encryption/decryption of a monoalphabetic substitution. To this end, we will use the convention that plaintext letters are always in uppercase and cyphertext letters are always in lowercase.

To break a monoalphabetic substitution using a known plaintext attack, we can take advantage of the fact that any pair of letters in the original plaintext message is replaced by a pair of letters with the same pattern. In other words, if two letters of paintext are distinct, then their corresponding letters of cyphertext must also be distinct. To illustrate this, if we know that the word "AMMUNITION" appears in the plaintext, then we can look for strings of 10 consecutive letters of cyphertext that have the following pattern:

Once we have found all possible matches, we can use a chi-squared statistic to determine which one is the most likely match for the known plaintext.

The Applet below is programmed to illustrate this codebreaking process.

Here's an example of how this codebreaking process might take place.

[Back| Home| Programs| Documentation| Internet| People]