Keccak and SHA-3: Code and Standard Updates

Keccak and SHA-3: Code and Standard Updates

Keccak and SHA-3: code and standard updates Guido Bertoni1 Joan Daemen1 Michaël Peeters2 Gilles Van Assche1 Ronny Van Keer1 1STMicroelectronics 2NXP Semiconductors FOSDEM 2015, Brussels, January 31st & February 1st, 2015 1 / 39 Outline 1 What is Keccak 2 NIST plans 3 The CAESAR competition 4 Keccak code package 2 / 39 What is Keccak Outline 1 What is Keccak 2 NIST plans 3 The CAESAR competition 4 Keccak code package 3 / 39 ∗ h : f0, 1g ! f0, 1gn #!/bin/ash notmagritte() In Out { echo ”this is a ash function!” } This is not a hash function! This is a hash function! What is Keccak What is a hash function? 4 / 39 ∗ h : f0, 1g ! f0, 1gn In Out This is not a hash function! This is a hash function! What is Keccak What is a hash function? #!/bin/ash notmagritte() { echo ”this is a ash function!” } 4 / 39 ∗ h : f0, 1g ! f0, 1gn In Out This is a hash function! What is Keccak What is a hash function? #!/bin/ash notmagritte() { echo ”this is a ash function!” } This is not a hash function! 4 / 39 In Out What is Keccak What is a hash function? ∗ h : f0, 1g ! f0, 1gn #!/bin/ash notmagritte() { echo ”this is a ash function!” } This is not a hash function! This is a hash function! 4 / 39 What is Keccak Cryptographic hash functions ∗ h : f0, 1g ! f0, 1gn Input message Digest MD5: n = 128 (Ron Rivest, 1992) SHA-1/2: n 2 f160, 224, 256, 384, 512g (NSA, NIST, 1995-2001) …and Keccak? It is a (cryptographic) sponge function! 5 / 39 What is Keccak Cryptographic sponge functions Var.-length input Variable-length output r 0 f f … f f f … f c 0 absorbing squeezing Arbitrary input and output length More flexible than regular hash functions Parameters r bits of rate (defines the speed) c bits of capacity (defines the security level) Keccak uses the permutation Keccak-f 6 / 39 What is Keccak Keccak-f in pseudo-code KECCAK-F[b](A) { forall i in 0…nr-1 A = Round[b](A, RC[i]) return A } Round[b](A,RC) { θ step C[x] = A[x,0] xor A[x,1] xor A[x,2] xor A[x,3] xor A[x,4], forall x in 0…4 D[x] = C[x-1] xor rot(C[x+1],1), forall x in 0…4 A[x,y] = A[x,y] xor D[x], forall (x,y) in (0…4,0…4) ρ and π steps B[y,2*x+3*y] = rot(A[x,y], r[x,y]), forall (x,y) in (0…4,0…4) χ step A[x,y] = B[x,y] xor ((not B[x+1,y]) and B[x+2,y]), forall (x,y) in (0…4,0…4) ι step A[0,0] = A[0,0] xor RC return A } 7 widths b (= r + c): 25, 50, 100, 200, 400, 800, and 1600 bits. 7 / 39 What is Keccak Sponge tuning: capacity ) security level 64 80 128 224 256 384 512 Security level Cost [bit] ] [cy/B] 20 cy/B r e w 15 cy/B o l S http://bench.cr.yp.to/ 10 cy/B r e t s a F 5 cy/B [eBASH, hydra6, Capacity [bit] 128 160 256 448 512 768 1024 1600 8 / 39 What is Keccak Sponge tuning: capacity ) security level 64 80 128 224 256 384 512 Security level Cost [bit] ] [cy/B] 20 cy/B r e w 15 cy/B o l S http://bench.cr.yp.to/ 10 cy/B r e t s a F 5 cy/B [eBASH, hydra6, Script-kiddie Light- Long-term Overkill Overkill / Insane weight Capacity [bit] 128 160 256 448 512 768 1024 1600 8 / 39 What is Keccak Sponge tuning: capacity ) security level 64 80 128 224 256 384 512 Security level Cost [bit] ] [cy/B] 20 cy/B r e w 15 cy/B o l S http://bench.cr.yp.to/ 10 cy/B r Keccak e 8 cy/B t s [b=1600] a F 5 cy/B [eBASH, hydra6, Script-kiddie Light- Long-term Overkill Overkill / Insane weight Capacity [bit] 128 160 256 448 512 768 1024 1600 8 / 39 What is Keccak Sponge tuning: capacity ) security level 64 80 128 224 256 384 512 Security level Cost [bit] ] [cy/B] sha-256 20 cy/B r e w 15 cy/B o l sha-512 S http://bench.cr.yp.to/ 10 cy/B r Keccak e 8 cy/B t s [b=1600] a L sha-1 F 5 cy/B L md5 [eBASH, hydra6, Script-kiddie Light- Long-term Overkill Overkill / Insane weight Capacity [bit] 128 160 256 448 512 768 1024 1600 8 / 39 What is Keccak Keccak tuning: number of rounds ) safety margin Cost ] [cy/B] sha-256 20 cy/B r e w 15 cy/B o l sha-512 S http://bench.cr.yp.to/ 10 cy/B r e t s a L sha-1 F 5 cy/B L md5 [eBASH, hydra6, Nr of rounds 2 4 6 8 10 12 14 16 18 20 22 24 9 / 39 What is Keccak Keccak tuning: number of rounds ) safety margin Cost ] [cy/B] sha-256 20 cy/B r e w 15 cy/B o l sha-512 S http://bench.cr.yp.to/ 10 cy/B Keccak[c=256] r e 8 cy/B t s a L sha-1 F 5 cy/B L md5 [eBASH, hydra6, Nr of rounds 2 4 6 8 10 12 14 16 18 20 22 24 9 / 39 What is Keccak Keccak tuning: number of rounds ) safety margin Cost ] [cy/B] sha-256 20 cy/B Practical attack Twilight zone No attack r e w 15 cy/B o l sha-512 S http://bench.cr.yp.to/ 10 cy/B Keccak[c=256] r e 8 cy/B t s a L sha-1 F 5 cy/B L md5 [eBASH, hydra6, Nr of rounds 2 4 6 8 10 11 12 14 16 18 20 22 24 9 / 39 What is Keccak Keccak tuning: number of rounds ) safety margin Cost ] [cy/B] sha-256 20 cy/B Practical attack Twilight zone No attack r e w 15 cy/B o l sha-512 S http://bench.cr.yp.to/ 10 cy/B Keccak[c=256] r e 8 cy/B t s a L sha-1 F 5 cy/B L md5 4 cy/B Keyak (single-pass [eBASH, hydra6, authenticated encryption) Nr of rounds 2 4 6 8 10 11 12 14 16 18 20 22 24 9 / 39 NIST plans Outline 1 What is Keccak 2 NIST plans 3 The CAESAR competition 4 Keccak code package 10 / 39 NIST plans The SHA-3 contest 2000-2006: crisis for standard hash function standards MD5: practically broken SHA-1: theoretically broken SHA-2: serious doubts on foundations November 2007: NIST announces EDON-R BMW SHA-3 contest Sgàil LANE Grøstl ZK-Crypt Keccak Maraca NKS2D Hamsi MeshHash MD6 Waterfall StreamHash ECOH EnRUPT Twister Abacus MCSSHA3 goal: FIPS standard WaMM Ponic AURORA Shabal LUX Skein SHAMATA CubeHash CRUNCH Luffa Cheetah DynamicSHA 2 Spectral Hash ECHO DCH Sarmal scope: stand-ins for all 4 SHA-2 SIMD ESSENCE SWIFFTX FSB ARIRANG NaSHA Lesamnta Fugue SHAvite-3 SANDstorm BLAKE Blender HASH 2X Tangle Vortex DynamicSHA method: public competition like AES BOOLE Khichidi-1 response: 64 submissions JH CHI TIB3 16/06/2009 Summer 2008: start with 51 proposals 2005 2006 2007 2008 2009 2010 2011 2012 October 2012: Keccak = SHA-3 [courtesy of C. De Cannière] 11 / 39 NIST plans The long road to the SHA-3 FIPS By Piet Musterd (flickr.com) February 2013: NIST-Keccak-team meeting SHA-2 replacement by now less urgent …but Keccak is more than just hashing! NIST disseminates joint SHA-3 proposal Summer 2013: Snowden revelations alleged NSA back door in DUAL EC DRBG SHA-3 proposal framed as “NIST weakening Keccak” Early 2014: standard takes shape addressing public concerns Friday, April 4, 2014: draft FIPS 202 for public comments August 2014: NIST announces plans at SHA-3 conference Mid 2015 (expected): FIPS 202 official 12 / 39 NIST plans FIPS 202: what is inside? By Nicole Doherty (flickr.com) Content Keccak instances for 4 hash functions 2 XOFs Keccak-f all 7 block widths even reduced-round versions unlike AES FIPS that has only 1 of the 5 Rijndael widths sponge construction Concept: toolbox for building other functions tree hashing, MAC, encryption, … dedicated special publications (NIST SP 800-XX) under development http://csrc.nist.gov/groups/ST/hash/sha-3/Aug2014/index.html 13 / 39 NIST plans XOF: eXtendable Output Function “XOF: a function in which the output can be extended to any length.” Good for full domain hash, stream ciphers and key derivation [Ray Perlner, SHA 3 workshop 2014] Quite natural for sponge keeps state and delivers more output upon request bits of output do not depend on the number of bits requested Allows simplification: instead of separate hash functions per output length a single XOF can cover all use cases: H-256(M) = bXOF(M)c256 14 / 39 NIST plans Domain separation By Adam Fagen (flickr.com) Some protocols and applications need multiple hash functions or XOFs that should be independent With a single XOF? Yes: using domain separation output of XOF(Mjj0) and XOF(Mjj1) are independent …unless XOF has a cryptographic weakness Generalization to 2n functions with D an n-bit diversifier XOFD(M) = XOF(MjjD) Variable-length diversifiers: suffix-free set of strings 15 / 39 NIST plans The XOFs and hash functions in FIPS 202 Four drop-in replacements identical to those in Keccak submission Two extendable output functions (XOF) Tree-hashing ready: Sakura coding [Keccak team, ePrint 2013/231] XOF SHA-2 drop-in replacements Keccak[c = 256](Mjj11jj11) bKeccak[c = 448](Mjj01)c224 Keccak[c = 512](Mjj11jj11) bKeccak[c = 512](Mjj01)c256 bKeccak[c = 768](Mjj01)c384 bKeccak[c = 1024](Mjj01)c512 SHAKE128 and SHAKE256 SHA3-224 to SHA3-512 16 / 39 NIST plans Tree hashing Features: hash recomputation when modifying small part of file peer-to-peer applications: Gnutella, BitTorrent etc.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    63 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us