1
IETF/IRTF CFRG Draft on XMSS
Hash-based Signatures
Fraunhofer Workshop Series 01 – Post-Quantum Cryptography in Practice Speaker: Dr. Bernhard Jungk
Hash-based Signatures IETF/IRTF CFRG Draft on XMSS Fraunhofer - - PowerPoint PPT Presentation
Hash-based Signatures IETF/IRTF CFRG Draft on XMSS Fraunhofer Workshop Series 01 Post-Quantum Cryptography in Practice Speaker: Dr. Bernhard Jungk 1 eXtended Merkle Signature Scheme 2 eXtended Merkle Signature Scheme Why should we look
1
IETF/IRTF CFRG Draft on XMSS
Fraunhofer Workshop Series 01 – Post-Quantum Cryptography in Practice Speaker: Dr. Bernhard Jungk
2
3
Why should we look into XMSS?
» Cryptographic hash functions are hard to invert, also for quantum computers » Merkle trees well studied since the 1980ies
(especially after SHA-3 competition)
4
Why should we look into XMSS?
5
Why should we look into XMSS?
6
Our Contribution
scenarios, cost reductions, side-channels, etc.
Cooperation:
7
8
Basic Principle – Public Key Generation
Chain Public Seed 1 2 3 Chain Chain Chain Private Key Public Key
9
Basic Principle – Signature Generation
Chain 1 2 3 Chain Chain Chain Private Key Signature Public Seed
10
Basic Principle – Signature Verification
Chain 1 2 3 Chain Chain Chain == Public Key? Output Public Seed
11
Basic Principle
Chain Seed 1 2 3 Chain Chain Chain
Problem: Signer reveals how to sign
the same key
12
Basic Principle
Chain Seed 0,0 0,1 0,2 0,3 Chain Chain Chain
Solution: Checksum
Chain Seed 1,0 1,1 1,2 1,3 Chain Chain Chain SK0 SK1
Message Checksum
13
Chaining Function for XMSS
PRF Seed PRF F Hash Address
‘Mask’
‘Key’ Input Output PRF – Pseudorandom function F – Keyed hash function
14
15
L-Tree – Public Key Generation
Compressed WOTS+ Public Key
PK0 PK1 PK2 PK3 PK4 PK6 PK7 PK8 PK5
16
XMSS Tree – Public Key Generation
L-Tree L-Tree L-Tree L-Tree L-Tree L-Tree L-Tree
XMSS Public Key
L-Tree
Tree height h=3 Up to 23=8 signature generations
17
The Complete Picture – Public Key Generation
SK0 SK1 SK2 SK3 SK4 SK5 SK6 SK7 SK8
XMSS Public Key
2h times
18
rand_hash
PRF Seed PRF H Hash Address
‘Mask0’
‘Key’ Left Output PRF
‘Mask1’
Right PRF – Pseudorandom function H – Keyed hash function
19
Signature Generation – Message 1
SK0 SK1 SK2 SK3 SK4 SK5 SK6 SK7 SK8
WOTS+ Signature Merkle Tree Authentication Path Node to be computed
20
Signature Generation – Message 1
SK0 SK1 SK2 SK3 SK4 SK5 SK6 SK7 SK8
21
Signature Generation – Message 2
SK9 SK10 SK11 SK12 SK13 SK14 SK15 SK16 SK17
WOTS+ Signature Merkle Tree Authentication Path Node to be computed
22
Signature Verification – Message 2
== XMSS Public Key? Output Node to be computed WOTS+ Signature Merkle Tree Authentication Path
23
24
Public Key Generation – WOTS+
IRTF Parameters: WOTS+ chain length w=16 Merkle tree height h=10, h=16, or h=20 256 Bit Hashes (e.g. SHA-256)
SK9 SK10 SK11 SK12 SK13 SK14 SK15 SK16 SK17
25
Public Key Generation – WOTS+
3 Hash Function Calls IRTF Parameters: WOTS+ chain length w=16 Merkle tree height h=10, h=16, or h=20 256 Bit Hashes (e.g. SHA-256)
SK9 SK10 SK11 SK12 SK13 SK14 SK15 SK16 SK17
26
Public Key Generation – WOTS+
3*w = 48 Hash Function Calls IRTF Parameters: WOTS+ chain length w=16 Merkle tree height h=10, h=16, or h=20 256 Bit Hashes (e.g. SHA-256)
SK9 SK10 SK11 SK12 SK13 SK14 SK15 SK16 SK17
27
Public Key Generation – WOTS+
48*67 = 3216 Hash Function Calls IRTF Parameters: WOTS+ chain length w=16 Merkle tree height h=10, h=16, or h=20 256 Bit Hashes (e.g. SHA-256)
SK9 SK10 SK11 SK12 SK13 SK14 SK15 SK16 SK17
28
Public Key Generation – WOTS+
3216*2h Hash Function Calls IRTF Parameters: WOTS+ chain length w=16 Merkle tree height h=10, h=16, or h=20 256 Bit Hashes (e.g. SHA-256)
SK9 SK10 SK11 SK12 SK13 SK14 SK15 SK16 SK17
2h times
29
Public Key Generation – L-Tree
4 Hash Function Calls IRTF Parameters: WOTS+ chain length w=16 Merkle tree height h=10, h=16, or h=20 256 Bit Hashes (e.g. SHA-256)
SK9 SK10 SK11 SK12 SK13 SK14 SK15 SK16 SK17
30
Public Key Generation – L-Tree
4*65 = 268 Hash Function Calls IRTF Parameters: WOTS+ chain length w=16 Merkle tree height h=10, h=16, or h=20 256 Bit Hashes (e.g. SHA-256)
SK9 SK10 SK11 SK12 SK13 SK14 SK15 SK16 SK17
31
Public Key Generation – L-Tree
260*2h Hash Function Calls IRTF Parameters: WOTS+ chain length w=16 Merkle tree height h=10, h=16, or h=20 256 Bit Hashes (e.g. SHA-256)
SK9 SK10 SK11 SK12 SK13 SK14 SK15 SK16 SK17
2h times
32
Public Key Generation – XMSS
IRTF Parameters: WOTS+ chain length w=16 Merkle tree height h=10, h=16, or h=20 256 Bit Hashes (e.g. SHA-256) 4*(2h-1) = 4*2h-4 Hash Function Calls
SK9 SK10 SK11 SK12 SK13 SK14 SK15 SK16 SK17
33
Public Key Generation – XMSS
3480*2h -4 Total Hash Function Calls IRTF Parameters: WOTS+ chain length w=16 Merkle tree height h=10, h=16, or h=20 256 Bit Hashes (e.g. SHA-256)
SK9 SK10 SK11 SK12 SK13 SK14 SK15 SK16 SK17
34
Hash Function Calls
35
36
37
FPGA Implementation Estimates (Virtex-5)
38
memory) è Improves the signing performance
è In the worst case, signing almost as slow as public key generation è Useful for lightweight applications with low memory
Parallelization and Caching
39