Block Ciphers

Introduction

Block ciphers are a key part of encryption techniques.  All block ciphers are symmetric functions that are used to encrypt plaintext data into an encrypted format.  The data is encrypted in blocks of a fixed bit size and typically result in a block of cipher text of the same bit size.  The encryption is accomplished using a key which is either provided by the user, or commonly created using a random number generator.  This same key is used in the decryption process to obtain the original plaintext from a cipher text block.  One extremely important feature of a block cipher is that it is one-to-one symmetric.  That is, by applying the inverse of the encryption algorithm to a cipher text block, the original plaintext can be recovered.  [1]
Generally,
            Ek : P → C
            E-1k : C → P
            E-1k( Ek ( plaintext ) ) = plaintext [3]
The first block cipher, Lucifer, was developed in the mid 1970’s at IBM by Horst Feistel. [7]

Table of Contents

Introduction
Application
    Encryption
    Decryption
Types of Block Ciphers
    Feistal Ciphers
    Iterated Block Ciphers
    Common Block Ciphers
References
See Also
External Links
Credits

Application

Encryption

Block Cipher Encryption [7]
Encryption
The encryption process takes a standard block of plaintext and a key of some fixed length.  The size of the plaintext block can vary among various ciphers and is commonly anywhere between 64 and 256 bits depending mainly on processing speeds. If a block of less than the block size is passed to the encryption algorithm, usually it is padded such that it becomes equal to the block size. However, some algorithms exist which are able to take a variable block size as input.  Common key sizes are 40, 56, 64, 80, 128, 192 and 256 bits.  [5] A larger key size increases the security of the encryption and lessens the success rate of brute force attacks.  The plaintext is then passed through an algorithm which, with the aid of the key, maps the plaintext to a cipher text encryption of it.  This encryption process maps the plaintext to cipher text to one of the 2k possible permutations of cipher text where k is the key size in bits.  These mappings must be one-to-one such that a cipher text message can be uniquely decrypted to a single plaintext block.  Many cipher text algorithms are closely guarded secrets to prevent security issues.  These algorithms typically involve some combination of binary operators (AND, OR, XOR, etc) which appear to randomize each bit.  Some variations of the encryption method are shown below under Types of Block Ciphers.

[1]

Decryption

The decryption method of block ciphers is closely related to the encryption algorithm.  Since all block ciphers are symmetric, applying the inverse of the encryption algorithm will always result in the original plaintext which was encrypted. 

Types of Block Ciphers

Feistel Cipher [1]
Feistel Cipher
There are three important variations of the block cipher which all aim to increase the security of encrypted text.   These methods are described in detail below.

Iterated Block Ciphers

One simple way to increase the effectiveness of the encryption algorithm is to repeatedly apply the same algorithm, each iteration encrypting the message further.  This is common practice in most modern block ciphers as it can be applied extremely easily once an effective encryption algorithm is found.  The number of iterations, or rounds, is determined by the designer.  The number of rounds selected is usually determined by the computational power available and the security level desired.  It has been shown that after eight rounds, the increase in security level decreases to the point where it becomes negligible.  During each subsequent round the same key can be used or a new key can be selected. [4]

Feistel Ciphers

Feistel ciphers, named for Horst Feistel, developer of the Lucifer block cipher, break a block of plaintext into two halves, left and right.  During each round, the right half and key are passed into the encryption algorithm and then XORed with the left half.  The two halves are then swapped and the same process is repeated.   The decryption method begins by taking the right half of the cipher text and passing it with the key to the encryption algorithm to get the same result that was used in the final round of the encryption.  This result is XORed into the left half to reverse the final round of coding.  This is then repeated for each round and results in the original cipher text.

[1]

Cipher Block Chaining

Cipher Block Chaining Algorithm [4]
Block Cipher Chaining
Cipher block chaining is another common way to increase the effectiveness of block ciphers.  In this method, the resulting cipher text is not only a function of the key and the encryption algorithm but also depends on the blocks which were previously encoded.  The cipher text of an encoded block is XORed with the next plaintext block which is to be encoded.  This means that to decode a particular block of cipher text, one also has to know the block that was encoded prior to it.  The inital block is encrypted using an initialization vector which is randomly generated. The major drawback of this method is the same requirement.  It implies that in order to decode a block, we must know all blocks prior.  While this may seem beneficial, it can be hazardous when the cipher text blocks are transferred to a different user or workstation.  If a single block of cipher text is lost, all subsequent blocks can no longer be decoded and must be transmitted again.

[4]

Common Block Ciphers

There exist a number of common block ciphers in use today.  These are outlined in the table below.
Table 1 - Common Block Cipher Features


Name

Year Developed

Block Size (bits)

Key Size (bits)

Lucifer

1971

48

48

DES

1975

56

64

RC2

1987

64

8-128 (default 64)

IDEA

1991

64

128

BlowFish

1993

64

32-448 (default 128)

AES

1998

128

128, 192 or 256

Intel Cascaded Cipher

2006

128

128

 

References

[1] Connected: An Internet Encyclopedia. "Block Ciphers". April 1997. Retrieved from http://www.freesoft.org/CIE/Topics/143.htm

[2] Jenkins, Bob.   “Hash Functions and Block Ciphers”.  2002.  Retrieved from http://www.burtleburtle.net/bob/hash/#block

[3] Mirza, Fauzan.  Royal Holloway University of London.    “Block Ciphers and Cryptanalysis”.  1998.

[4] RSA Laboratories.. “What is a Block Cipher?”, Cryptography, 2007.  Retrieved from http://www.rsa.com/rsalabs/node.asp?id=2163

[5] Tech Target Security Media.  “What is a Block Cipher?”.  SearchSecurity.com, 04 Jan 2006. Retrieved from http://searchsecurity.techtarget.com/sDefinition/0,,sid14_gci213594,00.html

[6] Wikipedia, the Free Encyclopedia. "Block Cipher". February 20, 2007. Retrieved from http://en.wikipedia.org/wiki/Block_cipher

See Also

Advanced Encryption Standard

Random Number Generation

External Links

Block Ciphers, from Connected: An Internet Encyclopedia

What is a Block Cipher?, from RSA Laboratories

Block Cipher, from Wikipedia, the Free Encyclopedia

Created and Updated By

Ian McCombe
Created for Software Engineering 4C03, Research Project
Last Update: April 04, 2007