NORX: sponge-based parallel authenticated encryption


Jean-Philippe Aumasson (Kudelski Security, Switzerland)
Philipp Jovanovic (Passau University, Germany)
Samuel Neves (Coimbra University, Portugal)

Authenticated Encryption (AE)

Input: key K, nonce N, message M

Output: ciphertext C, authentication tag T

Confidentiality, integrity, authenticity of M

IPsec, SSH, TLS, etc.

Authenticated Encryption
with Additional Data (AEAD)

Input: key K, nonce N, message M, additional data H

Ouput: ciphertext C, authentication tag T

Integrity & authenticity covers H

E.g. for datagrams parts that need remain in clear

Combining encryption and MAC


Examples:

Dedicated AE(AD) methods

Block cipher modes
Authenticated ciphers:
Sponge functions...

Benefits of authenticated ciphers




Competition for

Authenticated

Encryption:

Security,

Applicability, and

Robustness

CAESAR

Identify a portfolio of authenticated ciphers that offer advantages over AES-GCM (the current de-facto standard) and are suitable for widespread adoption.

March 15 2014 – End of 2017

Led by DJB, with a committee of 22 cryptographers

Sponsored by but not organized/controlled by NIST

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

AES-GCM everywhere

The AEAD standard:

What's wrong with AES-GCM?

Unnecessarily complex

Fast only if AES/Galois field arithmetic HW support is available, like AES-NI

Without HW support: constant-time implementations even more complicated

Authentication key recovery if nonce is reused

CAESAR's 57 submissions

ACORN ++AE AEGIS AES-CMCC AES-COBRA
AES-COPA AES-CPFB AES-JAMBU AES-OTR AEZ
Artemia Ascon AVALANCHE Calico CBA
CBEAM CLOC Deoxys ELmD Enchilada
FASER HKC HS1-SIV ICEPOLE iFeed[AES]
Joltik Julius Ketje Keyak KIASU
LAC Marble McMambo Minalpher MORUS
NORX OCB OMD PAEQ PAES
PANDA Π-Cipher POET POLAWIS PRIMATEs
Prøst Raviyoyla Sablier SCREAM SHELL
SILC Silver STRIBOB Tiaoxin TriviA-ck
Wheesht YAES

CAESAR's 57 submissions

ACORN ++AE AEGIS AES-CMCC AES-COBRA
AES-COPA AES-CPFB AES-JAMBU AES-OTR AEZ
Artemia Ascon AVALANCHE Calico CBA
CBEAM CLOC Deoxys ELmD Enchilada
FASER HKC HS1-SIV ICEPOLE iFeed[AES]
Joltik Julius Ketje Keyak KIASU
LAC Marble McMambo Minalpher MORUS
NORX OCB OMD PAEQ PAES
PANDA Π-Cipher POET PRIMATEs
Prøst Raviyoyla Sablier SCREAM SHELL
SILC Silver STRIBOB Tiaoxin TriviA-ck
Wheesht YAES
Flaws: none 40, major 13, minor 6

NORX

NO(T A)RX

Design goals

High security

High speed (in SW and HW)

Simplicity (of specs and code)

Online / one-pass

Scalability (parallelism, unrolling)

Key agility (no "key schedule")

Side-channel leaks robustness (esp. timings)

Parameters and proposed instances

Word size Rounds
W ∈ {32, 64}1 ≤ R ≤ 63
  
Parallelism Tag size
0 ≤ D ≤ 255|A| ≤ 10W
NORX[W-R-D] Nonce (2W) Key (4W) Tag (4W)
NORX32-4-1 64 128 128
NORX32-6-1 64 128 128
NORX64-4-1 128 256 256
NORX64-6-1 128 256 256
NORX64-4-4 128 256 256

R=6: higher security margin
D=4: high throughput on parallel architectures

Permutation-based mode

NORX in Sequential Mode (D = 1)

"Monkey duplex" construction, from Keccak/SHA3

Process header, payload, and trailer data in one pass

Data expansion via multirate padding: 10*1

Permutation-based mode, parallel!

NORX in Parallel Mode (D = 2)

State

Initialisation

Initialisation

Load nonce, key and constants into S:

Parameter integration (v2):

s12 = s12 ^ W
s13 = s13 ^ R
s14 = s14 ^ D
  s15 = s15 ^ |A|

Apply R-round permutation: S = FR(S)

Absorb header and trailer

Absorb header and trailer

Integrate domain separation constant:

s15 = s15 ^ {0x01,0x04}

Apply round permutation: S = FR(S)

Absorb data:

Encrypt payload

Encrypt payload

Integrate domain separation constant:

s15 = s15 ^ 0x02

Apply round permutation: S = FR(S)

Absorb data:

Set new ciphertext block: c = (z0,...,z9)

Generate tag

Generate tag

Integrate domain separation constant:

s15 = s15 ^ 0x08

Apply round permutation twice:

S = FR(S)
S = FR(S)

Set tag: t = (s0,s1,s2,s3)

The permutation FR

FR = R iterations of the permutation F

F runs G on state's columns, then diagonals

The permutation G(a,b,c,d)

1. a = H(a,b) 5. a = H(a,b)
2. d = ROTR(a^d,R0) 6. d = ROTR(a^d,R2)
3. c = H(c,d) 7. c = H(c,d)
4. b = ROTR(b^c,R1) 8. b = ROTR(b^c,R3)
with:

Properties of FR/F/G

Inspired from BLAKE(2)/ChaCha

H is almost integer addition: + is replaced by ^ in

x+y = (x^y)+((x&y)<<1)

Only bit-wise ops, no carries; no S-boxes

Only constant-time operations

Hardware friendly: horizontal and vertical folding

Software friendly: direct use of SIMD instructions

Permutation's security

Differential characteristics bounds:

Initialisation has ≥ 8 rounds

Framework using constraint-solving tools: NODE

Sponge-like mode security

Improvement of the SpongeWrap bound:
from min{2c/2, 2k} to min{2b/2, 2c, 2k}
with a proof focused on NORX' mode
Application to NORX instances:

Performance

Software Speed (x86/amd64)

NORX64-4-1 (single-core)

Platform Implementation cpb MiBps
Ivy Bridge: i7 3667U @ 2.0GHz AVX 3.37 593
Haswell: i7 4770K @ 3.4GHz AVX2 2.51 1390
Note: The NORX software package includes benchmark utilities.

Software Speed (ARMv7, ARMv8-A)

NORX64-4-1 (single-core)

Platform Implementation cpb MiBps
BBB: Cortex-A8 @ 1.0GHz NEON 8.96 111
iPad Air: Apple-A7 @ 1.4GHz Ref 4.07 343
Note: The NORX software package includes benchmark utilities.

Software Speed (SUPERCOP)

NORX among the fastest CAESAR candidates

Fastest sponge-based scheme

Reference code has competitive speed, too

NORX vs. AES-GCM (x86/amd64)

AES-GCM "standard": OpenSSL 1.0.1j compiled with no-asm flag.
> openssl speed -evp aes-{128,256}-gcm

NORX vs. AES-GCM (ARMv7)

AES-GCM "standard": OpenSSL 1.0.1j compiled with no-asm flag.
> openssl speed -evp aes-{128,256}-gcm

Software-friendly?

At least developer-friendly (from norx.io)

Hardware Efficiency (ASIC)


Designed by students from ETH Zürich
(supervised by F. Gürkaynak)

180nm UMC @125MHz, area ≈ 59kGE

NORX64-4-1 throughput: ≈ 10Gbps

More NORXes

"Lightweight cryptography"!

"Internet of things"!

From 32 & 64 to 8 & 16 bits

TRUDEVICE 2015

Similar to original versions, adapted rotate counts

80- & 96-bit security, respectively, due to

ASIC area lower bounds: 1400 and 2800 GE

Conclusion

CAESAR

Crypto competition 2014–2017

About authenticated encryption

57 submissions received

2nd-round candidates announced tomorrow
(may be postponed)

http://competitions.cr.yp.to/
https://aezoo.compute.dtu.dk
http://www1.spms.ntu.edu.sg/~syllab/speed

PS: Another competition https://password-hashing.net

NORX

CAESAR candidate (one of the unbroken ones)

Innovative not-ARX core and parallelisable mode

Minimizes side-channel leaks (timing, padding)

No dependency on AES instructions/accelerators

Straightforward to implement, very fast in SW / HW


https://norx.io/

Code available in C, C++, Go, Python, Rust

No patents, free for everyone, ref code under CC0

Thank you!