Known-Plaintext Attack Strategy For Bifid with Kryptos

Breaking the Bifid algorithm into manageable pieces and then rebuilding it to decrypt the message using a fragment of known plaintext involves a basic understanding of the encryption and decryption process.  Jimmy Wales’ behemoth is certainly not the worst place to begin or refresh your memory.

Now that we’re up to speed, let’s take it apart and put it back together.

Our end goal is a best-guess at the arrangement of the encryption/decryption matrix.  If we can use the known ciphertext and known-plaintext to make an educated guess then it can be tested and refined as needed.  This assumes that the matrix is keyed.

With an even number of letters, the coordinates of the first half of the message become the first coordinates of the plaintext and vice versa.  With an odd number of letters, the exact middle letter is the last row coordinate and the first column coordinate.

K4 of Kryptos has 97 letters so we use the odd strategy.  I’ll try to keep it short and simple.

OBKRUOXOGHULBSOLIFBBWFLRVQQPRNGKSSOTWTQSJQSSEKZZWx

WyATJKLUDIAWINFBNYPVTTMZFPKWGDKZXTJCDIGKUHUAUEKCAR

So what this means is that the first plaintext letter is encoded by OxWy.  This is the X coordinate of O (the row #) and the Y coordinate of W (the column #).  Knowing the notation helps us locate the known plaintext/ciphertext within the flow of the algorithm.  It’s so much easier to do this all by computers that I don’t have…

OBKRUOXOGHULBSOLIFBBWFLRVQQPRNGKSSOTWTQSJQSSEKZZWx

WyATJKLUDIAWINFBNYPVTTMZFPKWGDKZXTJCDIGKUHUAUEKCAR

The interesting thing to note here is that NYPVTT is not actually in the right location.  This is because he gave us the deciphered word for that location in K4 where if you are deciphering K4 as a Bifid, NYPVTT actually are used to detangle the meaning of letter 30 to letter 41 by giving the Y coordinate (column #).

Berlin is in the 64 to 69 letter range.

OBKRUOXOGHULBSOLIFBBWFLRVQQPRNGKSSOTWTQSJQSSEKZZWx

WyATJKLUDIAWINFBNYPVTTMZFPKWGDKZXTJCDIGKUHUAUEKCAR

Now we can use the plaintext to assign meaning to the Y coordinates or column numbers given by the ciphertext.  Remember that the Bifid effectively splits each letter into two numbers and then splits those numbers.  This means that “Berlin” is actually enciphered by:

OBKRUOXOGHULBSOLIFBBWFLRVQQPRNGKSSOTWTQSJQSSEKZZWx

WyATJKLUDIAWINFBNYPVTTMZFPKWGDKZXTJCDIGKUHUAUEKCAR

In the following manner (don’t forget that the odd number splits the arrangement with Wy, meaning we need Dx to complete the “N”):

B = SxTy

E = SyJx

R = SxJy

L = SyCx

I = OxCy

N = OyDx

Knowing these coordinates helps us guess at the keyed-alphabet that would need to be used to produce “Berlin” at the 64-69 letter mark in the plaintext.  In many ways the problem becomes similar to grade school math puzzles or even approaches Sudoku style manipulations to ensure that each letter can fit in the respective coordinates.

I’ll save you the needless guessing and just give my best approximations and the resulting translations of ciphertext.  Then only problem so far is that I put in an approximation of a grid into a Bifid solver and couldn’t get more than RGFHISUEBLJAKONMQPTDWVYXCZ for a key.  This does give “BERLIN” in the correct spot but the rest doesn’t make much sense.  Also, as you can see, it’s not much more than an artificial key.  A true keyed Bifid would have the keyword followed by the rest of the alphabet.  I’ve tried variations and wouldn’t say it’s 100% guaranteed not to be possible but I would put the likelihood up high enough to not be worth my time to try and rule it out.

I’m not going to lie and tell you I wasn’t so ridiculously excited to see Berlin appear and then be so heartily disappointed to see the random jumble that was translated from the rest of the ciphertext.