There are symmetric and asymmetric block cipher algorithms. Only the symmetric kind will be dealt with here.

As the name suggests, block ciphers traffic in message blocks. These blocks have a size which is typically 64 bits or greater.

A block cipher encryption
function uses a key `K`

to
map a n-bit plaintext
block `P`

into a n-bit ciphertext block `C`

.
We can write this as `ENC`

.
The decryption function reverses this mapping.
For this we can write _{K}(P)=C`DEC`

.
So, _{K}(C)=P`DEC`

.
_{K}(ENC_{K}(P))=P

For this scheme to work, `ENC`

must be a bijection, that is it must be
a permutation on the set of all n-bit messages, _{K}`M`

(`|M|=2`

).
The key ^{n}`K`

is an index into the set of all permutations of which there are `2`

which is
equal to ^{n}!`2`

by Stirling's approximation.
If the key size is ^{(n-1)2n}`k`

bits then we have `2`

different keys and looking at the ratio of permutations to the
number of keys (^{k}`2`

)
we see that we either want a really large key size ^{(n-1)2n} / 2^{k}`k`

to
enable us to select from many possible permutations, or
we want a randomly chosen key `K`

to look like it chooses a random permutation to
make it seem like all permutations were equally likely.

L. R. Knudsen, M. J. B. Robshaw, *The Block Cipher Companion.* Springer, 2011.

A. Menzes, P. van Oorschot, and S. Vanstone, *Handbook of Applied Cryptography.* CRC Press, 1996.

Copyright © 2014 Barry Watson. All rights reserved.