CSC 290: Cryptology 2003: Term Project Idea: A True (Sort of) Story

As usual, hand in writeup in PDF through webCT, hardcopy of everything to the prof. as well.

This cipher seems to me to have very significant weaknesses, obvious relation to things we know, and a gradation of approaches, depending on what you know. Consider what if you have chosen plaintext and just want to know the key. Or what if you have probable or repeated words? Etc. Your writeup might want to explore these weaknesses and you might want to use them before trying any general solution. Also, there's a big plus in that you have a head start with an encryption and decryption program (if you find bugs, let me know!). I must say that so far no solutions have been found and I may be wrong about the difficulty. That's why it's a challenge.

The Story

Long, long ago, before you were born, Prof. Brown was a postdoctoral fellow at the U. of Edinburgh in Scotland. There was another postdoc there called Nat Nit (not his real name). He was a quiet guy, not given to social intercourse, and in fact seemed a little secretive and unforthcoming. Maybe a little furtive, standoffish? Definitely the sort of person who would read-protect his top-level directory in UNIX. In short, a guy that I probably should have tried to get to know but who instead I just decided not to like very much.

He published a technical report and its acknowledgements looked a little bit something like this:

lbcyedcbo`hap`etkfajjyEoddfixdbs`uneqfepde`alfum`dgidrs|idcfxfuc
he|efarlbadiemev|tvltsliflifjhUad`miujleaas`mol`sfvrwaapihrfoaaf
`aaxge`mdcf]cdcfekbmebbdu`rqeujeei`hdmmp}pedqgcdfshznepaizm`ibbbae
i{rzehi`c`ifmjajnayjdedyteabgbefhdc`ebhhlo`|xgzmegdhme`p`giw~cw|
ircisdhmidz`}afadcs`lwaqhu|m`atokdnzsbpoefh`drha`yc|nadvhuljuaanee
yjgqu`l~lgd`abwliiqzgrepceqtl`cltawbIrdwddliese{jlyigim`twa~`gr`ih
zwerdb`mqepbhxa`fg|i`}hp{a|i`gldeutxpai`edenevletddxpfry`euhfajn
debd|xqfnaagybganpggaepgbdiiatcu`xcodufgla`edd_jaes~}ananmqbbp`fw`
KgddaxweVru|irela\xpsgzrgldaza

Naturally this was a challenge. Our computer was made by Imperial Chemical Company (Ltd.). I'm not making any of this up. We had teletype access: those things that electromechanically type on paper. No "glass terminals" yet. Anyway it must be that there was not much concept of file security because without much trouble I found Nit's encryption program. This is OK since as we know with a proper encipherment scheme you don't care if the opposition knows the algorithm; all security lies in the key. This code works. Here it is, itself, running in this very directory: Sample Run .

OK, OK, this wasn't really Nit's program but this is my hopelessly naive Perl version. A real Perl programmer could probably do it in 10 lines. I was about to tell you what it does, but that's not too hard to figure out, so I'll preserve that as part of the challenge. As you can see it calls for a six-figure key, which is used symmetrically to encrypt or decrypt simply by applying it "in reverse" in an obvious way.

In the above reconstruction of Nit's algorithm I am sacrificing some ASCII characters (like blank, comma, and period(!)) so that almost everything is printable. (Maybe you'd like a peek at the ASCII character set in Decimal or maybe more usefully in Octal and Hex . ). Probably the original version used a completely different character encoding, maybe EBCDIC, but it's not important except that as you will see this version replaces blanks with ' , periods and commas with letters, and other infelicities with most non-alphabetic chars upon decoding. Changing a line in the algorithm changes this feature.

Anyway, sure enough, just as I suspected, applying the key (23 56 198 444 3 520) to the above acknowledgements yields (again with added CRLFs);

Thanks`to`my`loving`and`supportive`family`in`my`beloved`countryl`to
`whom`I`have`been`sending`all`my`stipend`checks~~
``Thanks`to`this`demon`cesspool`of`decadent`meatpie`eating`colonialist
`toffeemnosed`twits`whose`filthy`ignorant`ways`have`inspired`me`to
`grow`inwardly`and`to`produce`deathless`work`such`as`this`which`you
`are`about`to`read~~`Thanks`to`the`numerous`small`furry`animals`
whose`protracted`and`messy`demise`has`helped`me`through`the`lonely
`hours`in`my`freezing`garrett~~
`The`support`of`the``Science`Research`Council`is`gratefully`acknowledged~~

as you can easily verify. As you see, the periods, commas, spaces, etc. are screwed up but it's readable.

Last, I have to admit that this assignment is a way of reliving and I hope improving a disappointing part of my life, because actually I never broke that cipher, and I'll always wonder if maybe those acknowledgements were actually thanking me for being such a wonderful person and cheery colleague. Nahhhhh....

More Input

Here is some (typical...) text by Karl Marx enciphered by Nit's method.

This input and the next are just one very long string. I hope it's all there! If you have trouble downloading to a file let me know!

The Story Continues

The astute reader may have noticed that there is more you can do with this idea. NitNatPlus.pl does it. As before, you can check out the source code to see what it does (bug reports to me!). Although this looks harder than the original, I think it presents no new difficulties, actually, maybe just a little clerical work. Anyway, test out your ideas on this bit of Shakespeare's play named after a famous substitution cipher method.

---

This page is maintained by CB.

Last update: 27.07.01.