Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization...

35
Gravity-SPHINCS First PQC Standardization Conference Jean-Philippe Aumasson 1 , Guillaume Endignoux 2 Wednesday 11 th April, 2018 1 Kudelski Security 2 Work done while at Kudelski Security and EPFL 1

Transcript of Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization...

Page 1: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Gravity-SPHINCS

First PQC Standardization Conference

Jean-Philippe Aumasson1, Guillaume Endignoux2

Wednesday 11th April, 2018

1Kudelski Security

2Work done while at Kudelski Security and EPFL

1

Page 2: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Introduction: SPHINCS

Page 3: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Hash-based signatures

SPHINCS = stateless many-time signatures (up to 250

messages).

• Hyper-tree of WOTS signatures ≈ certificate chain

• Hyper-tree of height H = 60, divided in 12 layers of{Merkle tree + WOTS}

Sign message M:

• Select index 0 ≤ i < 260

• Sign M with i-th HORST instance

• Chain of WOTS signatures.

Merkle

. . .

. . .

Merkle

. . .

. . .

HORST

WOTS

Hyper-tree

Figure 1: SPHINCS.

2

Page 4: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Hash-based signatures

Hash-based signatures in a nutshell:

• Post-quantum security well understood ⇒ Grover’s algorithm: preimage-searchin O(2n/2) instead of O(2n) for n-bit hash function.

• Signature size is quite large: 41 KB for SPHINCS (stateless), 8 KB for XMSS(stateful).

3

Page 5: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Gravity-SPHINCS

Page 6: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Gravity-SPHINCS

We propose improvements to reduce signature size of SPHINCS:

• PRNG to obtain a random subset (PORS)

• Octopus: optimized multi-authentication in Merkle trees

• Secret key caching

• Non-masked hashing

4

Page 7: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Implementation

Open-source implementations:

• Reference C implementation in the submission

• Optimized implementation for Intel (AES-NI + SSE/AVX)https://github.com/gravity-postquantum/gravity-sphincs

• Rust implementation with focus on clarity and testinghttps://github.com/gendx/gravity-rs

5

Page 8: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Benchmarks

Some benchmarks on our optimized implementation1

Instance S M L

Key generation 0.4 s 12 s 6 sSign 5 ms 7 ms 8 msVerify 0.04 ms 0.12 ms 0.16 ms

Signature size2 (bytes) ≤ 12640 ≤ 28929 ≤ 35168Capacity 210 250 264

1Intel Core i5-6360U CPU @ 2.00 GHz2Size varies depending on the message and key

6

Page 9: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

PRNG to obtain a random subset

Page 10: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

From HORS to PORS

Sign a message M with HORS:

• Hash the message H(M) = 28c5c...• Split the hash to obtain indices {2, 8, c , 5, c , . . .} and reveal values S2,S8, . . .

M H

i SPHINCS leaf

2 8 c 5 c

S0

H

P0

S1

H

P1

S2

H

P2

S3

H

P3

S4

H

P4

S5

H

P5

S6

H

P6

S7

H

P7

S8

H

P8

S9

H

P9

S10

H

P10

S11

H

P11

S12

H

P12

S13

H

P13

S14

H

P14

S15

H

P15

Secret key

Public key

7

Page 11: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

From HORS to PORS

Sign a message M with HORS:

• Hash the message H(M) = 28c5c...• Split the hash to obtain indices {2, 8, c , 5, c , . . .} and reveal values S2,S8, . . .

M H

i SPHINCS leaf

2 8 c 5 c

Problems:

• Some indices may be the same ⇒ fewer values revealed ⇒ lower security...• Attacker is free to choose the hyper-tree index i ⇒ larger attack surface.

7

Page 12: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

From HORS to PORS

PORS = PRNG to obtain a random subset.

• Seed a PRNG from the message.

• Generate the hyper-tree index.

• Ignore duplicated indices.

M G i

SPHINCS leaf

2 8 c 5 c e

Significant security improvement for the same parameters!

8

Page 13: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

From HORS to PORS

Advantages of PORS:

• Significant security improvement for the same parameters!

• Smaller hyper-tree than SPHINCS for same security level ⇒ Signatures are 4616bytes smaller.

• Performance impact of PRNG vs. hash function is negligible ⇒ For SPHINCS,generate only 32 distinct values.

9

Page 14: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus: multi-authentication inMerkle trees

Page 15: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus

Merkle tree of height h = compact way to authenticate any of 2h values.

• Small public value = root

• Small proofs of membership = h authentication nodes

10

Page 16: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus

How to authenticate k values?

• Use k independent proofs = kh nodes.

• This is suboptimal! Many redundant values...

11

Page 17: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus

How to authenticate k values?

• Optimal solution: compute smallest set of authentication nodes.

12

Page 18: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus

How many bytes does it save?

• It depends on the shape of the “octopus”!

• Examples for h = 4 and k = 4: between 2 and 8 authentication nodes.

13

Page 19: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus

TheoremGiven a Merkle tree of height h and k leaves to authenticate, the minimal number ofauthentication nodes n verifies:

h − dlog2 ke ≤ n ≤ k(h − blog2 kc)

⇒ For k > 1, this is always better than the kh nodes for k independent proofs!

14

Page 20: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus

In the case of SPHINCS, k = 32 uniformly distributed leaves, tree of height h = 16.

In our paper3, recurrence relation to compute average number of authentication nodes.

Method Number of auth. nodesIndependent proofs 512SPHINCS4 384Octopus (worst case) 352Octopus (average) 324

⇒ Octopus authentication saves 1909 bytes for SPHINCS signatures on average.3https://eprint.iacr.org/2017/933, to appear at CT-RSA4SPHINCS has a basic optimization to avoid redundant nodes close to the root.

15

Page 21: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus algorithm

• Bottom-up algorithm to compute the optimal authentication nodes.

• Formal specification in the submission, let’s see an example.

16

Page 22: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus algorithm

• Bottom-up algorithm to compute the optimal authentication nodes.

• Formal specification in the submission, let’s see an example.

16

Page 23: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus algorithm

• Bottom-up algorithm to compute the optimal authentication nodes.

• Formal specification in the submission, let’s see an example.

16

Page 24: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus algorithm

• Bottom-up algorithm to compute the optimal authentication nodes.

• Formal specification in the submission, let’s see an example.

16

Page 25: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus algorithm

• Bottom-up algorithm to compute the optimal authentication nodes.

• Formal specification in the submission, let’s see an example.

16

Page 26: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus algorithm

• Bottom-up algorithm to compute the optimal authentication nodes.

• Formal specification in the submission, let’s see an example.

16

Page 27: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus algorithm

• Bottom-up algorithm to compute the optimal authentication nodes.

• Formal specification in the submission, let’s see an example.

16

Page 28: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Octopus algorithm

• Bottom-up algorithm to compute the optimal authentication nodes.

• Formal specification in the submission, let’s see an example.

16

Page 29: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Other optimizations

Page 30: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Secret key caching

WOTS signatures to “connect” Merkle treesare large (≈ 2144 bytes per WOTS).

Figure 2: SPHINCS.

17

Page 31: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Secret key caching

• We use a larger rootMerkle tree, and cachemore values in privatekey.

• Removing 3 levels =6432 bytes saved!

• This cache can beregenerated from a smallprivate seed (32 bytes).

cached key

(re)computedat signing

time

computedat key

generationtime

Figure 3: Secret key caching.

18

Page 32: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Non-masked hashing

• In SPHINCS, Merkle trees have a XOR-and-hash construction, to use a2nd-preimage-resistant hash function H.• Various masks, depending on location in hyper-tree; all stored in the public key.• Post-quantum preimage search is faster with Grover’s algorithm ⇒ We remove the

masks and rely on collision-resistant H.

H

mi

(a) Masked hashing in SPHINCS.

H

(b) Mask off.

19

Page 33: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Conclusion

Page 34: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Take-aways

Hash-based signatures:

• well-understood security,

• fast signing, very fast verification.

What’s new in Gravity-SPHINCS?

• octopus + PORS = great improvement over HORST,

• secret-key caching = trade-off key generation time / signature size for a “powerful”signer,

• mask-less hashing = simpler scheme.

20

Page 35: Gravity-SPHINCS - First PQC Standardization Conference · Gravity-SPHINCS First PQC Standardization Conference Jean-PhilippeAumasson1,GuillaumeEndignoux2 Wednesday11th April,2018

Conclusion

Thank you for your attention!

21