Cryptography
Cryptography, or cryptology (from Ancient
Greek: κρυπτός, romanized: kryptós "hidden,
secret"; and γράφειν graphein, "to write",
or -λογία -logia, "study",
respectively[1]), is the practice
and study of techniques for secure
communication in
the presence of third parties called adversaries.[2] More generally,
cryptography is about constructing and analyzing protocols that prevent
third parties or the public from reading private messages;[3] various aspects
in information
security such
as data confidentiality, data integrity, authentication, and non-repudiation[4] are central to
modern cryptography. Modern cryptography exists at the intersection of the
disciplines of mathematics, computer science, electrical
engineering, communication
science,
and physics. Applications of
cryptography include electronic
commerce, chip-based payment
cards, digital
currencies, computer passwords, and military
communications.
Cryptography
prior to the modern age was effectively synonymous with encryption, converting
information from a readable state to unintelligible nonsense. The sender of an
encrypted message shares the decoding technique only with intended recipients
to preclude access from adversaries. The cryptography literature often uses the names Alice
("A") for the sender, Bob ("B") for the intended recipient,
and Eve ("eavesdropper") for the
adversary.[5] Since the
development of rotor
cipher machines in World War I and the advent
of computers in World War II, cryptography
methods have become increasingly complex and its applications more varied.
Modern
cryptography is heavily based on mathematical theory and computer science
practice; cryptographic algorithms are designed
around computational hardness assumptions, making such
algorithms hard to break in actual practice by any adversary. While it is
theoretically possible to break into a well-designed system, it is infeasible
in actual practice to do so. Such schemes, if well designed, are therefore
termed "computationally secure"; theoretical advances, e.g.,
improvements in integer
factorization algorithms,
and faster computing technology require these designs to be continually
reevaluated, and if necessary, adapted. There exist information-theoretically secure schemes that
provably cannot be broken even with unlimited computing power, such as
the one-time
pad,
but these schemes are much more difficult to use in practice than the best
theoretically breakable but computationally secure schemes.
The
growth of cryptographic technology has raised a number of legal issues in the
information age. Cryptography's potential for use as a tool for espionage and sedition has led many
governments to classify it as a weapon and to limit or even prohibit its use
and export.[6] In some
jurisdictions where the use of cryptography is legal, laws permit investigators
to compel
the disclosure of
encryption keys for documents relevant to an investigation.[7][8] Cryptography
also plays a major role in digital rights management and copyright
infringement disputes
in regard to digital media.[9]
Terminolo
Alphabet shift ciphers
are believed to have been used by Julius Caesar over 2,000 years
ago.[5] This is an
example with k = 3. In other words,
the letters in the alphabet are shifted three in one direction to encrypt and
three in the other direction to decrypt.
The
first use of the term cryptograph (as opposed to cryptogram)
dates back to the 19th century—originating from The Gold-Bug, a story by Edgar Allan Poe.[10][11][broken footnote]
Until
modern times, cryptography referred almost exclusively to encryption,
which is the process of converting ordinary information (called plaintext) into unintelligible
form (called ciphertext).[12] Decryption is
the reverse, in other words, moving from the unintelligible ciphertext back to
plaintext. A cipher (or cypher)
is a pair of algorithms that carry out the encryption and the reversing
decryption. The detailed operation of a cipher is controlled both by the
algorithm and, in each instance, by a "key". The key is a
secret (ideally known only to the communicants), usually a string of characters
(ideally short so it can be remembered by the user), which is needed to decrypt
the ciphertext. In formal mathematical terms, a "cryptosystem" is the ordered
list of elements of finite possible plaintexts, finite possible cyphertexts, finite
possible keys, and the encryption and decryption algorithms which correspond to
each key. Keys are important both formally and in actual practice, as ciphers
without variable keys can be trivially broken with only the knowledge of the
cipher used and are therefore useless (or even counter-productive) for most
purposes.
Historically,
ciphers were often used directly for encryption or decryption without
additional procedures such as authentication or integrity
checks. There are, generally, two kinds of cryptosystems: symmetric and asymmetric. In symmetric
systems, the only ones known until the 1970s, the same key (the secret key) is
used to encrypt and decrypt a message. Data manipulation in symmetric systems
is faster than asymmetric systems in part because they generally use shorter
key lengths. Asymmetric systems use a "public key" to encrypt a
message and a related "private key" to decrypt it. The use of
asymmetric systems enhances the security of communication, largely because the
relation between the two keys is very hard to discover.[13] Examples of
asymmetric systems include RSA (Rivest–Shamir–Adleman), and
ECC (Elliptic Curve Cryptography). Quality symmetric algorithms
include the commonly used AES (Advanced Encryption Standard) which replaced the older DES (Data Encryption Standard).[14] Not very high
quality symmetric algorithms include the assorted children's language tangling
schemes such as Pig
Latin or
other cant, and indeed
effectively all cryptographic schemes, however seriously intended, from any
source prior to the invention of the one-time pad early in the
20th century.
In colloquial use, the term
"code" is often used
to mean any method of encryption or concealment of meaning. However, in
cryptography, code has a more specific meaning: the
replacement of a unit of plaintext (i.e., a meaningful word or phrase) with
a code
word (for
example, "wallaby" replaces "attack at dawn"). A cypher, in
contrast, is a scheme for changing or substituting an element below such a
level (a letter, or a syllable or a pair of letters or ...) in order to produce
a cyphertext.
Cryptanalysis is the term
used for the study of methods for obtaining the meaning of encrypted
information without access to the key normally required to do so; i.e., it is
the study of how to "crack" encryption algorithms or their
implementations.
Some
use the terms cryptography and cryptology interchangeably
in English, while others (including US military practice generally) use cryptography to
refer specifically to the use and practice of cryptographic techniques
and cryptology to refer to the combined study of cryptography
and cryptanalysis.[15][16] English is more
flexible than several other languages in which cryptology (done
by cryptologists) is always used in the second sense above. RFC 2828 advises that steganography is
sometimes included in cryptology.[17]
The
study of characteristics of languages that have some application in
cryptography or cryptology (e.g. frequency data, letter combinations, universal
patterns, etc.) is called cryptolinguistics.
History
of cryptography and cryptanalysis
Before
the modern era, cryptography focused on message confidentiality (i.e.,
encryption)—conversion of messages from a
comprehensible form into an incomprehensible one and back again at the other
end, rendering it unreadable by interceptors or eavesdroppers without secret
knowledge (namely the key needed for decryption of that message). Encryption
attempted to ensure secrecy in communications, such as those
of spies, military leaders,
and diplomats. In recent decades,
the field has expanded beyond confidentiality concerns to include techniques
for message integrity checking, sender/receiver identity authentication, digital signatures, interactive proofs and secure computation, among others.
Classic cryptography
Reconstructed ancient Greek scytale, an
early cipher device
The
main classical cipher types are transposition
ciphers,
which rearrange the order of letters in a message (e.g., 'hello world' becomes
'ehlol owrdl' in a trivially simple rearrangement scheme), and substitution
ciphers,
which systematically replace letters or groups of letters with other letters or
groups of letters (e.g., 'fly at once' becomes 'gmz bu podf' by replacing each
letter with the one following it in the Latin alphabet). Simple versions of
either have never offered much confidentiality from enterprising opponents. An
early substitution cipher was the Caesar cipher, in which each
letter in the plaintext was replaced by a letter some fixed number of positions
further down the alphabet. Suetonius reports
that Julius
Caesar used
it with a shift of three to communicate with his generals. Atbash is
an example of an early Hebrew cipher. The earliest known use of cryptography is
some carved ciphertext on stone in Egypt (ca 1900 BCE), but this may have
been done for the amusement of literate observers rather than as a way of
concealing information.
The Greeks of Classical
times are
said to have known of ciphers (e.g., the scytale transposition cipher claimed
to have been used by the Spartan military).[18] Steganography (i.e.,
hiding even the existence of a message so as to keep it confidential) was also
first developed in ancient times. An early example, from Herodotus, was a message
tattooed on a slave's shaved head and concealed under the regrown hair.[12] More modern
examples of steganography include the use of invisible ink, microdots, and digital watermarks to conceal
information.
In
India, the 2000-year-old Kamasutra of Vātsyāyana speaks
of two different kinds of ciphers called Kautiliyam and Mulavediya. In the
Kautiliyam, the cipher letter substitutions are based on phonetic relations,
such as vowels becoming consonants. In the Mulavediya, the cipher alphabet
consists of pairing letters and using the reciprocal ones.[12]
In Sassanid Persia, there were two
secret scripts, according to the Muslim author Ibn
al-Nadim: the šāh-dabīrīya (literally "King's
script") which was used for official correspondence, and the rāz-saharīya which
was used to communicate secret messages with other countries.[19]
David Kahn notes in The Codebreakers that modern cryptology originated among the Arabs, the first people to systematically document cryptanalytic methods.[20] Al-Khalil (717–786) wrote the Book of Cryptographic Messages, which contains the first use of permutations and combinations to list all possible Arabic words with and without vowels.[21]
First page of a book
by Al-Kindi which discusses encryption
of messages
Ciphertexts produced by a classical cipher (and some modern ciphers) will reveal statistical information about the plaintext, and that information can often be used to break the cipher. After the discovery of frequency analysis, by the Arab mathematician and polymath Al-Kindi (also known as Alkindus) in the 9th century,[22][23][24] nearly all such ciphers could be broken by an informed attacker. Such classical ciphers still enjoy popularity today, though mostly as puzzles. Al-Kindi wrote a book on cryptography entitled Risalah fi Istikhraj al-Mu'amma (Manuscript for the Deciphering Cryptographic Messages), which described the first known use of frequency analysis and cryptanalysis techniques. An important contribution of Ibn Adlan (1187–1268) was on sample size for use of frequency analysis.
16th-century book-shaped French cipher machine, with arms of Henri II of France
Enciphered letter
from Gabriel de Luetz d'Aramon, French Ambassador to the Ottoman Empire, after 1546, with
partial decipherment
Language
letter frequencies may offer little help for some extended historical
encryption techniques such as homophonic
cipher that
tend to flatten the frequency distribution. For those ciphers, language letter
group (or n-gram) frequencies may provide an attack.
Essentially
all ciphers remained vulnerable to cryptanalysis using the frequency analysis
technique until the development of the polyalphabetic cipher. While
it was known to Al-Kindi to some extent, it was first
clearly described in the work of Al-Qalqashandi (1355–1418),
based on the earlier work of Ibn
al-Durayhim (1312–1359), describing a polyalphabetic cipher in
which each plaintext letter is assigned more than one substitute. It was later
also described by Leon
Battista Alberti around
the year 1467, though there is some indication that Alberti's method was to use
different ciphers (i.e., substitution alphabets) for various parts of a message
(perhaps for each successive plaintext letter at the limit). He also invented
what was probably the first automatic cipher
device,
a wheel that implemented a partial realization of his invention. In the Vigenère cipher, a
polyalphabetic cipher, encryption uses a key word, which controls
letter substitution depending on which letter of the key word is used. In the
mid-19th century Charles Babbage showed that the
Vigenère cipher was vulnerable to Kasiski examination, but this
was first published about ten years later by Friedrich Kasiski.[28]
Although
frequency analysis can be a powerful and general technique against many
ciphers, encryption has still often been effective in practice, as many a
would-be cryptanalyst was unaware of the technique. Breaking a message without
using frequency analysis essentially required knowledge of the cipher used and
perhaps of the key involved, thus making espionage, bribery, burglary,
defection, etc., more attractive approaches to the cryptanalytically
uninformed. It was finally explicitly recognized in the 19th century that
secrecy of a cipher's algorithm is not a sensible nor practical safeguard of
message security; in fact, it was further realized that any adequate
cryptographic scheme (including ciphers) should remain secure even if the
adversary fully understands the cipher algorithm itself. Security of the key
used should alone be sufficient for a good cipher to maintain confidentiality
under an attack. This fundamental principle was first explicitly stated in 1883
by Auguste Kerckhoffs and is
generally called Kerckhoffs's Principle;
alternatively and more bluntly, it was restated by Claude Shannon, the inventor
of information
theory and
the fundamentals of theoretical cryptography, as Shannon's Maxim—'the
enemy knows the system'.
Different physical devices and aids have been used to assist with ciphers. One of the earliest may have been the scytale of ancient Greece, a rod supposedly used by the Spartans as an aid for a transposition cipher. In medieval times, other aids were invented such as the cipher grille, which was also used for a kind of steganography. With the invention of polyalphabetic ciphers came more sophisticated aids such as Alberti's own cipher disk, Johannes Trithemius' tabula recta scheme, and Thomas Jefferson's wheel cypher (not publicly known, and reinvented independently by Bazeries around 1900). Many mechanical encryption/decryption devices were invented early in the 20th century, and several patented, among them rotor machines—famously including the Enigma machine used by the German government and military from the late 1920s and during World War The ciphers implemented by better quality examples of these machine designs brought about a substantial increase in cryptanalytic difficulty after WWI.