A summary of our teamwork |
![]() Not Assigned | |
![]() |
||
fra_00xx 98xxxx handle 1100 NA PC | ||
During a couple of week, a team has been working to break the cipher contest published by
nova.
In order to keep a trace of the whole work we made, I thought it would be
a good idea to try to summarize and organize the many post you can find (for a
limited time) on The Seeker's
Classroom MessageBoard. You can also find the whole thread as text file on his
Crypto
Contest Info page.
You won't find the solution of the contest in this paper, because we didn't
find it. But you will be able to understand the different path we followed
and probably the reason why we couldn't find the solution.
Part I : Our first thought.
As soon as we started working on this cipher contest, we quickly came up with
some first guideline, which would guide us trough the rest of our journey.
The way we should try to break this cipher was agreed by everyone to be as
follow :
A B C D E
While discussing those 'details', we also find some 'usefull' characteristic
of the Playfair algorithm.
Those are the rules we will use later to reject or accept a given position
for a plaintext.
First, a letter can't encode itself. That mean, if you have a digram AB, it would never encipher as something like A? or ?B (? beeing any letter). This is due to the fact that each letter are only once in the grid and that to encipher you always do a 'shift' (letter beside, below, on the other corner, ...).
Second, the enciphering process seems to be diagonalisable. I say
'seems' cause at this point I personnaly missed something important. We
discovered that, with a given grid, 2 letters will always encode in the same
2 other letters. Only the order of them can possibly change. And the process
is reversible since any 2 opposite corner of a rectangle will define the other
2 corners automatically.
Let's explain this with the following rectangle :
A B C D
A B D C
Another rule, discovered a bit later, was the fact that a letter in a plain digram can only become 1 out of 5 others letters. Those 5 letters are the 4 in the same row as the original letter and the one below it.
? ? ? ? ? ? ? ? ? ? x E x x x ? x ? ? ? ? ? ? ? ?
? ? x ? ? ? x ? ? ? ? ? ? ? x ? ? x ? ? ? x ? ? ? ? ? ? ? x x x E x x ? x ? ? ? ? ? ? ? x ? ? x ? ? x E x x x ? ? ? ? x ? ? x ? ? ? x ? ? ? x x x x E
Once you could define a set of possible position for your crib, you have to try to construct a working grid for each one. For this purpose we invite you to read the following papers which give good example and method on how to build grids :
Part II : Applying the rules.
given those 4 main rules, we started to work on the actual contest. Our goal
now was to determine valid position for the few plain text we were aware of.
Those plaintext are :
STOP END BEWAREICEWEASELS REDPENGUINFRENZYSTOP was not very helpfull. We don't know his exact position, neither if it appear as ST OP or as ?S TO P?. Assuming that the word stop should appear more than once, we could well notice that 'stop' could not appear more than once as ST OP. Indeed, if it was the case, we should be able to find this pattern at least twice. This is not the case. So we know STOP appear 0 or 1 time as ST OP and 0 or more times as ?S TO P?
We were sure END was at the end. But how ? Two possibilities came up :
UF BG UF BG <-- ciphertext EN DX ?E ND <-- plaintextIn both cases we can notice that U&F should appear in the same row/col as E (3th rule).
BE WA RE IC EW EA SE LS <-- no repeating pattern ?B EW AR EI CE WE AS EL S? AB ?? ?? ?? BA <-- repeating pattern to find RE DP EN GU IN FR EN ZY AB ?? ?? ?? AB <-- repeating pattern to find ?R ED PE NG UI NF RE NZ Y? <-- no repeating patternWe can see that if beware start on an odd boundary we found the digram EW inverted 4 digram later.
At this time we started to compile some lists of the possible position for
each of those 2 cribs.
If we take into account the fact that a letter can't encode itself and
the fact that BEWARE should start on a even bounday and RED should start on a
odd bounday we find the following possible position for them :
For RED... (39 possibilities) :
9, 3, 5, 19, 27, 33, 37, 41, 43, 45, 47, 49, 51, 53, 69, 73, 79, 81, 83,
91, 93, 95, 97, 99, 101, 105, 107, 109, 117, 121, 125, 127, 133, 137, 139,
141, 145, 147, 149.
For BEWARE... (31 possibililities) :
4, 14, 16, 20, 26, 28, 52, 54, 64, 76, 78, 82, 84, 86, 90, 96, 102, 114,
116, 120, 122, 124, 126, 128, 132, 138, 146, 150, 154, 156, 158.
As an example, here is why position 80 is not valid for BEWARE ... :
OL QA DF HS FZ WN AI DS <--cipher text BE WA RE IC EW EA SE LS <--plain textyou can see that both the letter A and S encode themselves, what is not possible in a Playfair cipher.
That was already a good sorting, but still a lot of work if we had to try to build grids for each of those position.
One idea was to suppose that both cribs would be present in the message. If this is the case then we would have a repeating pattern. The RE of bewaRE is also present in fREnzy. So we should find the same repeating pattern 4 char after the BEWARE starting index and 11 char after the RED starting index :
BE WA RE IC EW EA SE LS ?? ?? AB ?R ED PE NG UI NF RE NZ Y? ? ?? ?? ?? ?? ?? ABAs those 2 cribs may not overlap and should share the same repeating pattern, we came up with 2 possible position for BEWARE (28,76) and 2 possible position for RED (33,133).
Another idea was to reduce a bit more the number of possible position for
each of our crib by applying the rule that say there can be only 8 letters in
the row/col of a given letter.
As there was many 'E' in both cribs, we used the letter E and checked for
each digram containing a E how many different letters there was in the
corresponding cipher digram. Moreover, the END crib give us already 2 letters
(U&F) beeing in this set of 8.
Unfortunately, it seems that I published this list only for BEWARE, so
here is it :
14, 20, 84, 96, 114, 116, 122, 150, 154.
Here, as an example, is why the position 120 was not valid :
VS SF ZY LU NF FX LK TG <-- cipher text BE WA RE IC EW EA SE LS <-- plain textIf we list the letter beeing in the same row/col as E, we have : VS ZY NF (F)X LK. We can also add the 2 letters (UF) found thanks to the END. This give a total 10 differents letters, what is not possible.
Unfortunately again, we could not build a fully working grid for none of those position. I think it's at that time that we started to become sort of depressed :) And so we started to figure weird tricks they may be used to make this cipher harder than it look. For example, we thought the words making up the cribs may be splitted all over the plain text (like BEWARE STOP .... ICE STOP ..... WEASELS...). We also thought they may appear 'reversed' (BEWAREICEWEASELS would appear as 'SLESAEWECIERAWEB') and other silly thought i don't remember (I say silly now, cause we know the solution:)
Soon after, we wondered if it would be possible that only the REDPENGUINFRENZY crib appear. Indeed, if the agent was under duress, he could have easily said to his prison master that REDPENGUINFRENZY is his recognition code (which it's not, actually), but he would get into serious trouble if he had to sell -to that same prison-master- 2 'funny' codes. So we started working on our lovely penguins.
We went thus back to our list of possible position and tried to reduce it to
a minimum. From the previous list, we could quickly reject some of them for
obvious reason (same cipher digrams not corresponding to same plain digrams).
Unfortunately, once again we could not build a full working grid for any
of them. And, now that we know the solution, we know that the right position
(83) was in our list :(
Part III : Endless road.
Anyway, at that time, we were not only depressed but also under pressure
because of the deadline coming soon. So we started to try to get something
out of the frequencies of the letters and digrams.
We noticed that the most frequent letter in the cipher text were L & F.
As the most frequent letters in english text is E, we assumed that E, L & F
should stand on the same row. This is due to the fact that a plain text
letter have more chance to encode as a letter standing on the same line than
a letter standing on the same column. We also noticed some frequent digrams
in the cipher (LO, DL, AR, ...). Those frequent digrams most problably
correspond to frequent digram in the plain text. Once again, we could find
out some probabilities about english text (especially appendix E of the army
field manual). The problem was how to 'link' the right frequent english digram
with the right cipher digram ... I won't write everything we tried,
mostly because i could explain only my attempt, but not much came out from
this. The only fact we were almost sure was the presence on the same row of
the letters E,F & L.
In my humble opinion, I don't think we could ever find the solution
working only with the probabilities of the letters. The main reason of this
is that the text length was too short to give significant information about
the probabilities of the different digrams.
But I have to say that, even if it did not brought a solution, I discovered a
complete new way of tackling ciphers thanks those letters probabilities. In
the case you have no cribs, this is the only way of working, beside brute
forcing of course.
I wish to thank all the people working in this team for sharing their knowledge, for their kindness in helping each other, for the way we could make this not only an interesting work, but also a funny game.
team members :
In no order of importance, respects goes to Princess, CSativa, Dan, DQ,
G, Jeff, Mersenne, Shade, The Seeker, Tx, Laurent. All apologies if I forgot
someone.