Website of Chuck Easttom, Ph.D., D.Sc.




Ancient Ciphers  |  Symmetric CyphersClassic Asymmetric Cryptography | Quantum Resistant Asymmetric Cryptography


Tutorials AES Animation
 

DES Totorial

Rijndael Cipher

Blowfish Cipher

Serpent Cipher

Algorithms

Blowfish

Blowfish is a Symmetric Block Cipher. designed in 1993 by Bruce Schneier. Schneier has stated that, "Blowfish is unpatented, and will remain so in all countries. The algorithm is hereby placed in the public domain, and can be freely used by anyone."
This cryptography algorithm is intended as a replacement for DES. Like DES it is a 16 round Feistel cipher working on 64 bit blocks. However, unlike DES it can have varying key sizes ranging from 32 bits to 448 bits.

There is a good tutorial here.

 

AES

Advanced Encryption Standard was ultimately chosen as a replacement for DES. AES is also Known as Rijndael block cipher. It was officially designated as a replacement for DES in 2001 after a 5 year process involving 15 competing algorithms. AES is designated as FIPS 197. Other algorithms that did not win that competition include such well known algorithms as Twofish.
AES can have three different key sizes, they are:128, 192, or 256 bits. The three different implementations of AES are referred to as AES 128, AES 192, and AES 256. All three operate on a block size of 128 bits.
This algorithm was developed by two Belgian cryptographers, Joan Daemen and Vincent Rijmen. Unlike both DES And 3DES, AES is not based on a Feistel network.

 

AES General Overivew

1.Key Expansion—round keys are derived from the cipher key using Rijndael's key schedule

Initial Round
1.AddRoundKey—each byte of the state is combined with the round key using bitwise xor
Rounds
1.SubBytes—a non-linear substitution step where each byte is replaced with another according to a lookup table.
2.ShiftRows—a transposition step where each row of the state is shifted cyclically a certain number of steps.
3.MixColumns—a mixing operation which operates on the columns of the state, combining the four bytes in each column.
4.AddRoundKey
Final Round (no MixColumns)
1.SubBytes
2.ShiftRows
3.AddRoundKey

 

AES 128 bit key has 10 rounds, 192 bit key has 12 rounds, 256 bit key has 14 rounds

 

A great tutorial on AES can be found here

 

SkipJack

Developed by the NSA, and was designed for the clipper chip. It was originally classified. The clipper chip was a chip with built in encryption, however the decryption key would be kept in a key escrow in case law enforcement need to decrypt data without the computer owners cooperation. This feature made the process highly controversial.
Skipjack uses an 80-bit key to encrypt or decrypt 64-bit data blocks. It is an unbalanced Feistel network with 32 rounds

 

Serpent

This algorithm was invented by Ross Anderson, Eli Biham, and Lars Knudsen. It was submitted to the AES competition but was not selected, in large part due to the fact that its performance is slower than AES.  However in the ensuing years since the AES competition, computational power has increased dramatically. This has led some experts to re-consider the use of Serpent on modern systems.

 

SHARK

SHARK was invented by a team of cryptographers including Vincent Rijmen, Joan Daemen, Bart Preneel, Antooon Bosslaers, and Erik De Win. SHARK uses a 64 bit block with a 128 bit key and operates in 6 rounds (the original SHARK used 6 rounds).  It has some similarities to the Rijndael cipher including the use of s-boxes that are based on GF(28). Remember that GF is a Galois Field defined by a particular prime number to some power.  Like Rijndael (and unlike DES) the s-boxes take a fixed number of bits and put out the same number of bits (recall that DES s-boxes took in 6 bits and produced 4 bits)

 

GOST

GOST is a DES like algorithm developed by the Soviets in the 1970's. It was classified but released to the public in 1994. It uses a 64 bit block and a key of 256 bits. It is a 32 round Feistel Cipher.

The round function is
1. Add the subkey modulo 2
2. Put the result through s-boxes
3. rotate the result 11 bits

The Key Schedule is:
1. Divide the 256 bit key into 8 32 bit sub keys
2. Each sub key is used four times

the s boxes take in four bit input and put out 4 bit out put (there are 8 of them). Some implementations have secret s boxes.

 

RC4

Ron Rivest created this algorithm in 1987. The RC stands for Ron’s Cipher. It is the most widely used software stream cipher. The algorithm is used identically for encryption and decryption as the data stream is simply XORed with the key.
RC 4 Uses a variable length key from 1 to 256 bytes. That key constitutes a state table that is used for subsequent generation of pseudo-random bytes and then to generate a pseudo-random stream which is XORed with the plaintext to produce the ciphertext

The permutation is initialized with a variable length key, typically between 40 and 256 bits, using the key-scheduling algorithm (KSA). Once this has been completed, the stream of bits is generated using the pseudo-random generation algorithm (PRGA).

FISH

This algorithm was published by the German engineering firm Seimans in 1993. The FISH (FIbonacci SHrinking) cipher is a software based stream cipher using Lagged Fibonacci generator along with a concept borrowed from the shrinking generator ciphers.

PIKE

This algorithm was published in a paper by Ross Anderson as an improvement on FISH. In that paper Anderson showed that Fish was vulnerable to known plaintext attacks. PIKE is both faster and stronger than FISH.

 

DES

The Data Encryption Standard is a classic in that annals of cryptography. It was selected by the National Bureau of Standards as an official Federal Information Processing Standard (FIPS) for the United States in 1976. While it is now considered outdated and is not recommended for use, it was the premier block cipher for many years and bears study. Many cryptography textbooks and university courses use this as the basic Processing Standard (FIPS) for the United States in 1976
DES uses a 56-bit key applied to a 64 bit block. (note there is actually a 64 bit key generated but 8 bits are just for error correction.)
DES is a Feistel cipher with 16 rounds and a 48-bit round key for each round. So its general functionality follows the Feistel method of dividing the 64 bit block into two halves (32 bits each, this is NOT an unbalanced Feistel cipher) , applying the round function to one half, then xor’ing that output with the other half.

 

To generate the round keys, the 56-bit key is split into two 28-bit halves and those halves are circularly shifted after each round by one or two bits. This means each round it uses a slightly different key.

 

FEAL

FEAL is an acronym for Fast data Encipherment ALgorithm.  It was designed by Akihrio Shimizu and Shoji Miyaguchi and published in 1987.   There are variations of the FEAL cipher but all use a 64 bit block and essentially the same round function. FEAL-4 uses 4 rounds, FEAL-8 uses 8 rounds, FEAL-N uses N rounds, chosen by the implementer.  This algorithm has not done well under cryptanalysis. Several weaknesses have been found in the algorithm and it is not considered secure.

Camelia

Camellia is a Japanese cipher that uses a block size of 128 bits and key sizes of 128, 192, or 256 bit (like AES). With a 128 bit key, Camellia uses 18 rounds, but with the 192 or 256 bit key it uses 24 rounds.  Note both of these (18 and 24) are multiples of 6. The reason is that every six rounds there is a transformation layer applied that is called the FL function.