Cryptography Reference
In-Depth Information
early versions of PGP, but its adoption has been restricted, partly due to patent
issues.
Serpent : A respected block cipher with a block size of 128 bits and key lengths
of 128, 192 or 256, which was an AES competition finalist. The designers
of Serpent are generally regarded as having made slightly different tradeoffs
between security and efficiency than AES, opting for a slower, but some suggest
more secure, design.
Twofish : This respected block cipher with a block size of 128 and a variable key
length was also one of the AES finalists. It is based on the earlier block cipher
Blowfish , which has a block size of 64.
There are several different approaches to designing block ciphers. The next two
sections will not just look at two of the most influential modern block ciphers, but
will also provide a very high level illustration of two different block cipher design
approaches.
4.4 The Data Encryption Standard
The most well-known, well-studied, and well-used block cipher proposed to date
is the Data Encryption Standard , better known simply as DES. It is important
to be familiar with DES because of its historical importance and influence on
modern cryptography. It is also based on an interesting and influential design
concept. Although DES is no longer a recommended block cipher, important
variants on the original proposal are still in widespread use, as we will discuss in
Section 4.4.4.
4.4.1 Feistel Cipher
DES is based on what is known as a Feistel Cipher . Rather than being a specific
cipher, a Feistel Cipher is a design blueprint from which many different block
ciphers could be derived. DES is just one example of a Feistel Cipher, but by far
the most famous one.
ENCRYPTION USING A FEISTEL CIPHER
A pictorial representation of a Feistel Cipher is shown in Figure 4.4. We describe
this algorithm in terms of a block size of 64 bits, although there is no need for
a Feistel Cipher to have a 64-bit block size. Encryption using a Feistel Cipher
consists of the following steps:
1. Split the 64 bits of plaintext into the left 32 bits L 0 and the right 32 bits R 0 .
2. Apply a carefully designed mathematical function f that takes as input the key
K and R 0 , and computes the output f ( R 0 , K ).
3. XOR the output of the mathematical function with L 0 , to compute a new 32-bit
sequence X
=
L 0
f ( R 0 ,
K ).
 
 
Search WWH ::




Custom Search