Date de l'exposé : 4 juin 2013
KeccakIn October 2012, the American National Institute of Standards and Technology (NIST) announced the selection of Keccak as the winner of the SHA-3 Cryptographic Hash Algorithm Competition. This concluded an open competition that was remarkable both for its magnitude and the involvement of the cryptographic community. Public review is of paramount importance to increase the confidence in the new standard and to favor its quick adoption. The SHA-3 competition explicitly took this into account by giving open access to the candidate algorithms and everyone in the cryptographic community could try to break them, compare their performance, or simply give comments.
While preparing for the SHA-3 competition, we developed and presented the sponge construction. Our initial goal of this effort was to solve the problem of compactly expressing a comprehensive security claim. It turned out to be a powerful tool for building a hash function and we adopted it for our SHA-3 candidate Keccak. Additionally, with its variable output length it can be used as a mask generating function, a stream cipher or a MAC computation function. To support more sophisticated modes such as single-pass authenticated encryption and reseedable pseudorandom sequence generation, we additionally introduced the duplex construction. We have proven both sponge and duplex constructions sound in the indifferentiability framework. Our permutation-based modes can be seen as an alternative to the block-cipher based modes that have dominated mainstream symmetric cryptography in the last decades. They are simpler than the traditional block cipher modes and offer at the same time more flexibility by allowing to trade in security strength level for speed and vice versa. At the core of Keccak is a set of seven permutations called Keccak-f[b], with width b chosen between 25 and 1600 by multiplicative steps of 2. Depending on b, the resulting function ranges from a toy cipher to a wide function. The instances proposed for SHA-3 use exclusively Keccak-f for all security levels, whereas lightweight alternatives can use for instance Keccak-f or Keccak-f, leaving Keccak-f as an intermediate choice. Inside Keccak-f, the state to process is organized in 5 × 5 lanes of b/25 bits each, or alternatively as b/25 slices of 25 bits each. The round function processes the state using a non-linear layer of algebraic degree two, a linear mixing layer, inter- and intra-slice dispersion steps and the addition of round constants. The choice of operations in Keccak-f makes it very different from the SHA-2 family or even Rijndael (AES). On the implementation side, these operations are efficiently translated into bitwise Boolean operations and circular shifts, they lead to short critical paths in hardware implementations and they are well suited for protections against side-channel attacks.