Keccak and SHA-3: code and standard updates Guido Bertoni 1 Joan - - PowerPoint PPT Presentation

keccak and sha 3 code and standard updates
SMART_READER_LITE
LIVE PREVIEW

Keccak and SHA-3: code and standard updates Guido Bertoni 1 Joan - - PowerPoint PPT Presentation

Keccak and SHA-3: code and standard updates Guido Bertoni 1 Joan Daemen 1 Michal Peeters 2 Gilles Van Assche 1 Ronny Van Keer 1 1 STMicroelectronics 2 NXP Semiconductors FOSDEM 2015, Brussels, January 31st & February 1st, 2015 1 / 39


slide-1
SLIDE 1

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

slide-2
SLIDE 2

Outline

1

What is Keccak

2

NIST plans

3

The CAESAR competition

4

Keccak code package

2 / 39

slide-3
SLIDE 3

What is Keccak

Outline

1

What is Keccak

2

NIST plans

3

The CAESAR competition

4

Keccak code package

3 / 39

slide-4
SLIDE 4

What is Keccak

What is a hash function?

#!/bin/ash notmagritte() { echo ”this is a ash function!” } This is not a hash function! h 0 1 0 1 n This is a hash function!

4 / 39

slide-5
SLIDE 5

What is Keccak

What is a hash function?

#!/bin/ash notmagritte() { echo ”this is a ash function!” } This is not a hash function! h 0 1 0 1 n This is a hash function!

4 / 39

slide-6
SLIDE 6

What is Keccak

What is a hash function?

#!/bin/ash notmagritte() { echo ”this is a ash function!” } This is not a hash function! h 0 1 0 1 n This is a hash function!

4 / 39

slide-7
SLIDE 7

What is Keccak

What is a hash function?

#!/bin/ash notmagritte() { echo ”this is a ash function!” } This is not a hash function! h : {0, 1}∗ → {0, 1}n

I n O u t

This is a hash function!

4 / 39

slide-8
SLIDE 8

What is Keccak

Cryptographic hash functions

h : {0, 1}∗ → {0, 1}n

I n p u t me s s a g e D i g e s t

MD5: n = 128 (Ron Rivest, 1992) SHA-1/2: n ∈ {160, 224, 256, 384, 512} (NSA, NIST, 1995-2001) …and Keccak? It is a (cryptographic) sponge function!

5 / 39

slide-9
SLIDE 9

What is Keccak

Cryptographic sponge functions

f f f f Var.-length input … Variable-length output f f …

absorbing squeezing

r c

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

slide-10
SLIDE 10

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

slide-11
SLIDE 11

What is Keccak

Sponge tuning: capacity ⇒ security level

[eBASH, hydra6, http://bench.cr.yp.to/]

Capacity [bit] Security level [bit] Cost [cy/B] 128 256 512 1024 1600 64 128 256 160 80 768 512 5 cy/B 10 cy/B 15 cy/B 20 cy/B

Faster Slower

224 448 384

8 / 39

slide-12
SLIDE 12

What is Keccak

Sponge tuning: capacity ⇒ security level

[eBASH, hydra6, http://bench.cr.yp.to/]

Capacity [bit] Security level [bit] Cost [cy/B] 128 256 512 1024 1600 64 128 256 160 80 768 512 Script-kiddie Long-term Overkill

Light- weight

Overkill / Insane 5 cy/B 10 cy/B 15 cy/B 20 cy/B

Faster Slower

224 448 384

8 / 39

slide-13
SLIDE 13

What is Keccak

Sponge tuning: capacity ⇒ security level

[eBASH, hydra6, http://bench.cr.yp.to/]

Capacity [bit] Security level [bit] Cost [cy/B] 128 256 512 1024 1600 64 128 256 160 80 768

Keccak [b=1600]

512 Script-kiddie Long-term Overkill

Light- weight

Overkill / Insane 5 cy/B 10 cy/B 15 cy/B 20 cy/B

Faster Slower

8 cy/B 224 448 384

8 / 39

slide-14
SLIDE 14

What is Keccak

Sponge tuning: capacity ⇒ security level

[eBASH, hydra6, http://bench.cr.yp.to/]

Capacity [bit] Security level [bit] Cost [cy/B] 128 256 512 1024 1600 64 128 256 160 80 768 sha-256

Keccak [b=1600]

512 Script-kiddie Long-term Overkill

Light- weight

Overkill / Insane sha-512 5 cy/B 10 cy/B 15 cy/B 20 cy/B

L L

sha-1 md5

Faster Slower

8 cy/B 224 448 384

8 / 39

slide-15
SLIDE 15

What is Keccak

Keccak tuning: number of rounds ⇒ safety margin

[eBASH, hydra6, http://bench.cr.yp.to/]

6 6 Nr of rounds Cost [cy/B] 5 cy/B 10 cy/B 15 cy/B 20 cy/B

Faster Slower

2 8 12 14 18 22 24 4 10 16 20 L md5 L sha-1 sha-512 sha-256

9 / 39

slide-16
SLIDE 16

What is Keccak

Keccak tuning: number of rounds ⇒ safety margin

[eBASH, hydra6, http://bench.cr.yp.to/]

6 6 Nr of rounds Cost [cy/B]

Keccak[c=256]

5 cy/B 10 cy/B 15 cy/B 20 cy/B

Faster Slower

8 cy/B 2 8 12 14 18 22 24 4 10 16 20 L md5 L sha-1 sha-512 sha-256

9 / 39

slide-17
SLIDE 17

What is Keccak

Keccak tuning: number of rounds ⇒ safety margin

[eBASH, hydra6, http://bench.cr.yp.to/]

Nr of rounds Cost [cy/B]

Keccak[c=256]

Practical attack Twilight zone

5 cy/B 10 cy/B 15 cy/B 20 cy/B

Faster Slower

8 cy/B 2 6 8 12 14 18 22 24 4 10 16 20 L md5 L sha-1 sha-512 sha-256 11 No attack

9 / 39

slide-18
SLIDE 18

What is Keccak

Keccak tuning: number of rounds ⇒ safety margin

[eBASH, hydra6, http://bench.cr.yp.to/]

Nr of rounds Cost [cy/B]

Keccak[c=256]

Practical attack Twilight zone

5 cy/B 10 cy/B 15 cy/B 20 cy/B

Faster Slower

8 cy/B 2 6 8 12 14 18 22 24 4 10 16 20

Keyak

L md5 L sha-1 sha-512 sha-256 4 cy/B 11 (single-pass authenticated encryption) No attack

9 / 39

slide-19
SLIDE 19

NIST plans

Outline

1

What is Keccak

2

NIST plans

3

The CAESAR competition

4

Keccak code package

10 / 39

slide-20
SLIDE 20

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 SHA-3 contest

goal: FIPS standard scope: stand-ins for all 4 SHA-2 method: public competition like AES response: 64 submissions

Summer 2008: start with 51 proposals October 2012: Keccak = SHA-3

ARIRANG AURORA BLAKE Blender BOOLE CHI CRUNCH CubeHash DCH EDON-R EnRUPT ESSENCE FSB Fugue Grøstl JH LANE Lesamnta Luffa MCSSHA3 MD6 Sgàil Shabal SHAMATA SIMD Skein StreamHash SWIFFTX T angle TIB3 T wister Vortex WaMM HASH 2X Maraca Ponic ZK-Crypt Waterfall Sarmal BMW SANDstorm Spectral Hash DynamicSHA NKS2D Abacus MeshHash DynamicSHA 2 Khichidi-1 ECOH LUX NaSHA Hamsi Keccak SHAvite-3 ECHO Cheetah

2005 2006 2007 2008 2009 2010 2011 2012 16/06/2009

[courtesy of C. De Cannière]

11 / 39

slide-21
SLIDE 21

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

slide-22
SLIDE 22

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

slide-23
SLIDE 23

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) = ⌊XOF(M)⌋256

14 / 39

slide-24
SLIDE 24

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

  • utput of XOF(M||0) and XOF(M||1) are independent

…unless XOF has a cryptographic weakness

Generalization to 2n functions with D an n-bit diversifier XOFD(M) = XOF(M||D) Variable-length diversifiers: suffix-free set of strings

15 / 39

slide-25
SLIDE 25

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](M||11||11) ⌊Keccak[c = 448](M||01)⌋224 Keccak[c = 512](M||11||11) ⌊Keccak[c = 512](M||01)⌋256 ⌊Keccak[c = 768](M||01)⌋384 ⌊Keccak[c = 1024](M||01)⌋512 SHAKE128 and SHAKE256 SHA3-224 to SHA3-512

16 / 39

slide-26
SLIDE 26

NIST plans

Tree hashing

Features: hash recomputation when modifying small part of file peer-to-peer applications: Gnutella, BitTorrent etc. performance: function instruction cycles/byte Keccak[c = 256] × 1 x86_64 7.70 Keccak[c = 256] × 2 AVX2 (128-bit only) 5.30 Keccak[c = 256] × 4 AVX2 2.87

CPU: Haswell with AVX2 256-bit SIMD

17 / 39

slide-27
SLIDE 27

NIST plans

MAC (and key derivation)

f f Key … Padded message f f f MAC

KMAC[K](M) = H(K||M) XMAC[K](M, λ) = XOF(K||M||λ)

λ length of the output

XKDF: key derivation function based on XOF (XMAC) HMAC [FIPS 198] no longer needed!

18 / 39

slide-28
SLIDE 28

NIST plans

Stream encryption

f f Key IV f Key stream

Encryption: add key stream to plaintext bit per bit

19 / 39

slide-29
SLIDE 29

NIST plans

Single-pass authenticated encryption

f f Key … Padded message IV f Key stream f f MAC

Encryption with MAC for free! Secure messaging (SSL/TLS, SSH, IPSEC …) Same primitive Keccak-f but in a (slightly) different mode

Duplex construction also for random generation with reseeding (/dev/urandom …)

20 / 39

slide-30
SLIDE 30

The CAESAR competition

Outline

1

What is Keccak

2

NIST plans

3

The CAESAR competition

4

Keccak code package

21 / 39

slide-31
SLIDE 31

The CAESAR competition

The CAESAR competition

“horum omnium fortissimi sunt Belgae”

Public competition for authenticated ciphers

consortium from academia and industry aims for portfolio instead of single winner

Timeline

submission deadline: March 15, 2014 57 submissions

many block cipher modes using AES about a dozen sponge-based, including our submissions: Ketje and Keyak

3 rounds foreseen target end date: December 2017

http://competitions.cr.yp.to/caesar-submissions.html

22 / 39

slide-32
SLIDE 32

The CAESAR competition

Keyak in a nutshell

Keccak-p[1600, nr = 12] or Keccak-p[800, nr = 12], c = 256 sequential and parallel instances

A(1) 1 B(1) C(1) T(1)

A(1) contains the key and must be unique, e.g., A(1) contains a session key used only once; A(1) contains a key and a nonce. In general: A(1) = key||nonce||associated data.

23 / 39

slide-33
SLIDE 33

The CAESAR competition

Keyak in a nutshell

Keccak-p[1600, nr = 12] or Keccak-p[800, nr = 12], c = 256 sequential and parallel instances

A(1) 1 B(1) C(1) T(1)

A(1) contains the key and must be unique, e.g., A(1) contains a session key used only once; A(1) contains a key and a nonce. In general: A(1) = key||nonce||associated data.

23 / 39

slide-34
SLIDE 34

The CAESAR competition

Keyak in a nutshell

Keccak-p[1600, nr = 12] or Keccak-p[800, nr = 12], c = 256 sequential and parallel instances

A(1) 1 B(1) C(1) T(1) A(2) B(2) C(2) T(2)

A(1) contains the key and must be unique, e.g., A(1) contains a session key used only once; A(1) contains a key and a nonce. In general: A(1) = key||nonce||associated data.

23 / 39

slide-35
SLIDE 35

The CAESAR competition

Keyak in a nutshell

Keccak-p[1600, nr = 12] or Keccak-p[800, nr = 12], c = 256 sequential and parallel instances

A(1) 1 B(1) C(1) T(1) A(2) B(2) C(2) T(2) A(3) T(3)

A(1) contains the key and must be unique, e.g., A(1) contains a session key used only once; A(1) contains a key and a nonce. In general: A(1) = key||nonce||associated data.

23 / 39

slide-36
SLIDE 36

Keccak code package

Outline

1

What is Keccak

2

NIST plans

3

The CAESAR competition

4

Keccak code package

24 / 39

slide-37
SLIDE 37

Keccak code package

Where to find the latest Keccak implementations?

https://github.com/gvanas/KeccakCodePackage

25 / 39

slide-38
SLIDE 38

Keccak code package Motivation

Extending the scope of software implementations?

In the old package, there were implementations for hashing only implementations of Keccak-f[1600] only So what about extending this set to

  • ther applications

parallelized modes Ketje and Keyak Keccak-f[800/400/200], Keccak-p[1600, nr = 12], etc.

… and other permutations … ?

26 / 39

slide-39
SLIDE 39

Keccak code package Motivation

Extending the scope of software implementations?

In the old package, there were implementations for hashing only implementations of Keccak-f[1600] only So what about extending this set to

  • ther applications

parallelized modes Ketje and Keyak Keccak-f[800/400/200], Keccak-p[1600, nr = 12], etc.

… and other permutations … ?

26 / 39

slide-40
SLIDE 40

Keccak code package Motivation

A heterogenous set of software implementations

By Magalie L’Abbé (flickr.com)

There were implementations with different structures with/without flexible capacity with/without an input queue

27 / 39

slide-41
SLIDE 41

Keccak code package Inside the package

Goals of a layered approach

Keccak-f[200] Keccak-f[1600] Keccak-p[800, 12]

Primitive

Sponge Duplex

Construction

Hashing MAC PRNG

  • Auth. Enc.

Mode Generic focus on user

as easy to use as possible e.g., message queue, etc.

  • ne implementation

pointers and arithmetic

Specific focus on developer

limited scope to optimize bugs caught early

tailored implementations

permutation bulk data processing

28 / 39

slide-42
SLIDE 42

Keccak code package Inside the package

Goals of a layered approach

Keccak-f[200] Keccak-f[1600] Keccak-p[800, 12]

Primitive

Sponge Duplex

Construction

Hashing MAC PRNG

  • Auth. Enc.

Mode Generic focus on user

as easy to use as possible e.g., message queue, etc.

  • ne implementation

pointers and arithmetic

Specific focus on developer

limited scope to optimize bugs caught early

tailored implementations

permutation bulk data processing

28 / 39

slide-43
SLIDE 43

Keccak code package Inside the package

Goals of a layered approach

Keccak-f[200] Keccak-f[1600] Keccak-p[800, 12]

Primitive

Sponge Duplex

Construction

Hashing MAC PRNG

  • Auth. Enc.

Mode Generic focus on user

as easy to use as possible e.g., message queue, etc.

  • ne implementation

pointers and arithmetic

Specific focus on developer

limited scope to optimize bugs caught early

tailored implementations

permutation bulk data processing

28 / 39

slide-44
SLIDE 44

Keccak code package Inside the package

Goals of a layered approach

Keccak-f[200] Keccak-f[1600] Keccak-p[800, 12]

Primitive

Sponge Duplex

Construction

Hashing MAC PRNG

  • Auth. Enc.

Mode

SnP

Generic focus on user

as easy to use as possible e.g., message queue, etc.

  • ne implementation

pointers and arithmetic

Specific focus on developer

limited scope to optimize bugs caught early

tailored implementations

permutation bulk data processing

28 / 39

slide-45
SLIDE 45

Keccak code package Inside the package

SnP (= State and Permutation)

initialize the state to zero apply the permutation f XOR/overwrite bytes into the state extract bytes from the state

and optionally XOR them

29 / 39

slide-46
SLIDE 46

Keccak code package Inside the package

SnP FBWL (= Full Blocks Whole Lane)

Specialized repeated application of some operations (optional) SnP_FBWL_Absorb/Squeeze/Wrap/Unwrap

30 / 39

slide-47
SLIDE 47

Keccak code package Inside the package

Parallel processing

2×Keccak-f[1600] 4×Keccak-p[1600, 12] 8×Keccak-f[1600]

Primitive

Parallel Sponge Parallel Duplex

Construction

Parallelized Hashing Sea and Ocean Keyak

Mode Some modes exploit parallelism To exploit this, we need:

sponge functions and duplex objects running in parallel permutation applied on several states in parallel

31 / 39

slide-48
SLIDE 48

Keccak code package Inside the package

Parallel processing

2×Keccak-f[1600] 4×Keccak-p[1600, 12] 8×Keccak-f[1600]

Primitive

Parallel Sponge Parallel Duplex

Construction

Parallelized Hashing Sea and Ocean Keyak

Mode

PlSnP

Some modes exploit parallelism To exploit this, we need:

sponge functions and duplex objects running in parallel permutation applied on several states in parallel

31 / 39

slide-49
SLIDE 49

Keccak code package Inside the package

PlSnP (= Parallel States and Permutations)

f f f

f f f

f f f

SnP on individual instances Some SnP functions parallelized

Parallel application of f

PlSnP FBWL for repeated operations

32 / 39

slide-50
SLIDE 50

Keccak code package Inside the package

PlSnP (= Parallel States and Permutations)

f f f

f f f

f f f

SnP on individual instances Some SnP functions parallelized

Parallel application of f

PlSnP FBWL for repeated operations

32 / 39

slide-51
SLIDE 51

Keccak code package Inside the package

PlSnP (= Parallel States and Permutations)

f f f

f f f

f f f

SnP on individual instances Some SnP functions parallelized

Parallel application of f

PlSnP FBWL for repeated operations

32 / 39

slide-52
SLIDE 52

Keccak code package Inside the package

PlSnP FBWL: parameterized block layout

Interleaving (blocks of r bits) in 4 lines

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 … … … …

33 / 39

slide-53
SLIDE 53

Keccak code package Inside the package

PlSnP FBWL: parameterized block layout

Interleaving (blocks of r bits) in 4 lines

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 … … … …

Assuming 2-way parallelism: → 4 blocks ↓ 1 block

33 / 39

slide-54
SLIDE 54

Keccak code package Inside the package

PlSnP FBWL: parameterized block layout

Segmenting in 4 blocks of r bits each

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 … … … …

33 / 39

slide-55
SLIDE 55

Keccak code package Inside the package

PlSnP FBWL: parameterized block layout

Segmenting in 4 blocks of r bits each

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 … … … …

Assuming 2-way parallelism: → 1 block ↓ 4 blocks (2 consecutive lines)

33 / 39

slide-56
SLIDE 56

Keccak code package Inside the package

PlSnP FBWL: parameterized block layout

Segmenting in 4 blocks of r bits each

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 … … … …

Assuming 2-way parallelism: → 1 block ↓ 8 blocks (even/odd lines)

33 / 39

slide-57
SLIDE 57

Keccak code package Current status

Constructions and modes

Keccak-f[200] Keccak-f[1600] Keccak-p[800, 12]

Primitive

Sponge Duplex

Construction

Hashing MAC PRNG

  • Auth. Enc.

Mode

Currently in the KCP SHA-3 hashing and SHAKE XOFs River and Lake Keyak Ketje (∗) Anything using sponge or duplex directly Nice to have Pseudo-random bit sequence generator

34 / 39

slide-58
SLIDE 58

Keccak code package Current status

Primitives

Keccak-f[200] Keccak-f[1600] Keccak-p[800, 12]

Primitive

Sponge Duplex

Construction

Hashing MAC PRNG

  • Auth. Enc.

Mode

Keccak-f[200 to 1600], Keccak-p[200 to 1600, nr] Reference implementations Optimized impl. in C of Keccak-f[1600] and -p[1600, nr = 12] Optimized impl. in C of Keccak-f[800] and -p[800, nr = 12] Assembly optimized for

x86_64 (Keccak-f[1600] and Keccak-p[1600, nr = 12] only) ARMv6M, ARMv7M, ARMv7A, NEON AVR8

35 / 39

slide-59
SLIDE 59

Keccak code package Current status

Primitives

Keccak-f[200] Keccak-f[1600] Keccak-p[800, 12]

Primitive

Sponge Duplex

Construction

Hashing MAC PRNG

  • Auth. Enc.

Mode

On the to-do list Some implementations still to be migrated Optimized in C for 400-bit width and smaller ARMv8, AVX-512, (your favorite platform here)

35 / 39

slide-60
SLIDE 60

Keccak code package Current status

Parallel constructions and modes

2×Keccak-f[1600] 4×Keccak-p[1600, 12] 8×Keccak-f[1600]

Primitive

Parallel Sponge Parallel Duplex

Construction

Parallelized Hashing Sea and Ocean Keyak

Mode

Currently in the KCP Sea and Ocean Keyak Anything using parallel duplex objects directly On the to-do list Parallel sponge functions Parallelized hashing

36 / 39

slide-61
SLIDE 61

Keccak code package Current status

Parallelized primitives

2×Keccak-f[1600] 4×Keccak-p[1600, 12] 8×Keccak-f[1600]

Primitive

Parallel Sponge Parallel Duplex

Construction

Parallelized Hashing Sea and Ocean Keyak

Mode

Currently in the KCP Serial fallback to SnP 2 × Keccak-f[1600]/p[1600, nr = 12] on ARMv7M+NEON 2 × Keccak-f[1600]/p[1600, nr = 12] using SSE, XOP or AVX Many things on the to-do list 4 × Keccak-f[1600]/p[1600, nr = 12] using AVX2 or AVX512 (…WIP…) 8 × Keccak-f[1600]/p[1600, nr = 12] using AVX512 ARMv8 NEON, (your favorite SIMD instruction set here)

37 / 39

slide-62
SLIDE 62

Keccak code package Current status

If you want to help…

We welcome comments and contributions on: better/more optimized implementations stucture of the package

… a library … ?

By @Doug88888 (flickr.com)

keccak@noekeon.org https://github.com/gvanas/KeccakCodePackage

38 / 39

slide-63
SLIDE 63

Questions

Questions?

More information on http://sponge.noekeon.org/ http://keccak.noekeon.org/

39 / 39