In this session we took a historical look at the development cryptography over the past millennia, considering both ciphers (where individual characters are encrypted) and codes (where whole words or ideas are encrypted to a single symbol). We discussed the Caesar Cipher, where letters are transposed by a number of places along the alphabet. Then Substitution ciphers, where each letter of the alphabet is mapped randomly onto another. Because of the static nature of the mapping, this kind of cipher can be broken relatively easily by comparing the frequencies with which characters appear in the ciphertext with the frequency of characters in plaintext.
We then looked at two traditional encryption techniques which overcome the shortcomings of static mappings – One-Time Pads and Book Codes. Both of these are in principle unbreakable, but shortcomings in implementation have sometimes led to their being cracked.
Next we discussed an early electronic encryption tool – the Enigma. While this should again have been unbreakable because of the high degree of randomness resulting from its rotors and plugboards, errors in design of the machine and its process, as well as sloppy operation, provided opportunities for Bletchley Park to decode many messages. A lot of effort was also put into “cribs” – deducing/guessing text that messages might include to help speed up the process of decryption.
Finally we looked at a couple of fairly modern, computerised encryption technologies. These use a non-secret algorithm (the encryption process), with the secrecy provided by the application of numerical keys which are known only to the communicators. RSA is a mathematical process using very large prime numbers. It is too slow to be used for bulk encryption, but its property of using different keys for encryption and decryption make it useful in assuring the identity of the sender and in securely transmitting low-volume, high-value data (e.g. keys for use by other encryption techniques). And DES, invented by IBM in the 1960s, is a technique which manipulates binary strings of 0s and 1s rather than using mathematics. It can encrypt data at high speed, and it and its derivatives are used extensively in many industries such as banking and the credit card network.
Encryption systems have to be continually enhanced and use more complex keys in the face of the growth of computing power being deployed by would-be code-breakers.