A workshop at HistoCrypt was dedicated to codes and nomenclators – for centuries the most popular kind of encryption. One of the topics discussed was a consistent terminology. Here is my suggestion. Perhaps, my readers can help to improve it.
Can you decipher the following encrypted message?
You probably can’t. I have introduced this message (the Manchester cryptogram from 1783, check here for a transcription) several times on this blog. Many people have tried to solve it, but to no avail.
The Manchester cryptogram was probably created with a nomenclator. A nomenclator is an encryption method based on a substitution table that replaces each letter of the alphabet and some frequent words with a number (or another character sequence). The following is a very simple example:
Using this nomenclator the cleartext WILL TRAVEL FROM LONDON TO PARIS TOMORROW encrypts to:
23 9 12 12 / 20 18 1 21 5 12 / 6 18 15 13 / 27 / 20 15 / 28 / 31
For centuries, nomenclators were by far the most popular encryption method. The following French nomenclator is from the 17th century (it is contained in the paper Briefe durch Feindesland published by Gerhard Kay Birkner in the proceedings of the conference Geheime Post).
In the 18th century nomenclators developped more and more to books (referred to as “codes”) with 50,000 and more entries. When a code is used, replacing single letters doesn’t play much of a role any more, as for every common word of a language an entry can be found. Codes played a major role in cryptology until the 1930’s, when they were more and more replaced by cipher machines.
Messages encrypted with a nomenclator or code can be found in large number in archives throughout Europe and North America. There must be tens of thousands of them. Only a small fraction has been analyzed.
A workshop at HistoCrypt
Breaking a nomenclator or code message can be quite difficult. Although cryptograms of this kind are encountered very often, there are only few publications about the systematic breaking of nomenclators and codes. For this reason, Karl de Leeuw …
… invited experts to a workshop about breaking codes and nomenclators at the HistoCrypt in Uppsala. I was one of the speakers.
In my talk I lamented the lack of consistency in the use of terminlogy. There are different, sometimes contradicting definitions of expressions like “code” and “nomenclator”, while other concepts have several names or none at all.
As a result of the discussion, I created the terminilogy introduced in the following subchapter (I plan to update it, based on comments and suggestions).
Code and nomenclator terminology
Last change: 2018-07-09
Here is a definition of terms related to codes and nomenclators:
- Cipher: encryption method that operates at the level of individual letters (or letter combinations or syllables)
- Code: encryption method that operates at the level of meaning (words and phrases)
- Codebook code: other word for “code” (this term is necessary, as the word “code” has many different meanings, like ASCII code or postcode; even in cryptography “code” can mean different things, as the title of David Kahn’s book “The Codebreakers” shows; it therefore makes sense to have an additional word for “code” that can be used for clarification)
- Nomenclator: encryption method that contains elements of both a code and of a cipher; this usually means that frequent words have their own codegroups, while less frequent words are encoded letter-wise
- Encryption method: includes both ciphers and codes (and nomenclators)
- Ciphertext: result of an encryption (cipher or code or nomenclator); (this expression is not consistent, but there is no better word)
- Codebook: book in which a code is noted
- Codegroup: letter/symbol/number or group of letters/symbols/numbers that stands for a word/syllable/expression; the first codegroup appearing in the Manchester cryptogram is 3693
- Wordgroup: codegroup that refers to a word
- Lettergroup: codegroup that refers to a letter
- Syllablegroup: codegroup that refers to a syllable
- Phrasegroup: codegroup that refers to a phrase
- Null: codegroup that has no meaning
- Homophones: different codegroups that have the same meaning (by definition there are always at least two homophones)
- Polyphone: a codegroup that has several meanings (e.g. the singular and the plural of a word)
- Nullifier: codegroup that makes another codegroup meaningless
- Prefix nullifier / postfix nullifier / embraced nullifier: nullifier that makes the following / the previous / both code group(s) meaningless; expressions like “3-prefix nullifier”, “2-postfix nullifier”, or “2-3-embraced nullifier” may be used if several code groups are made meaningless
The terminology discussion needs to go on
I hope that this article will help to create a consistent terminology for codes and nomenclators. If you have ideas on how to improve this first version, please let me know.
Further reading: Who can break this enciphered letter written by Albrecht von Wallenstein?