Serpent is a
symmetric key
Symmetric-key algorithms are algorithms for cryptography that use the same cryptographic keys for both the encryption of plaintext and the decryption of ciphertext. The keys may be identical, or there may be a simple transformation to go between t ...
block cipher that was a finalist in the
Advanced Encryption Standard (AES) contest, where it was ranked second to
Rijndael.
Serpent was designed by
Ross Anderson,
Eli Biham
Eli Biham ( he, אלי ביהם) is an Israeli cryptographer and cryptanalyst, currently a professor at the Technion - Israel Institute of Technology Computer Science department. Starting from October 2008 and till 2013, Biham was the dean of t ...
, and
Lars Knudsen
Lars Ramkilde Knudsen (born 21 February 1962) is a Danish researcher in cryptography, particularly interested in the design and analysis of block ciphers, hash functions and message authentication codes (MACs).
Academic
After some early work ...
.
Like other
AES submissions, Serpent has a
block size of 128 bits and supports a
key size
In cryptography, key size, key length, or key space refer to the number of bits in a key used by a cryptographic algorithm (such as a cipher).
Key length defines the upper-bound on an algorithm's security (i.e. a logarithmic measure of the faste ...
of 128, 192 or 256 bits.
The
cipher is a 32-round
substitution–permutation network operating on a block of four 32-bit
words
A word is a basic element of language that carries an objective or practical meaning, can be used on its own, and is uninterruptible. Despite the fact that language speakers often have an intuitive grasp of what a word is, there is no conse ...
. Each round applies one of eight 4-bit to 4-bit
S-box
In cryptography, an S-box (substitution-box) is a basic component of symmetric key algorithms which performs substitution. In block ciphers, they are typically used to obscure the relationship between the key and the ciphertext, thus ensuring Shan ...
es 32 times in parallel. Serpent was designed so that all operations can be executed in
parallel
Parallel is a geometric term of location which may refer to:
Computing
* Parallel algorithm
* Parallel computing
* Parallel metaheuristic
* Parallel (software), a UNIX utility for running programs in parallel
* Parallel Sysplex, a cluster of ...
, using 32
bit slice
Bit slicing is a technique for constructing a Processor (computing), processor from modules of processors of smaller bit width, for the purpose of increasing the word length; in theory to make an arbitrary ''n''-bit central processing unit ( ...
s. This maximizes parallelism, but also allows use of the extensive
cryptanalysis
Cryptanalysis (from the Greek ''kryptós'', "hidden", and ''analýein'', "to analyze") refers to the process of analyzing information systems in order to understand hidden aspects of the systems. Cryptanalysis is used to breach cryptographic sec ...
work performed on
DES
Des is a masculine given name, mostly a short form (hypocorism) of Desmond. People named Des include:
People
* Des Buckingham, English football manager
* Des Corcoran, (1928–2004), Australian politician
* Des Dillon (disambiguation), sever ...
.
Serpent took a conservative approach to security, opting for a large security margin: the designers deemed 16 rounds to be sufficient against known types of attack, but specified 32 rounds as insurance against future discoveries in cryptanalysis. The official NIST report on AES competition classified Serpent as having a high security margin along with
MARS
Mars is the fourth planet from the Sun and the second-smallest planet in the Solar System, only being larger than Mercury (planet), Mercury. In the English language, Mars is named for the Mars (mythology), Roman god of war. Mars is a terr ...
and
Twofish
In cryptography, Twofish is a symmetric key block cipher with a block size of 128 bits and key sizes up to 256 bits. It was one of the five finalists of the Advanced Encryption Standard contest, but it was not selected for standardization. Twof ...
, in contrast to the adequate security margin of RC6 and Rijndael (currently AES).
In final voting, Serpent had the fewest negative votes among the finalists, but scored second place overall because Rijndael had substantially more positive votes, the deciding factor being that Rijndael allowed for a far more efficient software implementation.
The Serpent cipher algorithm is in the
public domain
The public domain (PD) consists of all the creative work
A creative work is a manifestation of creative effort including fine artwork (sculpture, paintings, drawing, sketching, performance art), dance, writing (literature), filmmaking, ...
and has not been
patented
A patent is a type of intellectual property that gives its owner the legal right to exclude others from making, using, or selling an invention for a limited period of time in exchange for publishing an enabling disclosure of the invention."A p ...
. The reference code is
public domain software
Public-domain software is software that has been placed in the public domain, in other words, software for which there is absolutely no ownership such as copyright, trademark, or patent. Software in the public domain can be modified, distributed, ...
and the optimized code is under
GPL
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the four freedoms to run, study, share, and modify the software. The license was the first copyleft for general u ...
. There are no restrictions or encumbrances whatsoever regarding its use. As a result, anyone is free to incorporate Serpent in their software (or hardware implementations) without paying license fees.
Key Schedule
The Serpent key schedule consists of 3 main stages. In the first stage the key is initialized by adding padding if necessary. This is done in order to make short keys map to long keys of 256-bits, one "1" bit is appended to the end of the short key followed by "0" bits until the short key is mapped to a long key length.
In the next phase, the "prekeys" are derived using the previously initialized key. 32-bit key parts XORed, the ''FRAC'' which is the fraction of the
Golden ratio
In mathematics, two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Expressed algebraically, for quantities a and b with a > b > 0,
where the Greek letter phi ( ...
and the round index is XORed with the key parts, the result of the
XOR operation is rotated to left by 11. The ''FRAC'' and round index were added to achieve an even distribution of the keys bits during the rounds.
Finally the "subkeys" are derived from the previously generated "prekeys". This results in a total of 33 128-bit "subkeys".
At the end the round key or "subkey" are placed in the "initial permutation IP" to place the key bits in the correct column.
Key Schedule pseudo code
#define FRAC 0x9e3779b9 // fractional part of the golden ratio
#define ROTL(A, n) (A << n) , (A >> (32 - n))
uint32_t key // k
uint32_t words 32 // w
uint32_t subkey 34] // sk
/* key schedule: get prekeys */
void w(uint32_t *w, uint32_t *k)
/* key schedule: get subkeys */
void k(uint32_t *w, uint32_t (*sk)
S-Boxes
The Serpent s-boxes are 4-bit
permutations
In mathematics, a permutation of a set is, loosely speaking, an arrangement of its members into a sequence or linear order, or if the set is already ordered, a rearrangement of its elements. The word "permutation" also refers to the act or pr ...
, and subject to the following properties:
* a 1-bit input difference will never lead to a 1-bit output difference, a differential characteristic has a probability of 1:4 or less.
* linear characteristics have a probability between 1:2 and 1:4, linear relationship between input and output bits has a probability between 1:2 and 1:8.
* the nonlinear order of the output bits as function of the input bits is 3. However there have been output bits found which in function of the input bits have an order of only 2.
The Serpent s-boxes have been constructed based on the 32 rows of the
DES
Des is a masculine given name, mostly a short form (hypocorism) of Desmond. People named Des include:
People
* Des Buckingham, English football manager
* Des Corcoran, (1928–2004), Australian politician
* Des Dillon (disambiguation), sever ...
s-boxes. These were transformed by swapping entries, resulting arrays with desired properties were stored as the Serpent s-boxes. This process was repeated until a total of 8 s-boxes were found. The following key was used in this process:
"sboxesforserpent"
.
Permutations and Transformations
Initial permutation (IP)
The initial permutation works on 128 bits at a time moving bits around.
for i in 0 .. 127
swap( bit(i), bit((32 * i) % 127) )
Final permutation (FP)
The final permutation works on 128 bits at a time moving bits around.
for i in 0 .. 127
swap( bit(i), bit((2 * i) % 127) )
Linear transformation (LT)
Consists of XOR, S-Box, bit shift left and bit rotate left operations. These operations are performed on 4 32-bit words.
for (short i = 0; i < 4; i++)
X = ROTL(X 13);
X = ROTL(X 3 );
X = X ^ X ^ X
X = X ^ X ^ (X << 3);
X = ROTL(X 1 );
X = ROTL(X 7 );
X = X ^ X ^ X
X = X ^ X ^ (X << 7);
X = ROTL(X 5 );
X = ROTL(X 22);
for (short i = 0; i < 4; i++)
Rijndael vs. Serpent
Rijndael is a substitution-linear transformation network with ten, twelve, or fourteen rounds, depending on the key size, and with key sizes of 128 bits, 192 bits, or 256 bits, independently specified. Serpent is a substitution–permutation network which has thirty-two rounds, plus an initial and a final permutation to simplify an optimized implementation. The round function in Rijndael consists of three parts: a nonlinear layer, a linear mixing layer, and a key-mixing XOR layer. The round function in Serpent consists of key-mixing XOR, thirty-two parallel applications of the same 4×4 S-box, and a linear transformation, except in the last round, wherein another key-mixing XOR replaces the linear transformation. The nonlinear layer in Rijndael uses an 8×8 S-box whereas Serpent uses eight different 4×4 S-boxes. The 32 rounds mean that Serpent has a higher security margin than Rijndael; however, Rijndael with 10 rounds is faster and easier to implement for small blocks. Hence, Rijndael was selected as the winner in the AES competition.
Serpent-0 vs. Serpent-1
The original Serpent, Serpent-0, was presented at the 5th workshop on
Fast Software Encryption
Fast or FAST may refer to:
* Fast (noun), high speed or velocity
* Fast (noun, verb), to practice fasting, abstaining from food and/or water for a certain period of time
Acronyms and coded Computing and software
* ''Faceted Application of Subje ...
, but a somewhat tweaked version, Serpent-1, was submitted to the AES competition. The AES submission paper discusses the changes, which include key-scheduling differences.
Security
The
XSL attack
In cryptography, the ''eXtended Sparse Linearization'' (XSL) attack is a method of cryptanalysis for block ciphers. The attack was first published in 2002 by researchers Nicolas Courtois and Josef Pieprzyk. It has caused some controversy as it was ...
, if effective, would weaken Serpent (though not as much as it would weaken
Rijndael, which became
AES). However, many
cryptanalysts
Cryptanalysis (from the Greek ''kryptós'', "hidden", and ''analýein'', "to analyze") refers to the process of analyzing information systems in order to understand hidden aspects of the systems. Cryptanalysis is used to breach cryptographic s ...
believe that once implementation considerations are taken into account the XSL attack would be more expensive than a
brute force attack
In cryptography, a brute-force attack consists of an attacker submitting many passwords or passphrases with the hope of eventually guessing correctly. The attacker systematically checks all possible passwords and passphrases until the correct ...
.
In 2000, a paper by Kohno et al. presents a
meet-in-the-middle attack against 6 of 32 rounds of Serpent and an
amplified boomerang attack against 9 of 32 rounds in Serpent.
A 2001 attack by
Eli Biham
Eli Biham ( he, אלי ביהם) is an Israeli cryptographer and cryptanalyst, currently a professor at the Technion - Israel Institute of Technology Computer Science department. Starting from October 2008 and till 2013, Biham was the dean of t ...
,
Orr Dunkelman
__INDEX__
Orr Dunkelman ( he, אור דונקלמן) is an Israeli cryptographer and cryptanalyst, currently a professor at the University of Haifa Computer Science department. Dunkelman is a co-director of the Center for Cyber Law & Privacy at ...
and Nathan Keller presents a
linear cryptanalysis
In cryptography, linear cryptanalysis is a general form of cryptanalysis based on finding affine approximations to the action of a cipher. Attacks have been developed for block ciphers and stream ciphers. Linear cryptanalysis is one of the two mos ...
attack that breaks 10 of 32 rounds of Serpent-128 with 2
118 known plaintexts and 2
89 time, and 11 rounds of Serpent-192/256 with 2
118 known plaintexts and 2
187 time.
A 2009 paper has noticed that the nonlinear order of Serpent S-boxes were not 3 as was claimed by the designers.
A 2011 attack by Hongjun Wu, Huaxiong Wang and Phuong Ha Nguyen, also using linear cryptanalysis, breaks 11 rounds of Serpent-128 with 2
116 known plaintexts, 2
107.5 time and 2
104 memory.
The same paper also describes two attacks which break 12 rounds of Serpent-256. The first requires 2
118 known plaintexts, 2
228.8 time and 2
228 memory. The other attack requires 2
116 known plaintexts and 2
121 memory but also requires 2
237.5 time.
See also
*
Tiger
The tiger (''Panthera tigris'') is the largest living cat species and a member of the genus '' Panthera''. It is most recognisable for its dark vertical stripes on orange fur with a white underside. An apex predator, it primarily preys on u ...
– hash function by the same authors
Footnotes
Further reading
*
*
*
*
External links
*
256 bit ciphers– SERPENT Reference implementation and derived code
{{Cryptography navbox, block
Block ciphers
Free ciphers
Public-domain software with source code
Free software