Simplified security arguments for hash-based signatures
Andreas Hülsing Eindhoven University of Technology
for hash-based signatures Andreas Hlsing Eindhoven University of - - PowerPoint PPT Presentation
Simplified security arguments for hash-based signatures Andreas Hlsing Eindhoven University of Technology The quantum threat Shors algorithm breaks RSA, (EC)DSA, (EC)DH, Grovers algorithm asymptotically reduces complexity of
Andreas Hülsing Eindhoven University of Technology
(EC)DSA, (EC)DH,…
reduces complexity of brute-force search attacks by a square-root factor.
18.06.2019 https://huelsing.net 2
Euro project on quantum technologies
China
bill on spending $1.275 billion US dollar on quantum computing research
Alibaba, and others run their
18.06.2019 https://huelsing.net 3
18.06.2019 https://huelsing.net 4
Develop systems Analyze security Implement systems Analyze implementation security Select best systems and standardize them Integrate systems into products & protocols Role out secure products
18.06.2019 5 https://huelsing.net
18.06.2019 https://huelsing.net 6
secure update channel!
18.06.2019 https://huelsing.net 7
[Lam79,Mer89]
No new hardness assumptions* Provably (post-quantum) secure if (post-quantum) secure hash function is used Basic concept extremely easy Stateful
18.06.2019 https://huelsing.net 8
* We only assume hash functions do not show non-random behaviour.
18.06.2019 https://huelsing.net 9
Message M = b1,…,bm, OWF H = n bit SK PK Sig
18.06.2019
sk1,0 sk1,1 skm,0 skm,1 pk1,0 pk1,1 pkm,0 pkm,1
H H H H H H
sk1,b1 skm,bm * Mux b1 Mux b2 Mux bm
https://huelsing.net 10
18.06.2019
OTS
OTS OTS OTS OTS OTS OTS OTS H H H H H H H H H H H H H H H PK
SIG = (i=2, , , , , )
OTS
SK
https://huelsing.net 11
18.06.2019 https://huelsing.net 12
Verification:
We can do better!
SIG = (i=2, , , , , )
18.06.2019 https://huelsing.net 13
Verification:
Steps 1 + 2 together verify
SIG = (i=2, , , , , )
18.06.2019 https://huelsing.net 14
Hash function ℎ ∶ {0,1}𝑜→ {0,1}𝑜 Parameter 𝑥 Chain: 𝑑𝑗 𝑦 = ℎ 𝑑𝑗−1 𝑦 = ℎ ∘ ℎ ∘ ⋯ ∘ ℎ(𝑦)
c0(x) = x 𝑑1(𝑦) = ℎ(𝑦) 𝒅𝒙−𝟐(𝑦)
i-times
18.06.2019 https://huelsing.net 15
Winternitz parameter w (usually a power of 2), security parameter n, message length m, hash function ℎ Key Generation: Compute 𝑚, sample ℎ𝑙
c0(skl
l ) = skl l
c1(skl
l )
pkl = cw-1(skl
l )
c0(sk1) = sk1 c1(sk1) pk1 = cw-1(sk1)
18.06.2019 https://huelsing.net 16
M b1 b2 b3 b4
… … … … … … …
bm‘
bm‘+1 bm‘+2
… … bl C c0(skl
l ) = skl l
pkl = cw-1(skl
l )
c0(sk1) = sk1 pk1 = cw-1(sk1) σ1=cb1(sk1) σl =cbl (skl )
Signature: σ = (σ1, …, σl )
18.06.2019 https://huelsing.net 17
b1 b2 b3 b4
… … … … … … …
bm‘
bm‘+1 bl 1+2
… … bl pkl pk1
Signature: σ = (σ1, …, σl )
σ1 σl 𝒅𝟐 (σ1) 𝒅𝟑(σ1) 𝒅𝟒(σ1) 𝒅𝒙−𝟐−𝒄𝟐 (σ1) 𝒅𝒙−𝟐−𝒄𝒎 (σl )
=? =?
Verifier knows: M, w
18.06.2019 https://huelsing.net 18
18.06.2019 https://huelsing.net 19
Uses multiple layers of trees to reduce key generation time
(= Building one tree on each layer)
Θ 2ℎ → Θ 𝑒2ℎ/𝑒
Θ ℎ/2 → Θ ℎ/2𝑒
size by d-1 one-time signatures
18.06.2019 https://huelsing.net 20
Joint work with Daniel J. Bernstein, Daira Hopwood, Tanja Lange, Ruben Niederhagen, Louiza Papachristodoulou, Michael Schneider, Peter Schwabe, and Zooko Wilcox-O’Hearn
21.06.2019 https://huelsing.net 21
[NY89,Gol87,Gol04]
Goldreich’s approach [Gol04]: Security parameter 𝜇 = 128 Use binary tree as in Merkle, but...
collisions (e.g., height h = 2𝜇 = 256).
(= Hypertree with 𝑒 = ℎ),
generated pseudorandomly.
18-6-2019 PAGE 22 OTS OTS OTS OTS OTS OTS OTS OTS OTS
leaves to sign messages
18.06.2019 https://huelsing.net 23
18.06.2019 https://huelsing.net 24
Reductions should lead to
and allow for
18.06.2019 https://huelsing.net 25
be one-way
(w=16) leads > 260 ∙ 67 ≈ 266 images.
forgery (at least massively reduces complexity)
Θ
𝑟 2𝑜−66 conventional and Θ 𝑟2 2𝑜−66 quantum
18.06.2019 https://huelsing.net 26
and „input“ take
(uniqueness among key pairs)
18.06.2019 https://huelsing.net 27
and „input“ take
(uniqueness among key pairs)
18.06.2019 https://huelsing.net 28
𝐔𝐢 𝑄, 𝑈, 𝑁 → 𝑁𝐸 P: Public parameters (one per key pair) T: Tweak (one per hash call) M: Message MD: Message Digest
1. Prove security of SPHINCS(+), XMSS, LMS,..... using tweakable hash functions 2. Prove tweakable hash function security So what properties do we need?
18.06.2019 https://huelsing.net 29
queries (such that P and T are the same).
18.06.2019 https://huelsing.net 30
(https://ia.cr/2019/492)
resistance for distinct tweaks)
have a sibling (colliding value) under 𝐔𝐢(𝑄 , ⋅ , ⋅ ) for the length- preserving case (|M| = |MD|).
21.06.2019 https://huelsing.net 31
(assume adversary that always inverts one of the signature query elements)
b1 b2 b3 b4
… … … … … … …
bm‘
bm‘+1 bm‘+2
… … bl pkl = cw-1(skl
l )
pk1 = cw-1(sk1) σ1= target1 σl = target l
Signature: σ = (σ1, …, σl )
18.06.2019 https://huelsing.net 32
(https://ia.cr/2019/492)
resistance for distinct tweaks)
a sibling (colliding value) under 𝐔𝐢(𝑄 , ⋅ , ⋅ ) for the length- preserving case (|M| = |MD|).
make ≈ 266 guesses)
probability
21.06.2019 https://huelsing.net 33
(𝑦 is information-theoretically hidden in set of size ≥ 2)
21.06.2019 https://huelsing.net 34
18.06.2019 https://huelsing.net 35
More:
second-preimage finder (probability ≈ SPprob).
SPprob negligibly close to 1 ⇒ DSPR advantage can only be negligible.
21.06.2019 https://huelsing.net 36
SPHINCS+-robust (≈XMSS)
MD= SHA2(P || T || M ⊕ BM)
were random,
BM as above (modeling those SHA2 invocations as RO)
SPHINCS+- simple (≈ LMS)
QRO
has tight proof)
21.06.2019 https://huelsing.net 37
parts and simplify the analysis of new constructions
security properties of the used hash function
18.06.2019 https://huelsing.net 38
18.06.2019 PAGE 39
For references, literature & longer lectures see https://huelsing.net
https://huelsing.net
Joint work with Daniel J. Bernstein, Christoph Dobraunig, Maria Eichlseder, Scott Fluhrer, Stefan-Lukas Gazdag, Panos Kampanakis, Stefan Kölbl, Tanja Lange, Martin
Rijneveld, Peter Schwabe
18.06.2019 https://huelsing.net 40
41 https://huelsing.net 18.06.2019
42
... ... ... ... ...
https://sphincs.org
(and optionally non-deterministic randomness)
(idx||𝐒) = 𝑄𝑆𝐺(𝐓𝐋. prf, 𝑁) md = 𝐼msg (𝐒, PK, 𝑁)
𝐒 = 𝑄𝑆𝐺(𝐓𝐋. prf, OptRand, 𝑁) (md||idx) = 𝐼msg (𝐒, PK, 𝑁)
43 https://sphincs.org
Improves FORS security
44 https://sphincs.org
45 https://huelsing.net 18.06.2019
NEW! NEW! NEW!
46 https://huelsing.net 18.06.2019
18.06.2019 https://huelsing.net 47
Signing median cycles Verifying median cycles Signature bytes SPHINCS+
(n = 24, h = 55, d = 11, b = 8, k = 30, w = 16)
67 017 940 1 911 684 21 288 SPHINCS+
(n = 24, h = 51, d = 17, b = 9, k = 30, w = 16)
40 117 282 2 724 094 29 256 SPHINCS-128
(n=32, h=60, d=12, t=2^16, k=32, w = 16)
51 636 372 1 451 004 41 000
18.06.2019 https://huelsing.net 48