Skip to content

Commit 636e413

Browse files
committed
Address idnits feedback
1 parent 31cff8e commit 636e413

File tree

3 files changed

+47
-48
lines changed

3 files changed

+47
-48
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ hdk.pdf:
1818
"<title>Hierarchical Deterministic Keys for the European Digital Identity Wallet</title>" \
1919
"<meta charset=utf-8>" \
2020
> build/hdk.html
21-
npx -p @mermaid-js/mermaid-cli mmdc -i draft-dijkhuis-cfrg-hierarchical-deterministic-keys.md -o build/keys.md -e svg -t neutral -w 400
21+
npx -p @mermaid-js/mermaid-cli mmdc -i draft-dijkhuis-cfrg-hdkeys.md -o build/keys.md -e svg -t neutral -w 400
2222
cat README.md | \
2323
sed -e "s/# Hierarchical Deterministic Keys for the European Digital Identity Wallet/# Introduction to Hierarchical Deterministic Keys/g" | \
2424
sed -e "s/keys.md/#hierarchical-deterministic-keys/g" | \

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Expert participants from Potential:
4545

4646
## Contents
4747

48-
To address challenges 5 and 6, this repository contains a freely accessible, unencumbered specification of **[Hierarchical Deterministic Keys](draft-dijkhuis-cfrg-hierarchical-deterministic-keys.md)**. This enables an EU Digital Identity Wallet deployment that distributes key management efficiently:
48+
To address challenges 5 and 6, this repository contains a freely accessible, unencumbered specification of **[Hierarchical Deterministic Keys](draft-dijkhuis-cfrg-hdkeys.md)**. This enables an EU Digital Identity Wallet deployment that distributes key management efficiently:
4949

5050
![A wallet architecture using Hierarchical Deterministic Keys associated with keys protected using a wallet secure cryptographic device, optionally using Asynchronous Remote Key Generation (ARKG).](media/deployment.svg)
5151

draft-dijkhuis-cfrg-hierarchical-deterministic-keys.md renamed to draft-dijkhuis-cfrg-hdkeys.md

Lines changed: 45 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: Hierarchical Deterministic Keys
33
abbrev: HDK
44
category: info
5-
docname: draft-dijkhuis-cfrg-hierarchical-deterministic-keys-latest
5+
docname: draft-dijkhuis-cfrg-hdkeys-latest
66
submissiontype: independent
77
v: 3
88
area: IRTF
@@ -38,10 +38,8 @@ normative:
3838
author:
3939
- organization: ISO/IEC
4040
date: 2019-09
41-
RFC2119:
4241
RFC7800:
4342
RFC8017:
44-
RFC8174:
4543
RFC9380:
4644
SEC2:
4745
title: "SEC 2: Recommended Elliptic Curve Domain Parameters, Version 2.0"
@@ -151,31 +149,32 @@ Solutions MAY omit application of the asynchronous remote key generation functio
151149
The following example illustrates the use of key derivation. An HDK tree is defined by an initial public key and a seed value, which is a byte array containing sufficient entropy. Now tree nodes are constructed as follows.
152150

153151
~~~
154-
┌────────────────────────┐
155-
│Confidential static data│
156-
│┌─────────┐ ┌────┐ │
157-
││pk_device│ │seed│ │
158-
│└────┬────┘ └──┬─┘ │
159-
└─────┼─────────┼────────┘
160-
┌─────────────────┼─────────┼───────────────────────────┐
161-
│Level 0 ▼ ▼ │
162-
│┌─────────────────────────────────────────────────────┐│
163-
││(pk0, sdk0, salt0) = hdk0 = HDK-Root(pk_device, seed)││
164-
│└────┬────────────────────────────────────────────────┘│
165-
└─────┼─────────────────────────────────────────────────┘
166-
Level 1 ▼
167-
┌─────────────────────────┐┌────────────────────────┐┌─────────────────────────┐
168-
│(pk1, sk1, salt1) = ││HDK-Derive-Local(hd0, 1)││HDK-Derive-Local(hdk0, 2)│
169-
│HDK-Derive-Local(hdk0, 0)││ ││ │
170-
└───────────┬────────┬────┘└────────────────────────┘└─────────────────────────┘
171-
│ └────────────────────────┐
172-
│ │
173-
┌───────────┼─────────────────────────────────┼──────────────────────────────┐
174-
│Level 2 ▼ ▼ │
175-
│┌────────────────────────────────────┐┌────────────────────────────────────┐│
176-
││HDK-Derive-Local((pk1,sk1,salt1), 0)││HDK-Derive-Local((pk1,sk1,salt1), 1)││
177-
│└────────────────────────────────────┘└────────────────────────────────────┘│
178-
└────────────────────────────────────────────────────────────────────────────┘
152+
+------------------------+
153+
|Confidential static data|
154+
|+---------+ +----+ |
155+
||pk_device| |seed| |
156+
|+----+----+ +--+-+ |
157+
+-----+---------+--------+
158+
+-----------------+---------+---------------------------+
159+
|Level 0 v v |
160+
|+-----------------------------------------------------+|
161+
||(pk0, sdk0, salt0) = hdk0 = HDK-Root(pk_device, seed)||
162+
|+----+------------------------------------------------+|
163+
+-----+-------------------------------------------------+
164+
Level 1 v
165+
+-------------------------++-----------------++-----------------+
166+
|(pk1, sk1, salt1) = ||HDK-Derive-Local(||HDK-Derive-Local(|
167+
|HDK-Derive-Local(hdk0, 0)|| hdk0, 1) || hdk0, 2) |
168+
+-----------+--------+----++-----------------++-----------------+
169+
| +---------------+
170+
| |
171+
+-----------+------------------------+--------------------+
172+
|Level 2 v v |
173+
|+-----------------------++-----------------------+ |
174+
||HDK-Derive-Local( ||HDK-Derive-Local( | |
175+
|| (pk1,sk1,salt1), 0)|| (pk1,sk1,salt1), 1)| |
176+
|+-----------------------++-----------------------+ |
177+
+---------------------------------------------------------+
179178
~~~
180179

181180
The solution instance computes the Level 0 HDK at the root node using a deterministic function called HDK-Root. The HDK consists of a key pair `(pk0, sk0)`, and a byte string `salt0` to derive next-level keys.
@@ -198,23 +197,23 @@ In this example, a document is issued in such a way that it can be presented wit
198197
In secure
199198
cryptographic
200199
device
201-
┌───────────┐
202-
sk_device ┼─────────────┐
203-
└───────────┘
204-
─────────────
205-
HDK in
206-
solution
207-
instance ┌───────────┐
208-
┌───────────┐ HDK-Authenticate─►│device_data
209-
pk └───────────┘
210-
└───────────┘
211-
┌───────────┐
212-
sk ┼───────┘
213-
└───────────┘
214-
─────────────
215-
┌───────────┐
216-
reader_data┼─────────────┘
217-
└───────────┘
200+
+-----------+
201+
|sk_device +-------------+
202+
+-----------+ |
203+
------------- |
204+
HDK in |
205+
solution |
206+
instance v +-----------+
207+
+-----------+ HDK-Authenticate->|device_data|
208+
|pk | ^ ^ +-----------+
209+
+-----------+ | |
210+
+-----------+ | |
211+
|sk +-------+ |
212+
+-----------+ |
213+
------------- |
214+
+-----------+ |
215+
|reader_data+-------------+
216+
+-----------+
218217
~~~
219218

220219
Blinding methods can be constructed such that the secure cryptographic device does not need to be designed for it. In such cases, `sk_device` does not contain the value of the private device key but a reference to it.
@@ -341,7 +340,7 @@ A solution instance authenticates the device by creating a blinded proof applyin
341340
Inputs:
342341
- sk_device, a (reference to a) device private key.
343342
- sk_hdk, an HDK private key.
344-
- reader_data, a byte string of solution instance-specific reader data.
343+
- reader_data, a byte string of solution instance-specific data.
345344

346345
Outputs:
347346
- device_data, a byte string of device data for proving possession.

0 commit comments

Comments
 (0)