In World War 2, the Lorenz cipher was the big brother to the Enigma machine. Where Enigma was used as a 'field' cipher, for communication to individual units, Lorenz was used for the German High Command.
The allies referred to Lorenz by the codename 'Fish'.
It operated automatically upon teleprinter links. There was much less traffic to work with, and it was a much tougher cipher. In addition, the allies only had the messages themselves to work with.
A tougher proposition indeed.
To my mind, Lorenz straddles the gap between 'classical' and 'modern' cryptography, as it is readily understandable, but tough to deal with.
Before understanding Lorenz, we must first understand how a teleprinter machine works. A teleprinter makes use of a five bit 'code', called the 'Baudot Code'. In modern terms, a 5 'bit' code.
The Baudot Code was invented by Emile Baudot, who was born in 1870. Indeed, this is where we get the term 'baud rate', which will be a term familiar to people who used to have 2400 baud modems (or slower!)
In this Baudot Grid, some of the text is hard to read. In the 'D' column it says 'Who are you?', the 'J' column is 'Bell' (if this is sent the operator is alerted audibly), the columns after 'Z' are 'Carriage Return', 'Line Feed', 'Letters', 'Figures', 'Space' and 'Not used'.
The teleprinter would use the codes for the 'letters' until the 'figures' code was sent. This would then allow numbers and punctuation to be sent. This would continue until the 'letters' code was sent once more.
The data was sent using 'serial' transmission. A dot represented a 'mark', and a lack of a dot represented a 'space'. The code was sent as a series of 'bits', bracketted by a 'start' and 'stop' bit in order that the sending and receiving machine would stay synchronised.
This idea of serial transmission of digital data is still used today. The diagram shows the value of the signal at various points, places where the value could either be low (a space), or high (a mark) are shown with a pair of horizontal lines. To try and illustrate how a character is sent, a 'B' is shown.
In modern parlance we might refer to a 'space' and 'mark' as '0' and '1' respectively.
From now on, I shall omit the start and stop bits for clarity - we are interested here in the manipulation of the data bits, rather than the intricacies of the transmission.
The Lorenz cipher would apply XOR operations to the bits of the baudot code in order to encipher them. I have previously mentioned XOR coding, but to summarise, if the two bits are different, the output is 1, otherwise the output is zero.
Thus if we apply the key, 'V' to the character 'B', the output is 'R'
B: 10011 V: 11001 R: 01010
The Lorenz machine would generate a very long, pseudo-random string of key letters. The operator would type at the teleprinter, each key letter would be encoded and transmitted automatically. At the receiving end there would be a machine which would be set up to generate the same pseudo random string of key letters, and this would reverse the encryption - the plaintext would be printed out.
R: 01010 V: 11001 B: 10011
The trick with Lorenz was in how it generated its 'key' characters.
I'll save this for another time.
Notes, 'pseudo random' means a string of things which may look random, but aren't really - the string is produced by a fixed set of rules