Codebusters

Code Busters was a trial event at the 2016 National Tournament. In this event, up to 3 participants must decode encrypted messages, or they may be required to encode messages with certain advanced ciphers. Competitors are not allowed to bring any resources to this event, but can bring a 4 or 5 function calculator - no scientific or graphing calculators allowed.

Test Description
The test is given in an order of increasing difficulty in an exam booklet, and the supervisor may require answers to be written on index cards instead of the booklet. The very first cryptogram is timed - when solved, a team member should raise their hand/shout "bingo!"/etc to alert the supervisor. Teams will receive bonus points depending on their time, but they may make as many attempts as they want to break the code without any penalties. The first cryptogram may also be used as a tiebreaker. If the first cryptogram is unsolved, teams are automatically put on Tier II. The time bonus for the first code is 1 million divided by the number of seconds taken. Solutions are deemed correct only if the solution is an exact match or differs by only one or two letters.

Because the affine, Hill, and Vigenère ciphers may be hard to decrypt, students may be asked to encrypt with them.

Note: The following cryptogram types are listed in a hierarchy of difficulty.

Mono-alphabetic Substitution
A mono-alphabetic substitution is one where the same plaintext letters are replaced by the same ciphertext letters. Since specific encryption/decryption methods are not mentioned in the rules, a variety of ways will be covered in the following section.

Solving a Caesar Shift cipher
One example of a mono-alphabetic substitution is Caesar shift cipher, where each letter is replaced by one shifted by a certain amount. For example, the following table has each letter shifted three positions to the right.

From this table, it is clear that each shifted letter is the same as the original letter three spaces from it (A becomes D, B becomes E, etc). Thus, a message like "Science Olympiad is cool" would become "Vflhqfh Robpsldg lv frro" using a Caesar shift of 3. The alphabet can be shifted any number of times. This type of cryptogram can be solved through brute force, by taking a section of the message and writing out all 26 possible shifts below it, upon which the message is easily revealed. For example, try to decode "xhntqd". First, write out the ciphertext. Then, write out the possible shifts below it.

After shifting "xhntqd" five times, the plaintext is revealed to be "scioly", and no further shifts need to be tested.

Solving a mono-alphabetic substitution cipher using patterns
This may be the most common way to solve a cipher on a Code Busters test, because the supervisor may not tell you that a Caesar cipher etc. was used to encrypt.


 * 1) Look for words that are only one letter long. These will almost always be A or I, unless the cryptogram is a poem, in which case O may be used.
 * 2) Look for frequency of letters. The 12 most frequent letters in the English alphabet are ETAOIN SHRDLU.
 * 3) Look for contractions. If an apostrophe is seen in the ciphertext, it can be an easy way to start deciphering.

Messages with Spaces and a Hint
These cryptograms are similar to those published in 20th century newspapers.

Messages with Spaces
These cryptograms are similar to NSA and diplomatic messages, and do not have a hint.

Messages with Spaces and Spelling Errors
These cryptograms are similar to FBI and organized crime messages.

Messages without Spaces
These cryptograms are similar to NSA and espionage messages, and have a hint.

Messages without Spaces or Hints
These cryptograms are extremely difficult and may not be tested very frequently.

Messages in Spanish
One cryptogram may be in Spanish as a challenge. At states, there will be exactly one. It may be helpful if one of the partners is fluent in or has a few years of knowledge in Spanish.

For Spanish cryptograms, n and ñ are treated as different letters. However, letters with accents are treated the same as without (a and á are the same). This means that, when working with cryptograms, accent marks do not factor in. Also, ch, ll, and rr are NOT considered distinct letters. Thus, "churro" would have 6 letters: c-h-u-r-r-o. The Spanish alphabet used for cryptograms is as follows:

The frequency table of Spanish letters is as follows, from most to least frequent:

Affine Cipher and Modular Arithmetic
The Affine cipher uses an alphabet of size m with keys a and b such that a and m are coprime (there is no positive divisor for both of them besides 1). Assuming the alphabet is of size 26, a can be 1, 3, 5, 7, 9, 11 ,15, 17, 19, 21, 23 and 25. The most common alphabet is shown below.

The encryption formula for an Affine cipher is: [math]E(x)=(ax+b)\bmod m[/math]

For this example, [math]a=9[/math] and [math]b=42[/math]. Essentially, numbers are plugged into the formula and the resulting number corresponds to the encrypted letter. In the formula, [math]x[/math] is the corresponding number of plaintext. For example, if encrypting N, the [math]x[/math] would be 13.

The encrypted message is IMRAZOWFANW.

If no characters are known, the decryption formula must be used. The formula is: [math]D(x)=a^{-1}(x-b)\bmod 26[/math]

In this case, [math]a^{-1}[/math] is the modular multiplicative inverse of [math]a \bmod m[/math] ([math]aa^{-1}\bmod m=1[/math]). Because there are only 26 values, one can brute force it to find the value of [math]t[/math] where [math]ta \bmod m=1[/math]. [math]t[/math] represents [math]a^{-1}[/math].

The table reveals that [math]a^{-1}=3[/math]. Decrypting then becomes a task of plugging into the formula.

Hill Cipher
NOTE: These cryptograms will be matrix based, and only use 2x2 or 3x3 matrices.

The alphabet for the Hill cipher has corresponding numbers as follows:

Begin by picking a key matrix of either 2x2 or 3x3. These could be a 4 letter word or three 3 letter words. For this example, the key will be WIKI (2x2 matrix). Then, break the message into groups of two. This example will use the message SCIENCE OLYMPIAD, which would be split up into SC IE NC EO LY MP IA DZ. Notice that a Z is added in order to make the last group a group of two. Write the message and the key as matrices.

[math] \begin{pmatrix} W & I \\ K & I \end{pmatrix}*\begin{pmatrix} S \\ C \end{pmatrix}=\begin{pmatrix} 22 & 8 \\ 10 & 8 \end{pmatrix}*\begin{pmatrix} 18 \\ 2 \end{pmatrix}=\begin{pmatrix} 412 \\ 196 \end{pmatrix}\bmod 26=\begin{pmatrix} 22 \\ 14 \end{pmatrix}=\begin{pmatrix} W \\ O \end{pmatrix}[/math]

In the second step of the above equation, the matrices are multiplied. Although it may seem complicated, matrix multiplication is fairly straightforward. [math]\begin{pmatrix} A & B \\ C & D \end{pmatrix}*\begin{pmatrix} E \\ F \end{pmatrix}[/math]

The matrices are multiplied as follows: [math]A[/math] and [math]E[/math] are multiplied, then added to the product of [math]B[/math] and [math]F[/math]. [math]C[/math] and [math]E[/math] are multiplied and added to the product of [math]D[/math] and [math]F[/math]. Thus, the product of the matrices is: [math]\begin{pmatrix} AE + BF \\ CE + DF \end{pmatrix}[/math]

Matrix multiplication for 3x3 matrices is very similar. [math]\begin{pmatrix} A & B & C \\ D & E & F \\ G & H & I \\ \end{pmatrix}*\begin{pmatrix} J & K & L \\ M & N & O \\ P & Q & R \\ \end{pmatrix}[/math] Just like in a 2x2 matrix, the row of the first matrix is multiplied by the column of the second matrix, giving the following product.

[math]\begin{pmatrix} AJ+BM+CP & AK+BN+CQ & AL+BO+CR \\ DJ+EM+FP & DK+EN+FQ & DL+EO+FR \\ GJ+HM+IP & GK+HN+IQ & GL+HO+IR \\ \end{pmatrix}[/math] It is important to note that in order to multiply matrices, the number of columns in the first matrix MUST equal the number of rows in the second matrix. The size of the product matrix is the number of rows in the first matrix x the number of columns in the second matrix.

The "mod" operation is also fairly straightforward. Essentially, it finds the remainder after dividing. For example, [math]153 \bmod 26 [/math] is equal to the remainder of [math]153 / 26[/math], which is 23. On a scientific calculator, this is found by dividing the two numbers, subtracting the integer value from the answer, and multiplying the decimals by the number after "mod" (in this case, 26). Therefore, the process would be:

[math]153/26=5.884615385[/math] [math]5.884615385-5=0.884615385[/math] [math]0.884615385*26=23[/math]

The rest of the encoding of the message is shown below. [math] \begin{pmatrix} W & I \\ K & I \end{pmatrix}*\begin{pmatrix} S \\ C \end{pmatrix}=\begin{pmatrix} 22 & 8 \\ 10 & 8 \end{pmatrix}*\begin{pmatrix} 18 \\ 2 \end{pmatrix}=\begin{pmatrix} 412 \\ 196 \end{pmatrix}\bmod 26=\begin{pmatrix} 22 \\ 14 \end{pmatrix}=\begin{pmatrix} W \\ O \end{pmatrix}[/math]

[math] \begin{pmatrix} W & I \\ K & I \end{pmatrix}*\begin{pmatrix} I \\ E \end{pmatrix}=\begin{pmatrix} 22 & 8 \\ 10 & 8 \end{pmatrix}*\begin{pmatrix} 8 \\ 4 \end{pmatrix}=\begin{pmatrix} 208 \\ 112 \end{pmatrix}\bmod 26=\begin{pmatrix} 0 \\ 8 \end{pmatrix}=\begin{pmatrix} A \\ I \end{pmatrix}[/math]

[math] \begin{pmatrix} W & I \\ K & I \end{pmatrix}*\begin{pmatrix} N \\ C \end{pmatrix}=\begin{pmatrix} 22 & 8 \\ 10 & 8 \end{pmatrix}*\begin{pmatrix} 13 \\ 2 \end{pmatrix}=\begin{pmatrix} 302 \\ 146 \end{pmatrix}\bmod 26=\begin{pmatrix} 16 \\ 16 \end{pmatrix}=\begin{pmatrix} Q \\ Q \end{pmatrix}[/math] [math] \begin{pmatrix} W & I \\ K & I \end{pmatrix}*\begin{pmatrix} E \\ O \end{pmatrix}=\begin{pmatrix} 22 & 8 \\ 10 & 8 \end{pmatrix}*\begin{pmatrix} 4 \\ 14 \end{pmatrix}=\begin{pmatrix} 200 \\ 152 \end{pmatrix}\bmod 26=\begin{pmatrix} 18 \\ 22 \end{pmatrix}=\begin{pmatrix} S \\ W \end{pmatrix}[/math] [math] \begin{pmatrix} W & I \\ K & I \end{pmatrix}*\begin{pmatrix} L \\ Y \end{pmatrix}=\begin{pmatrix} 22 & 8 \\ 10 & 8 \end{pmatrix}*\begin{pmatrix} 11 \\ 24 \end{pmatrix}=\begin{pmatrix} 434 \\ 302 \end{pmatrix}\bmod 26=\begin{pmatrix} 18 \\ 16 \end{pmatrix}=\begin{pmatrix} S \\ Q \end{pmatrix}[/math] [math] \begin{pmatrix} W & I \\ K & I \end{pmatrix}*\begin{pmatrix} M \\ P \end{pmatrix}=\begin{pmatrix} 22 & 8 \\ 10 & 8 \end{pmatrix}*\begin{pmatrix} 12 \\ 15 \end{pmatrix}=\begin{pmatrix} 384 \\ 240 \end{pmatrix}\bmod 26=\begin{pmatrix} 20 \\ 6 \end{pmatrix}=\begin{pmatrix} U \\ G \end{pmatrix}[/math] [math] \begin{pmatrix} W & I \\ K & I \end{pmatrix}*\begin{pmatrix} I \\ A \end{pmatrix}=\begin{pmatrix} 22 & 8 \\ 10 & 8 \end{pmatrix}*\begin{pmatrix} 8 \\ 0 \end{pmatrix}=\begin{pmatrix} 176 \\ 80 \end{pmatrix}\bmod 26=\begin{pmatrix} 20 \\ 2 \end{pmatrix}=\begin{pmatrix} U \\ C \end{pmatrix}[/math] [math] \begin{pmatrix} W & I \\ K & I \end{pmatrix}*\begin{pmatrix} D \\ Z \end{pmatrix}=\begin{pmatrix} 22 & 8 \\ 10 & 8 \end{pmatrix}*\begin{pmatrix} 3 \\ 25 \end{pmatrix}=\begin{pmatrix} 226 \\ 230 \end{pmatrix}\bmod 26=\begin{pmatrix} 18 \\ 22 \end{pmatrix}=\begin{pmatrix} S \\ W \end{pmatrix}[/math]

The encoded message is WOAIQQSWSQUGUCSW.

3x3 matrix encryption works in the same way. This example will encrypt "EDIT THE WIKI" using the key "BEE FLY BUG". First, split up the plaintext into groups of three, which becomes EDI TTH EWI KIZ. Once again, the last group has a Z added to make it a group of three.

[math] \begin{pmatrix} B & E & E \\ F & L & Y \\ B & U & G \end{pmatrix}*\begin{pmatrix} E \\ D \\ I \\ \end{pmatrix}=\begin{pmatrix} 1 & 4 & 4 \\ 5 & 11 & 24 \\ 1 & 20 & 6 \end{pmatrix}*\begin{pmatrix} 4 \\ 3 \\ 8 \end{pmatrix}=\begin{pmatrix} 48 \\ 245 \\ 112 \end{pmatrix}\bmod 26=\begin{pmatrix} 22 \\ 11 \\ 8 \end{pmatrix}=\begin{pmatrix} W \\ L \\ I \end{pmatrix}[/math]

[math] \begin{pmatrix} B & E & E \\ F & L & Y \\ B & U & G \end{pmatrix}*\begin{pmatrix} T \\ T \\ H \\ \end{pmatrix}=\begin{pmatrix} 1 & 4 & 4 \\ 5 & 11 & 24 \\ 1 & 20 & 6 \end{pmatrix}*\begin{pmatrix} 19 \\ 19 \\ 7 \end{pmatrix}=\begin{pmatrix} 123 \\ 472 \\ 441 \end{pmatrix}\bmod 26=\begin{pmatrix} 19 \\ 4 \\ 25 \end{pmatrix}=\begin{pmatrix} T \\ E \\ Z \end{pmatrix}[/math] [math] \begin{pmatrix} B & E & E \\ F & L & Y \\ B & U & G \end{pmatrix}*\begin{pmatrix} E \\ W \\ I \\ \end{pmatrix}=\begin{pmatrix} 1 & 4 & 4 \\ 5 & 11 & 24 \\ 1 & 20 & 6 \end{pmatrix}*\begin{pmatrix} 4 \\ 22 \\ 8 \end{pmatrix}=\begin{pmatrix} 124 \\ 454 \\ 492 \end{pmatrix}\bmod 26=\begin{pmatrix} 20 \\ 12 \\ 24 \end{pmatrix}=\begin{pmatrix} U \\ M \\ Y \end{pmatrix}[/math] [math] \begin{pmatrix} B & E & E \\ F & L & Y \\ B & U & G \end{pmatrix}*\begin{pmatrix} K \\ I \\ Z \\ \end{pmatrix}=\begin{pmatrix} 1 & 4 & 4 \\ 5 & 11 & 24 \\ 1 & 20 & 6 \end{pmatrix}*\begin{pmatrix} 10 \\ 8 \\ 25 \end{pmatrix}=\begin{pmatrix} 142 \\ 738 \\ 320 \end{pmatrix}\bmod 26=\begin{pmatrix} 12 \\ 10 \\ 8 \end{pmatrix}=\begin{pmatrix} M \\ K \\ I \end{pmatrix}[/math]

The encoded message is WLITEZUMYMKI.

Vigenère Cipher
The Vigenère cipher, invented by Blaise de Vigenère in the 16th century, is a polyalphabetic cipher. This means that each letter is shifted by a different amount. According to the rules, students will probably be asked to encrypt rather than decrypt Vigenère ciphers. Encrypting is a fairly straightforward procedure.

First, write out the message with the key under it, repeating the key as many times as necessary. An example is shown.

Then, take out the alphabet square, as shown below. This will typically be provided on the test.



Using the alphabet square, encode the plaintext. The first message letter is S and the first key letter is S, therefore, look at the table to see where row S and column S intersect. It is clear that they intersect at K, so write down K as the first letter of the ciphertext. Repeat this with the rest of the message. Thus, the encrypted text is "KEQSYAW QTMXNACL WD AGQT"

If the key and ciphertext are both given, decoding is also possible. This is done by taking a letter of the key and finding its row, finding the corresponding letter of ciphertext in that row, and seeing what column that letter falls in. The letter in the column is the letter of the plaintext. In the previous example, the first letter is decoded by going to row S and finding K, which is located in column S. Thus, the plaintext letter is S.