David Wong Snefru

David Wong Snefru

SHA-3 vs the world David Wong Snefru MD4 Snefru MD4 Snefru MD4 MD5 Merkle–Damgård SHA-1 SHA-2 Snefru MD4 MD5 Merkle–Damgård SHA-1 SHA-2 Snefru MD4 MD5 Merkle–Damgård SHA-1 SHA-2 Snefru MD4 MD5 Merkle–Damgård SHA-1 SHA-2 Keccak BLAKE, Grøstl, JH, Skein Outline 1.SHA-3 2.derived functions 3.derived protocols f permutation-based cryptography AES is a permutation input AES output AES is a permutation 0 input 0 0 0 0 0 0 0 key 0 AES 0 0 0 0 0 0 output 0 Sponge Construction f Sponge Construction 0 0 0 1 0 0 0 1 f 0 1 0 0 0 0 0 1 Sponge Construction 0 0 0 1 r 0 0 0 1 f 0 1 0 0 c 0 0 0 1 Sponge Construction 0 0 0 1 r 0 0 0 1 f r c 0 1 0 0 0 0 0 0 c 0 0 0 0 0 1 0 0 key 0 AES 0 0 0 0 0 0 0 Sponge Construction message 0 1 0 1 0 ⊕ 1 0 0 f 0 0 0 0 0 1 0 0 Sponge Construction message 0 0 0 ⊕ ⊕ 0 f 0 0 0 0 Sponge Construction message 0 0 0 ⊕ ⊕ 0 f f 0 0 0 0 Sponge Construction message 0 0 0 ⊕ ⊕ ⊕ 0 f f 0 0 0 0 Sponge Construction message 0 0 0 ⊕ ⊕ ⊕ 0 f f f 0 0 0 0 Sponge Construction message 0 0 0 ⊕ ⊕ ⊕ 0 f f f 0 0 0 0 absorbing Sponge Construction message output 0 0 0 ⊕ ⊕ ⊕ 0 f f f 0 0 0 0 absorbing Sponge Construction message output 0 0 0 ⊕ ⊕ ⊕ 0 f f f f 0 0 0 0 absorbing Sponge Construction message output 0 0 0 ⊕ ⊕ ⊕ 0 f f f f 0 0 0 0 absorbing Sponge Construction message output 0 0 0 ⊕ ⊕ ⊕ 0 f f f f f 0 0 0 0 absorbing Sponge Construction message output 0 0 0 ⊕ ⊕ ⊕ 0 f f f f f 0 0 0 0 absorbing squeezing Keccak Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche 2007 SHA-3 competition 2012 2007 SHA-3 competition 2012 SHA-3 standard (FIPS 202) 2015 Where is SHA-3 being used? Outline 1.SHA-3 2.derived functions 3.derived protocols SHAKE is a XOF 2007 SHA-3 competition 2012 SHA-3 standard (FIPS 202) 2015 SP 800-185 2016 KMAC TupleHash ParallelHash KMAC message || SHA-256(message) TupleHash ParallelHash KMAC message || SHA-256(key||message) TupleHash ParallelHash KMAC message || more || SHA-256(key||message||more) TupleHash ParallelHash KMAC message || SHAKE(key || message) TupleHash ParallelHash KMAC message || SHAKE(key || message) TupleHash my RSA public key = (e, N) ParallelHash KMAC message || SHAKE(key || message) TupleHash my RSA public key = (e, N) fingerprint = SHA-256(e || N) ParallelHash KMAC message || SHAKE(key || message) TupleHash e N fingerprint1 = SHA-256(1010110000000010001…) ParallelHash KMAC message || SHAKE(key || message) TupleHash e N fingerprint1 = SHA-256(1010110000000010001…) e N fingerprint2 = SHA-256(1010110000000010001…) ParallelHash KMAC message || SHAKE(key || message) TupleHash SHAKE(len(e) || e || len(N) || N) ParallelHash Sponge Construction message output 0 0 0 ⊕ ⊕ ⊕ 0 f f f f f 0 0 0 0 absorbing squeezing Sponge Construction message output 0 0 0 ⊕ ⊕ ⊕ 0 f f f f f 0 0 0 0 absorbing squeezing Sponge Construction message output 0 0 0 ⊕ ⊕ ⊕ 0 f f f f f 0 0 0 0 absorbing squeezing Sponge Construction message output 0 0 0 ⊕ ⊕ ⊕ 0 f f f f f 0 0 0 0 absorbing squeezing KMAC message || SHAKE(key || message) TupleHash SHAKE(len(e) || e || len(N) || N) ParallelHash SHAKE(SHAKE(b1) || SHAKE(b2) || SHAKE(b3) || …) 2007 SHA-3 competition 2012 SHA-3 / SHAKE 2015 TupleHash / ParallelHash / KMAC 2016 Keyak and Ketje 2007 SHA-3 competition 2012 SHA-3 / SHAKE 2015 TupleHash / ParallelHash / KMAC 2016 KangarooTwelve & MarsupilamiFourteen 2007 SHA-3 competition 2012 SHA-3 / SHAKE 2015 TupleHash / ParallelHash / KMAC 2016 KangarooTwelve & MarsupilamiFourteen github.com/gvanas/KeccakCodePackage Outline 1.SHA-3 2.derived functions 3.derived protocols Sponge Construction message output 0 0 0 ⊕ ⊕ ⊕ 0 f f f f f 0 0 0 0 absorbing squeezing Duplex Construction input output input output input output 0 0 0 ⊕ ⊕ ⊕ 0 f f f 0 0 0 init 0 duplexing duplexing duplexing Keyed-mode key 0 0 0 ⊕ 0 f 0 0 0 init 0 duplexing Keyed-mode key 0 secret part 0 0 ⊕ 0 leak f 0 0 0 init 0 duplexing Encryption? key 0 0 0 ⊕ 0 f 0 0 0 init 0 duplexing Encryption key ciphertext1 0 ⊕ plaintext1 0 0 ⊕ 0 f 0 0 0 init 0 duplexing Authenticated Encryption key ciphertext1 tag1 0 ⊕ plaintext1 0 0 ⊕ ⊕ 0 f f 0 0 0 init 0 duplexing duplexing Sessions key ciphertext1 tag1 ciphertext2 tag2 0 ⊕ plaintext1 ⊕ plaintext2 0 0 ⊕ ⊕ ⊕ 0 f f f f 0 0 0 init 0 duplexing duplexing duplexing duplexing Strobe myProtocol = Strobe_init(“myWebsite.com”) myProtocol.KEY(sharedSecret) buffer += myProtocol.send_ENC(“GET /”) buffer += myProtocol.send_MAC(len=16) // send the buffer // receive a ciphertext message = myProtocol.recv_ENC(ciphertext[:-16]) ok = myProtocol.recv_MAC(ciphertext[-16:]) if !ok { // reset the connection } Hash Function myHash = Strobe_init(“hash”) myHash.AD(“something to be hashed”) hash = myHash.PRF(outputLen=16) Key Derivation Function KDF = Strobe_init(“deriving keys”) KDF.KEY(keyExchangeOutput) keys = KDF.PRF(outputLen=32) key1 = keys[:16] key2 = keys[16:] operation = AD data = 010100… ⊕ ⊕ operation = AD operation = send_MAC data = 010100… tag len = 16 ⊕ ⊕ ⊕ f operation = KEY data = 010100… 0 0 0 ⊕ 0 0 f 0 0 init 0 operation = KEY operation = send_ENC data = 010100… data = hello 0 0 ciphertext 0 ⊕ ⊕ ⊕ 0 0 f f 0 0 init 0 operation = send_MAC operation = KEY operation = send_ENC data = 010100… data = hello tag 0 ciphertext 0 len = 16 0 ⊕ ⊕ ⊕ ⊕ 0 0 f f f 0 0 init 0 strobe.sourceforge.io Outline 1.SHA-3 2.derived functions 3.derived protocols 4.Disco? Noise + Strobe = Disco www.discocrypto.com I write about crypto at www.cryptologie.net I tweet my mind on twitter.com/lyon01_david and I work here.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    86 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