In cryptography, a block cipher is a symmetric key cipher operating on fixedlength groups of bits, called blocks, with an unvarying transformation. A block cipher encryption algorithm might take (for example) a 128bit block of plaintext as input, and output a corresponding 128bit block of ciphertext. The exact transformation is controlled using a second input — the secret key. Decryption is similar: the decryption algorithm takes, in this example, a 128bit block of ciphertext together with the secret key, and yields the original 128bit block of plaintext.
A message longer than the block size (128 bits in the above example) can still be encrypted with a block cipher by breaking the message into blocks and encrypting each block individually. However, in this method all blocks are encrypted with the same key, which degrades security (because each repetition in the plaintext becomes a repetition in the ciphertext). To overcome this issue, modes of operation are used to make encryption probabilistic. Some modes of operation, despite the fact that their underlying implementation is a block cipher, allow to encrypt individual bits. The resulting cipher is called a stream cipher.
An early and highly influential block cipher design was the Data Encryption Standard (DES), developed at IBM and published as a standard in 1977. A successor to DES, the Advanced Encryption Standard (AES), was adopted in 2001.
Contents
Generalities
A block cipher consists of two paired algorithms, one for encryption, E, and the other for decryption, E^{−1}. Both algorithms accept two inputs: an input block of size n bits and a key of size k bits, yielding an nbit output block. For any one fixed key, decryption is the inverse function of encryption, so that
for any block M and key K. M is termed the plaintext and C the ciphertext.
For each key K, E_{K} is a permutation (a bijective mapping) over the set of input blocks. Each key selects one permutation from the possible set of 2^{n}! (see Factorial).
The block size, n, is typically 64 or 128 bits, although some ciphers have a variable block size. 64 bits was the most common length until the mid1990s, when new designs began to switch to the longer 128bit length. One of several modes of operation is generally used along with a padding scheme to allow plaintexts of arbitrary lengths to be encrypted. Each mode has different characteristics in regard to error propagation, ease of random access and vulnerability to certain types of attack. Typical key sizes (k) include 40, 56, 64, 80, 128, 192 and 256 bits. As of 2006^{[update]}, 80 bits is normally taken as the minimum key length needed to prevent brute force attacks. For creating ciphers with arbitrary block sizes (or on domains that aren't powers of two) see Formatpreserving encryption.
Full article ▸
