General | |
---|---|
Designers | Bruce Schneier, Niels Ferguson, et al. |
Derived from | Threefish |
Certification | SHA-3 finalist |
Detail | |
Digest sizes | arbitrary |
Rounds | 72 (256 & 512 block size), 80 (1024 block size) |
Speed | 6.1 cpb on Core 2. |
Skein is a cryptographic hash function and one of five finalists in the NIST hash function competition. Entered as a candidate to become the SHA-3 standard, the successor of SHA-1 and SHA-2, it ultimately lost to NIST hash candidate Keccak.
The name Skein refers to how the Skein function intertwines the input, similar to a of yarn.
Skein was created by Bruce Schneier, Niels Ferguson, Stefan Lucks, Doug Whiting, Mihir Bellare, Tadayoshi Kohno, Jon Callas and Jesse Walker.
Skein is based on the Threefish tweakable block cipher compressed using Unique Block Iteration (UBI) chaining mode while leveraging an optional low-overhead argument-system for flexibility.
Skein's algorithm as also reference implementation was given to public domain.
Skein supports internal state sizes of 256, 512 and 1024 bits, and arbitrary output sizes.
The authors claim 6.1 cycles per byte for any output size on an Intel Core 2 Duo in 64-bit mode.
The core of Threefish is based on a MIX function that transforms 2 64-bit words using a single addition, rotation by a constant and XOR. The UBI chaining mode combines an input chaining value with an arbitrary length input string and produces a fixed size output.
Threefish's nonlinearity comes entirely from the combination of addition operations and exclusive-ORs; it does not use S-boxes. The function is optimized for 64-bit processors, and the Skein paper defines optional features such as randomized hashing, parallelizable tree hashing, a stream cipher, personalization, and a key derivation function.