Friday, April 14, 2017

The MeinEnigma Enigma Machine Kit - Message Encoding Example

In this blog post I'll give an example of how to encode or encrypt a message using MeinEnigma.

The first step is to choose the daily keysheet to use. You will need to share this with anyone who wants to decrypt the message. We will use one from here.

This is for an Enigma M3. As I write this the date is April 13, 2017 and the entry for today is:

|Day |UKW| Rotors   |Ringsetting|         Plugboard            |     Keygroup    |
----------------------------------------------------------------------------------
| 13 | B | V VIII I | 11 05 15 | BO CW DV EI GP HJ KX MR QU YZ | STL TEM MDJ RLQ |

We set the MeinEnigam settings as per the code sheet:

Model: M3
Reflector: UKWB
Rotor: 5,8,1
Plugboard: BO CW DV EI GP HJ KX MR QU YZ
Rotor Rings: K E O (11=K, 05=E, 15=O)

Now this is our plain text message to encrypt:

WHO PLAYED ALAN TURING IN THE 2014 FILM THE IMITATION GAME?

We split the plain text into 5 letter groups. Spell out numbers as characters and use the Enigma abbreviations for punctuation (common ones are X for period, ZZ for comma, and FRAGE or FRAQ for a question mark). Pad the end of the message with extra characters to fill out the last group. This is the result:

WHOPL AYEDA LANTU RINGI NTHET WENTY FOURT EENFI LMTHE IMITA TIONG AMEFR AQXXX

Now choose two random three letter groups, known as trigrams. I picked JJT and VER.

The first trigram is the rotor start position, so set them to JJT.

Now type the second trigram, VER, using the keyboard and note the result: GBG. This is the encrypted message key.

Set the rotor start positions to the second trigram, VER.

Type in the plain text message and note down the encrypted result. This is what I obtained:

CSJTO WFAFF EEQYX TQCED PFQOR ATBGC JFKSP CAAQV PUCVZ SDRAM LLBGL YQNXO EZTPW

Assuming we want to write the message the way a number of people on the Internet, including tye Enigma World Code Group forum user do, we need to create a message header as follows:
  • Start with [EWCG2017] if this is for the Enigma World Code Group
  • Write the current time as 24 hour UTC time, e.g. 2117
  • Indicate how many parts are in the message followed by tle, e.g. 1tle
  • Indicate which part this is, followed by tl, e.g. 1tl
  • List how many characters are in this part of the message: 65
  • The randomly selected rotor start position: JJT
  • The encrypted message key: GBG
Look at the daily keysheet and under Keygroup, pick one of the listed three letter trigrams, say STL. Add two random letters: ZZ. This becomes the first group of the encoded message.
Putting the header and encrypted groups togther. this is the full encrypted message:

[EWCG2017]
2117 1tl 1tl 65 JJT GBG
STLZZ CSJTO WFAFF EEQYX TQCED PFQOR ATBGC JFKSP CAAQV PUCVZ SDRAM LLBGL YQNXO EZTPW

If you follow the decoding procedure from my earlier blog post, you can decode the message back to the original plain text.



On a related note, I've updated my Quick Reference  to include the above example of encrypting a message. I've also added tables listing the Arduino port usage and the I2C devices and addresses of the MeinEnigma hardware.

No comments: