Symmetric Block Ciphers

Triple DES

First some stats to think about:

Single DES uses a 56 bit key. So the number of keys is 2^56.

The number of bits in a block is 64 so any block can be mapped to one of 2^64 different blocks.

It seems reasonable then that DES using key K1 has a range of X and using key K2 has a range of Y where X and Y are different and the symmetric difference is non-empty latex2($\left( X \bigtriangleup Y \neq \emptyset \right)$). This is actually true so that latex2($E_{K1}(E_{K2}(P) \neq E_{K3}(P)$)

Using two keys doesn't do much good either though because we can use a meet in the middle attack. While DES requires effort on the order of 2^54 Double DES requires only effort on the order of 2^56. This type of attack works on any block cipher. So we go to 3DES.

Cost of attack on 3DES which uses two keys latex2($E_{K1}(D_{K2}(E_{K1})))$) is latex2($2^{112}$).

It is worth noting that some applications (PHP and S/MIME) have gone to 3KEY 3DES for extra protection.

Blowfish

Blowfish has the following characteristics:

RC5

Characteristics of Advanced Symmetric Block Ciphers

RC4 Stream Cipher

Review Questions

What is triple encryption?

On input you encrypt once and route the output to the input (most likely with a new key) to the input again and repeat once more so that you have encrypted the plaintext three times.

What is a meet-in-the-middle attack?

If you have a plaintext, ciphertext pair you can encrypt the plain text and decrypt the ciphertext to see if the intermediate (or middle) ciphertexts match. If they do, you have possible found the two keys.

How many keys are used in triple encryption?

3DES uses only two keys See above.

Why is the middle portion of 3DES a decryption rather than an encryption.

To make it compatible with single DES.

What is the key size for Blowfish?

Variable 32 to 448 bits.

What primative operations are used in Blowfish?

Addition of words modulo 2^32 Bitwise XOR.

What common mathematical constants are used in RC5?

What primitive operations are used in RC5?

List important design considerations for a stream cipher.

Why is it not desirable to reuse a stream cipher key?

What primitive operations are used in RC4?