Trivium (cipher)
From Wikipedia, the free encyclopedia
Trivium is a synchronous stream cipher designed to provide a flexible trade-off between speed and gate count in hardware, and reasonably efficient software implementation.
It was submitted[1] to the Profile II (hardware) of the eSTREAM competition by its authors, Christophe De Cannière and Bart Preneel, and has been selected as Phase 2 Focus Candidate for Profile 2 by the eSTREAM project. It is not patented.
It generates up to 264 bits of output from an 80-bit key and an 80-bit IV. It is the simplest eSTREAM entrant, and shows remarkable resistance to cryptanalysis for its simplicity.
Contents |
[edit] Description
Trivium's 288-bit internal state consists of three shift registers of different lengths. At each round, a bit is shifted into each of the three shift registers using a non-linear combination of taps from that and one other register; one bit of output is produced. To initialize the cipher, the key and IV are written into two of the shift registers, with the remaining bits starting in a fixed pattern; the cipher state is then updated 4 × 288 = 1152 times, so that every bit of the internal state depends on every bit of the key and of the IV in a complex nonlinear way.
No taps appear on the first 64 bits of each shift register, so each novel state bit is not used until at least 64 rounds after it is generated. This is the key to Trivium's software performance and flexibility in hardware.
[edit] Specification
Trivium may be specified very concisely using three recursive equations.[2] Each variable is an element of GF(2); they can be represented as bits, with "+" being XOR and multiplication being AND.
- ai = ci-66 + ci-111 + ci-110 ci-109 + ai-69
- bi = ai-66 + ai-93 + ai-92 ai-91 + bi-78
- ci = bi-69 + bi-84 + bi-83 bi-82 + ci-87
The output bits r0 ... r264-1 are then generated by
- ri = ci-66 + ci-111 + ai-66 + ai-93 + bi-69 + bi-84
Given an 80-bit key k0 ... k79 and an l-bit IV v0 ... vl-1 (where 0 ≤ l ≤ 80), Trivium is initialized as follows:
- (a-1245 ... a-1153) = (0, 0 ... 0, k0 ... k79)
- (b-1236 ... b-1153) = (0, 0 ... 0, v0 ... vl-1)
- (c-1263 ... c-1153) = (1, 1, 1, 0, 0 ... 0)
The large negative indices on the initial values reflect the 1152 steps that must take place before output is produced.
To map a stream of bits r to a stream of bytes R, we use the little-endian mapping Ri = Σj=0 ... 7 2j r8i+j.
[edit] Performance
A straightforward hardware implementation of Trivium would use 3488 logic gates and produce one bit per clock cycle. However, because each novel state bit is not used for at least 64 rounds, 64 state bits can be generated in parallel at a slightly greater hardware cost of 5504 gates. Different tradeoffs between speed and area are also possible.
The same property allows an efficient bitslice implementation in software; performance testing by eSTREAM give bulk encryption speeds of around 4 cycles/byte on some x86 platforms, which compares well to the 19 cycles/byte of the AES reference implementation on the same platform.
[edit] Security
According to the authors, 'Trivium was designed as an exercise in exploring how far a stream cipher can be simplified without sacrificing its security, speed or flexibility'.
The Trivium authors claim in the specifications that simple designs like Trivium are more likely to be vulnerable to simple, and possibly devastating, attacks. Such schemes are offered as they 'certainly inspire more confidence than complex schemes, if they survive a long period of public scrutiny despite their simplicity'. The authors 'strongly discourage the use of Trivium at this stage'.
As of January 2006, no cryptanalytic attacks better than brute force attack are known; the best attack, by Shahram Khazaei, requires around 2135 operations. [3]
Reduced variants of Trivium corresponding to the design's basic construction have been broken using an equation-solving technique.[4] The paper claims that the current implementation of their equation-solving attack can not break the full Trivium cipher due to the short key-length when compared to the size of the internal state of the cipher.
The Trivium specifications do not support the use of keys at least twice the security rating of the cipher to prevent parallel brute-force attacks as recommend by Daniel J. Bernstein in his paper "Understanding Brute Force" [5]. Furthermore it is argued that 'no stream cipher can provide security equal to its key length' by J. Hong and P. Sarkar in the paper "Rediscovery of Time Memory Tradeoffs"[6].
A detailed justification of the design of Trivium is given in [7].
[edit] References
- ^ Christophe De Cannière, Bart Preneel (2005-04-29). "Trivium specifications" (PDF). eSTREAM submitted papers. Retrieved on 2006-10-09.
- ^ eSTREAM Phorum, 2006-02-20
- ^ Shahram Khazaei, Mehdi Hassanzadeh (2005-09-27). "Linear Sequential Circuit Approximation of the TRIVIUM Stream Cipher" (PDF). eSTREAM submitted papers. Retrieved on 2006-10-09.
- ^ Håvard Raddum (2006-03-27). "Cryptanalytic results on Trivium" (PostScript). eSTREAM submitted papers. Retrieved on 2006-10-09.
- ^ Daniel J. Bernstein (2005-04-25). "Understanding Brute Force" (PDF). cr.yp.to. Retrieved on 2006-10-09.
- ^ J. Hong, P. Sarkar (2005-03-22). "Rediscovery of Time Memory Tradeoffs" (PDF). ePrint. Retrieved on 2006-10-09.
- ^ Christophe De Cannière, Bart Preneel (2006-01-02). "Trivium - A Stream Cipher Construction Inspired by Block Cipher Design Principles" (PDF). eSTREAM submitted papers. Retrieved on 2006-10-09.
[edit] External links
Algorithms: A5/1 | A5/2 | FISH | Grain | HC-256 | ISAAC | MUGI | Panama | Phelix | Pike | Py | Rabbit | RC4 | Salsa20 | Scream | SEAL | SOBER | SOBER-128 | SOSEMANUK | Trivium | VEST | WAKE |
Theory: Shift register | LFSR | NLFSR | Shrinking generator Standardization: eSTREAM |
History of cryptography | Cryptanalysis | Cryptography portal | Topics in cryptography |
Symmetric-key algorithm | Block cipher | Stream cipher | Public-key cryptography | Cryptographic hash function | Message authentication code | Random numbers |