5

Below is the cipher text I am trying to break and as you can see its rather short which is why I am having so much trouble.

WOYFN ZCMSH VUVTG BFUTW ABTZP FHIMF TFOSU UXFQC HKVKG MPUUQ 
MHRXI OVBRZ EPJYF KKVJW GEIOV HUKEB JUNSM THIMF TFKUB ULMMQX

What I know about this ciphertext:

  • Key is 6 characters long and repeats (Given by the person who encrypted it)
  • There is a single character missing from the start of the ciphertext! (Also given)
  • It uses a simple cipher I believe a vigenere cipher.
  • Friedman IC: 1.143 (kappa-plaintext: 0.4396) which is why i think its a vigenere cipher

I have spent many hours on this but to be honest im not very good at breaking these codes.

My problem that iv run into is that once I break the cipher into its sections they are all very short and hence frequency alaysis fails.

I would really appreciate if someone could either confirm or find the crypto system being used as well as any more information about how one would find the plaintext + key or better yet find the key itself and explain how you manage it with such a short piece of ciphertext

Edit: There was some debate as to the validity of this question so here is some more information from my attempts:

Streams:

  • ?ZUUZFUKUXZKEKSFU IC = 3.6833 (kappa-plaintext: 1.4167)
  • WCVTPTXVUIEKIEMTL IC = 1.1471 (kappa-plaintext: 0.4412)
  • OMTWFFFKQOPVOBTFM IC = 2.1029 (kappa-plaintext: 0.8088)
  • YSGAHOQGMVJJVJHKM IC = 1.3382 (kappa-plaintext: 0.5147)
  • FHBBISCMHBYWHUIUQ IC = 1.5294 (kappa-plaintext: 0.5882)
  • NVFTMUHPRRFGUNMBX IC = 0.9559 (kappa-plaintext: 0.3676)

These numbers don't look good. they are almost all drastically off normal distribution for any language.

The main point to my question is:

  • Does Vigenere Seem like a reasonable fit (given those streams are correct)?
  • Is it possible to use that analysis in any way? I cant see how it can be effective with only 17 characters per stream. Most letters frequencies are 0.
  • What other ciphers are possible? How could I identify that they are in use?

I am happy to provide more information I am just not sure what else is useful.

Paŭlo Ebermann
  • 22,946
  • 7
  • 82
  • 119
Nick
  • 167
  • 1
  • 3

4 Answers4

5

I don't know the solution, but since you say you're only asking for hints, here's a few that occurred to me:

  • If this is a Vigenère cipher, the missing character at the beginning should not matter (much): if you encrypt a message with the key FOOBAR and drop the first letter of the output, you can decrypt the resulting ciphertext with the key OOBARF.

  • As ewanm89 notes, the obvious way to attack a Vigenère cipher, after you've determined the key length is $n$, is to write it with $n$ letters per row and attack each column as if it were a Caesar cipher. There are automated tools for doing that, such as pygenere; they may not always give the correct answer for very short messages, but yours looks long enough that they should at least have a decent chance.

  • The most notable feature I see in your ciphertext is that the string HIMFTF occurs twice, at offsets 26 and 86. That does strongly suggest that the key length may be a divisor of 60; alas, 60 has lots of small divisors (including 6, which you believe the key length to be), so that doesn't really give that much information. It does at least rule out 7, 8 and 9 as likely key lengths.

Ilmari Karonen
  • 46,700
  • 5
  • 112
  • 189
2

The easiest way in this case to work out if it is vigenere is to brute force it.

You know the key is only 6 characters. Take a vigenere decryption function and a dictionary file of 6 character words. Decrypt using the first word, then compute a histogram of the resulting plaintext. Compare with what you would expect to see given the distribution of characters in english language text. If the two are close, visually inspect. If they are not close or visual inspection fails, continue.

Look around on google for histogram comparison ideas. A simple sum of differences should work then set a threshold for what to display.

mikeazo
  • 39,117
  • 9
  • 118
  • 183
1

As already stated it is a Vigenere cipher. Here even the length of the key is already known. A principle approach to break the cipher is as follows:

Try different keys. For each key construct the corresponding clear text and check how similar the clear text is to the English language.

How well this algorithm works depends on how good your check for the English language is. So you need a function, which takes a decoded clear text as input and returns a measure for the probability that the text is English. Such function is called fitness function, the returned value is the fitness of the clear text. The fitness function is not restricted to the Vigenere cipher, it can be used for breaking other ciphers as well.

Now most Vigenere solvers are looking at the frequency of single letters, which means the fitness function is based on so called monograms. This works more or less well if the cipher text is much longer than the key. For the cipher given here those solvers will probably not determine the correct key.

Instead of counting the frequency of single letters it is much better to count the frequency of bigrams, i.e. you are looking always at two neighboring letters of the clear text. This greatly improves the accuracy of the fitness function.

There are 26 different monograms (A..Z) in the English language, but 26*26 = 676 bigrams (AA..ZZ). Thus using bigrams will probably require a computer program, while using monograms the cipher can still be broken by hand.

So let's assume you have a table which provides for each bigram the probability that it occurs in English text (the most frequent bigram of the English language is "TH" [~2.7%]) . One option to implement a fitness function is to multiply the probabilities of all bigrams of the clear text. The greater the resulting value, the more probable it is that the text is English.

So you just need to find the key where the resulting clear text has the highest fitness value.

A brute force over the complete solution space (key length = 6 => 26^6 possible keys) is not needed, it is sufficient to look at neighboring letters of the key only.

Using this approach the cipher text given here can be broken rather easily. The algorithm is implemented here: http://www.guballa.de/pages/geocaching/vigenere-solver.php

I have also provided a more detailed description of the algorithm (http://www.guballa.de/pages/bits-bytes/implementierung-eines-vigenere-solvers.php), but that's in German.

Using trigrams (or even quadgrams) would make the algorithm even stronger.

I found that it is even possible to break Vigenere ciphers if the cipher text is only as long as four times of the key length.

Jagu
  • 366
  • 2
  • 2
-1

I can confirm that this can be solved as a Vigenere cipher. The decoded message reads [c]ongratulations on solving the puzzle we hope you enjoy computer and network security and the wargames puzzles good luck.

Eli
  • 104
  • 3