Putting wings on SPHINCS
PQCRYPTO Conference
Stefan K¨
- lbl
April 10th, 2018
Technical University of Denmark, Cybercrypt
Putting wings on SPHINCS PQCRYPTO Conference Stefan K olbl April - - PowerPoint PPT Presentation
Putting wings on SPHINCS PQCRYPTO Conference Stefan K olbl April 10th, 2018 Technical University of Denmark, Cybercrypt SPHINCS SPHINCS Hash-based signature scheme Stateless 128-bit post-quantum security Sizes: Public
Stefan K¨
April 10th, 2018
Technical University of Denmark, Cybercrypt
SPHINCS
https://sphincs.cr.yp.to/
1
1
Main components:
2
Message . . . 32x
HORST
Level 1 Level 2 Level 12
3
pk . . . pk pk . . . pk pk OTSsign OTSsign . . . 4
What is computed?
f f f f
5
For one signature
{0, 1}512 {0, 1}256 {0, 1}256 {0, 1}256 H F
6
Which hash function could we use?
7
SHA-2 (FIPS PUB 180-4)
IV f M1 f M2 f Mn h1 hn+1
8
SHA3-256 (FIPS PUB 202)
r c π M0 π M1 π M2 π h0 π h1 h
9
Other Keccak variants:
(Kangaroo121).
rounds2.
0see https://eprint.iacr.org/2016/770 0Linear Structures: Applications to Cryptanalysis of Round-Reduced Keccak, Asiacrypt 2016
10
ChaCha12
11
Haraka: A short-input hash function3
x π H(x)
trunc
3https://eprint.iacr.org/2016/098
12
Simpira4
x π H(x)
trunc
4https://eprint.iacr.org/2016/122
13
SPHINCS not well suited for small devices5
Focus on highend platforms:
5see https://eprint.iacr.org/2015/1042
14
How to get a fast implementation?
AVX-512)
SHA-3)
15
Vector Instructions X0 ⊕ Y0 = Z0 X1 ⊕ Y1 = Z1 X2 ⊕ Y2 = Z2 X3 ⊕ Y3 = Z3 X4 ⊕ Y4 = Z4 X5 ⊕ Y5 = Z5 X6 ⊕ Y6 = Z6 X7 ⊕ Y7 = Z7
16
Pipelining
Cycles aesenc aesenc aesenc Laesenc 17
Pipelining
Cycles aesenc aesenc aesenc aesenc aesenc aesenc T −1
aesenc
17
Pipelining
Cycles aesenc aesenc aesenc aesenc aesenc aesenc T −1
aesenc
aesenc aesenc aesenc 17
Performance varies a lot depending on the platform Platform Instruction Latency
Skylake vectorized XOR 1 0.33 Ryzen vectorized XOR 1 0.5 Cortex A57 vectorized XOR 3 2
18
How to implement those functions efficiently?
19
How to implement those functions efficiently?
19
How to implement those functions efficiently?
19
How to implement those functions efficiently?
19
How to implement those functions efficiently?
19
How to implement those functions efficiently?
19
19
Intel Skylake
20
Intel Skylake
Signing (million cycles) Design Skylake ChaCha12 Haraka Keccak SHA-256 Simpira
20
Intel Skylake
Signing (million cycles) Design Skylake ChaCha12 Haraka Keccak SHA-256 142.06 Simpira
20
Intel Skylake
Signing (million cycles) Design Skylake ChaCha12 Haraka Keccak 108.62 SHA-256 142.06 Simpira
20
Intel Skylake
Signing (million cycles) Design Skylake ChaCha12 43.49 Haraka Keccak 108.62 SHA-256 142.06 Simpira
20
Intel Skylake
Signing (million cycles) Design Skylake ChaCha12 43.49 Haraka Keccak 108.62 SHA-256 142.06 Simpira 28.40
20
Intel Skylake
Signing (million cycles) Design Skylake ChaCha12 43.49 Haraka 20.78 Keccak 108.62 SHA-256 142.06 Simpira 28.40
20
AMD Ryzen
21
AMD Ryzen
Signing (million cycles) Design Ryzen ChaCha12 Haraka Keccak SHA-256 Simpira
21
AMD Ryzen
Signing (million cycles) Design Ryzen ChaCha12 Haraka Keccak 189.98 SHA-256 Simpira
21
AMD Ryzen
Signing (million cycles) Design Ryzen ChaCha12 63.42 Haraka Keccak 189.98 SHA-256 Simpira
21
AMD Ryzen
Signing (million cycles) Design Ryzen ChaCha12 63.42 Haraka Keccak 189.98 SHA-256 53.33 Simpira
21
AMD Ryzen
Signing (million cycles) Design Ryzen ChaCha12 63.42 Haraka Keccak 189.98 SHA-256 53.33 Simpira 20.43
21
AMD Ryzen
Signing (million cycles) Design Ryzen ChaCha12 63.42 Haraka 15.54 Keccak 189.98 SHA-256 53.33 Simpira 20.43
21
ARM Cortex A57
22
ARM Cortex A57
Signing (million cycles) Design Cortex A57 ChaCha12 Haraka Keccak SHA-256 Simpira
22
ARM Cortex A57
Signing (million cycles) Design Cortex A57 ChaCha12 Haraka Keccak 376.90 SHA-256 Simpira
22
ARM Cortex A57
Signing (million cycles) Design Cortex A57 ChaCha12 193.51 Haraka Keccak 376.90 SHA-256 Simpira
22
ARM Cortex A57
Signing (million cycles) Design Cortex A57 ChaCha12 193.51 Haraka Keccak 376.90 SHA-256 92.08 Simpira
22
ARM Cortex A57
Signing (million cycles) Design Cortex A57 ChaCha12 193.51 Haraka Keccak 376.90 SHA-256 92.08 Simpira 63.48
22
ARM Cortex A57
Signing (million cycles) Design Cortex A57 ChaCha12 193.51 Haraka 47.10 Keccak 376.90 SHA-256 92.08 Simpira 63.48
22
Hash Performance for F
2 4 6 8 10 12 14 16 18 20 Skylake Ryzen Cortex-A57 Cycles per Byte ChaCha Haraka Keccak SHA256 Simpira 1.71 2.73 7.3 0.63 0.39 1.08 4.11 6.94 16.71 5.52 2.44 3.91 0.94 0.49 1.85
23
Hash Performance for H
1 2 3 4 5 6 7 8 9 10 11 Skylake Ryzen Cortex-A57 Cycles per Byte ChaCha Haraka Keccak SHA256 Simpira 1.71 2.73 7.15 0.72 0.48 1.44 2.20 3.55 8.68 2.58 1.13 1.82 0.94 0.49 1.51
24
Two variants of SPHINCS in NIST PQ competition:
25
Summary
Ryzen. Future Platforms:
26
26