SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård...

86
SHA-3 vs the world David Wong

Transcript of SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård...

Page 1: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

SHA-3 vs the worldDavid Wong

Page 2: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Snefru

MD4

Page 3: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Snefru

MD4

Page 4: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Snefru

MD4

MD5

SHA-1

SHA-2

Merkle–Damgård

Page 5: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Snefru

MD4

MD5

SHA-1

SHA-2

Merkle–Damgård

Page 6: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Snefru

MD5

SHA-1

SHA-2

Merkle–Damgård

MD4

Page 7: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived
Page 8: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Snefru

MD5

SHA-1

SHA-2

Merkle–Damgård

MD4

Page 9: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived
Page 10: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived
Page 11: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

KeccakBLAKE, Grøstl, JH, Skein

Page 12: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Outline

1.SHA-3 2.derived functions 3.derived protocols

Page 13: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

permutation-based cryptography

Page 14: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

AES

AES is a permutation

input

output

Page 15: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

AES

AES is a permutation

input

output

key

0000000000000000

Page 16: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

Sponge Construction

Page 17: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

Sponge Construction

00000000

01011001

Page 18: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

Sponge Construction

r

c

00000

000

01011

001

Page 19: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

Sponge Construction

AES key

0000000000000000

r cr

c

00000

000

01011

001

Page 20: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

message

Sponge Construction

00000

000

11100

010

Page 21: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

message

⊕ ⊕

Sponge Construction

00000

000

Page 22: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

message

⊕ ⊕f

Sponge Construction

00000

000

Page 23: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

message

⊕ ⊕f

Sponge Construction

00000

000

Page 24: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

message

⊕ ⊕f

⊕f

Sponge Construction

00000

000

Page 25: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

message

⊕ ⊕f

⊕f

absorbing

Sponge Construction

00000

000

Page 26: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

absorbing

00000

000

f

message

⊕ ⊕f

⊕f

outputSponge Construction

Page 27: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

absorbing

00000

000

f

message

⊕ ⊕f

⊕f

output

f

Sponge Construction

Page 28: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

absorbing

00000

000

f

message

⊕ ⊕f

⊕f

output

f

Sponge Construction

Page 29: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

absorbing

00000

000

f

message

⊕ ⊕f

⊕f

output

f f

Sponge Construction

Page 30: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

message

⊕ ⊕f

⊕f

output

f f

squeezing

Sponge Construction

absorbing

00000

000

Page 31: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived
Page 32: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Keccak Guido Bertoni, Joan Daemen, Michaël Peeters and Gilles Van Assche

Page 33: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

SHA-3 competition

2012

2007

Page 34: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived
Page 35: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

SHA-3 competition

2012

2007

SHA-3 standard (FIPS 202) 2015

Page 36: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived
Page 37: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived
Page 38: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Where is SHA-3 being used?

Page 39: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Outline

1.SHA-3 2.derived functions 3.derived protocols

Page 40: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived
Page 41: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

SHAKE is a XOF

Page 42: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived
Page 43: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

SHA-3 competition

2012

2007

SHA-3 standard (FIPS 202) 2015SP 800-185 2016

Page 44: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

KMAC

TupleHash

ParallelHash

Page 45: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

KMAC

TupleHash

ParallelHash

message || SHA-256(message)

Page 46: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

KMAC

TupleHash

ParallelHash

message || SHA-256(key||message)

Page 47: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

KMAC

TupleHash

ParallelHash

message || more || SHA-256(key||message||more)

Page 48: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

KMAC

TupleHash

ParallelHash

message || SHAKE(key || message)

Page 49: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

KMAC

TupleHash

ParallelHash

message || SHAKE(key || message)

my RSA public key = (e, N)

Page 50: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

KMAC

TupleHash

ParallelHash

message || SHAKE(key || message)

my RSA public key = (e, N) fingerprint = SHA-256(e || N)

Page 51: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

KMAC

TupleHash

ParallelHash

message || SHAKE(key || message)

fingerprint1 = SHA-256(1010110000000010001…) e N

Page 52: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

KMAC

TupleHash

ParallelHash

message || SHAKE(key || message)

fingerprint1 = SHA-256(1010110000000010001…) e N

fingerprint2 = SHA-256(1010110000000010001…) e N

Page 53: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

KMAC

TupleHash

ParallelHash

message || SHAKE(key || message)

SHAKE(len(e) || e || len(N) || N)

Page 54: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

squeezingabsorbing

00000

000

f

message

⊕ ⊕f

⊕f

output

f f

Sponge Construction

Page 55: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

squeezingabsorbing

00000

000

f

message

⊕ ⊕f

⊕f

output

f f

Sponge Construction

Page 56: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

squeezingabsorbing

00000

000

f

message

⊕ ⊕f

⊕f

output

f f

Sponge Construction

Page 57: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

squeezingabsorbing

00000

000

f

message

⊕ ⊕f

⊕f

output

f f

Sponge Construction

Page 58: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

KMAC

TupleHash

ParallelHash

message || SHAKE(key || message)

SHAKE(len(e) || e || len(N) || N)

SHAKE(SHAKE(b1) || SHAKE(b2) || SHAKE(b3) || …)

Page 59: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

SHA-3 competition

2012

2007

SHA-3 / SHAKE 2015TupleHash / ParallelHash / KMAC 2016

Page 60: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Keyak and Ketje

Page 61: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

SHA-3 competition

2012

2007

SHA-3 / SHAKE 2015TupleHash / ParallelHash / KMAC 2016

KangarooTwelve & MarsupilamiFourteen

Page 62: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived
Page 63: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

SHA-3 competition

2012

2007

SHA-3 / SHAKE 2015TupleHash / ParallelHash / KMAC 2016

KangarooTwelve & MarsupilamiFourteen

Page 64: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

github.com/gvanas/KeccakCodePackage

Page 65: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Outline

1.SHA-3 2.derived functions 3.derived protocols

Page 66: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

mes

sage

⊕⊕

f

⊕f

outp

ut

ff

Spon

ge C

onst

ruct

ion

sque

ezin

gab

sorb

ing

0 0 0 0 0 0 0 0

Page 67: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

input

init

output

duplexing

Duplex Construction

f

input

output

duplexing

f

input output

duplexing

00000

000

Page 68: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Keyed-mode

f

key

init duplexing

00000000

Page 69: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Keyed-mode

f

key

init duplexing

00000000

secret part

leak

Page 70: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

key

init duplexing

00000000

Encryption?

Page 71: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

key

init duplexing

00000000

ciphertext1

plaintext1⊕

Encryption

Page 72: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

key

init duplexing

00000000

ciphertext1

plaintext1⊕

f⊕

tag1

duplexing

Authenticated Encryption

Page 73: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

f

key

init duplexing

00000000

ciphertext1

plaintext1⊕

f⊕

tag1

duplexing

f

ciphertext2

duplexing

f⊕

tag2

duplexing

plaintext2⊕

Sessions

Page 74: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

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

}

Strobe

Page 75: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived
Page 76: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

myHash = Strobe_init(“hash”)

myHash.AD(“something to be hashed”)

hash = myHash.PRF(outputLen=16)

Hash Function

Page 77: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

KDF = Strobe_init(“deriving keys”)

KDF.KEY(keyExchangeOutput)

keys = KDF.PRF(outputLen=32)

key1 = keys[:16]

key2 = keys[16:]

Key Derivation Function

Page 78: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

data = 010100…

operation = AD

Page 79: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

data = 010100…operation = send_MAC

f⊕ ⊕

operation = AD

⊕len = 16

tag

Page 80: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

init

00000000

operation = KEY

f⊕

data = 010100…

Page 81: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

init

00000000

operation = KEY

f⊕

data = 010100…

f⊕

operation = send_ENCdata = hello

⊕ciphertext

Page 82: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

init

00000000

operation = KEY

f⊕

data = 010100…

f f⊕

operation = send_ENCdata = hello

⊕ciphertext

len = 16

tag

operation = send_MAC

Page 83: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

strobe.sourceforge.io

Page 84: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

Outline

1.SHA-3 2.derived functions 3.derived protocols 4.Disco?

Page 85: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

www.discocrypto.com

Noise + Strobe = Disco

Page 86: SHA-3 vs the world - OWASP...SHA-2 Merkle–Damgård MD4. Snefru MD5 SHA-1 SHA-2 Merkle–Damgård MD4. Keccak BLAKE, Grøstl, JH, Skein. Outline 1.SHA-3 2.derived functions 3.derived

I write about crypto at www.cryptologie.net

I tweet my mind on twitter.com/lyon01_david

and I work here