@@ -42,6 +42,7 @@ normative:
42
42
RFC7800 :
43
43
RFC8017 :
44
44
RFC8235 :
45
+ RFC9180 :
45
46
RFC9380 :
46
47
SEC2 :
47
48
title : " SEC 2: Recommended Elliptic Curve Domain Parameters, Version 2.0"
@@ -233,10 +234,10 @@ The parameters of an HDK instantiation are:
233
234
- BL-Combine-Blinding-Factors(bf1, bf2) : Outputs a blinding factor `bf` such that for all blinding key pairs `(pk, sk)`:
234
235
- ` BL-Blind-Public-Key(pk, bf) == BL-Blind-Public-Key(BL-Blind-Public-Key(pk, bf1), bf2)`
235
236
- ` BL-Blind-Private-Key(pk, bf) == BL-Blind-Private-Key(BL-Blind-Private-Key(pk, bf1), bf2)`
236
- - `KEM` : A key encapsulation mechanism, consisting of the functions:
237
- - KEM-Derive-Key-Pair(msg, ctx ) : Outputs a key encapsulation key pair `(pk, sk )`.
238
- - KEM-Encaps (pk, ctx ) : Outputs `(k, c)` consisting of a shared secret `k` and a ciphertext `c`, taking key encapsulation public key `pk` and domain separation parameter `ctx`, a byte string .
239
- - KEM-Decaps(sk, c, ctx ) : Outputs shared secret `k`, taking key encapsulation private key `sk` and domain separation `ctx`, a byte string .
237
+ - `KEM` : A key encapsulation mechanism [RFC9180] , consisting of the functions:
238
+ - KEM-Derive-Key-Pair(ikm ) : Outputs a key encapsulation key pair `(sk, pk )`.
239
+ - KEM-Encap (pk) : Outputs `(k, c)` consisting of a shared secret `k` and a ciphertext `c`, taking key encapsulation public key `pk`.
240
+ - KEM-Decap( c, sk ) : Outputs shared secret `k`, taking ciphertext `c` and key encapsulation private key `sk`.
240
241
- `Authenticate(sk_device, reader_data, bf)` : Outputs `device_data` for use in a protocol for proof of possession, taking a BL blinding private key `sk_device`, remotely received `reader_data`, and a BL blinding factor `bf`.
241
242
242
243
An HDK instantiation MUST specify the instantiation of each of the above functions and values.
@@ -306,12 +307,12 @@ As a prerequisite, the unit possesses a `salt` of `Ns` bytes associated with a p
306
307
307
308
~~~
308
309
# 1. Unit computes:
309
- (pk_kem, sk_kem ) = KEM-Derive-Key-Pair(salt, ID )
310
+ (sk_kem, pk_kem ) = KEM-Derive-Key-Pair(salt)
310
311
311
312
# 2. Unit shares with issuer: (pk, pk_kem)
312
313
313
314
# 3. Issuer computes:
314
- (salt, kh) = KEM-Encaps (pk_kem, ID )
315
+ (salt, kh) = KEM-Encap (pk_kem)
315
316
316
317
# 4. Issuer shares with unit: kh
317
318
@@ -324,7 +325,7 @@ pk' = BL-Blind-Public-Key(pk, bf)
324
325
# 6. Issuer shares with unit: pk'
325
326
326
327
# 7. Unit verifies integrity:
327
- salt' = KEM-Decaps(sk_kem, kh, ID )
328
+ salt' = KEM-Decap( kh, sk_kem )
328
329
(bf, salt'') = HDK(salt', index)
329
330
pk' == BL-Blind-Public-Key(pk, bf)
330
331
@@ -505,7 +506,7 @@ This instantiation uses ECDH for proof of possession (see [Using ECDH shared sec
505
506
- `H1(msg)` : Implemented by computing `H(ID || msg)`.
506
507
- `EC` : The NIST curve `secp256r1` (P-256) [SEC2]
507
508
- `ECDH` : ECKA-DH with curve `EC`
508
- - `KEM` : ECKA-DH with curve `EC`
509
+ - `KEM` : DHKEM(P-256, HKDF-SHA256) [RFC9180]
509
510
510
511
# # HDK-ECDSA-P256
511
512
@@ -517,7 +518,7 @@ This instantiation uses ECDSA for proof of possession (see [Using ECDSA signatur
517
518
- `H1(msg)` : Implemented by computing `H(ID || msg)`.
518
519
- `EC` : The NIST curve `secp256r1` (P-256) [SEC2]
519
520
- `DSA` : ECDSA with curve `EC`.
520
- - `KEM` : ECKA-DH with curve `EC`
521
+ - `KEM` : DHKEM(P-256, HKDF-SHA256) [RFC9180]
521
522
522
523
# # HDK-ECSDSA-P256
523
524
@@ -529,7 +530,7 @@ This instantiation uses EC-SDSA for proof of possession (see [Using EC-SDSA sign
529
530
- `H1(msg)` : Implemented by computing `H(ID || msg)`.
530
531
- `EC` : The NIST curve `secp256r1` (P-256) [SEC2]
531
532
- `DSA` : EC-SDSA-opt (the optimised EC-SDSA) with curve `EC`.
532
- - `KEM` : ECKA-DH with curve `EC`
533
+ - `KEM` : DHKEM(P-256, HKDF-SHA256) [RFC9180]
533
534
534
535
# Application considerations
535
536
0 commit comments