You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: draft-ietf-jose-json-proof-algorithms.md
+21-44Lines changed: 21 additions & 44 deletions
Original file line number
Diff line number
Diff line change
@@ -46,7 +46,7 @@ organization = "Ping Identity"
46
46
47
47
.# Abstract
48
48
49
-
The JSON Proof Algorithms (JPA) specification registers cryptographic algorithms and identifiers to be used with the JSON Web Proof and JSON Web Key (JWK) specifications. It defines IANA registries for these identifiers.
49
+
The JSON Proof Algorithms (JPA) specification registers cryptographic algorithms and identifiers to be used with the JSON Web Proof, JSON Web Key (JWK), and COSE specifications. It defines IANA registries for these identifiers.
50
50
51
51
{mainmatter}
52
52
@@ -160,9 +160,9 @@ Each individual payload is signed using the selected internal algorithm using th
160
160
161
161
### Issuer Protected Header
162
162
163
-
The JWK of the issuer's Ephemeral Key MUST be included in the issuer protected header with the property name of `proof_jwk` and contain only the REQUIRED values to represent the public key.
163
+
The issuer's Ephemeral Key MUST be included in the issuer protected header via the Proof Key header parameter.
164
164
165
-
The holder's Presentation Key JWK MUST be included in issuer protected header using the `presentation_jwk` parameter.
165
+
The holder's Presentation Key MUST be included in issuer protected header via the Presentation Key header parameter.
166
166
167
167
The issuer protected header is signed using the given JWA and the issuer's Stable Key.
168
168
@@ -199,9 +199,9 @@ Since the individual signatures in the proof value are unique and remain unchang
199
199
200
200
### Verification
201
201
202
-
The verifier MUST verify the issuer protected header octets against the first part in the proof using the issuer's Stable Key. It MUST also verify the presentation protected header octets against the second part in the proof value using the holder's Presentation Key, as provided in the `presentation_jwk` claim in the issuer protected header.
202
+
The verifier MUST verify the issuer protected header octets against the first part in the proof using the issuer's Stable Key. It MUST also verify the presentation protected header octets against the second part in the proof value using the holder's Presentation Key, as provided in the Presentation Key header parameter.
203
203
204
-
With the headers verified, the issuer's Ephemeral Key as given in the issuer protected header`proof_jwk` parameter can then be used to verify each of the disclosed payload signatures.
204
+
With the headers verified, the Proof Key header parameter can then be used to verify each of the disclosed payload signatures.
205
205
206
206
### JPA Registration {#SU-registration}
207
207
@@ -221,11 +221,9 @@ The `BBS-PROOF` `alg` parameter value in the presentation protected header corre
221
221
222
222
### Key Format
223
223
224
-
The key used for the `BBS` algorithm is an elliptic curve-based key pair, specifically against the G_2 subgroup of a pairing friendly curve. Additional details on key generation can be found in [@!I-D.irtf-cfrg-bbs-signatures, Section 3.4]
224
+
The key used for the `BBS` algorithm is an elliptic curve-based key pair, specifically against the G_2 subgroup of a pairing friendly curve. Additional details on key generation can be found in [@!I-D.irtf-cfrg-bbs-signatures, Section 3.4]. The JWK and Cose Key Object representations of the key are detailed in [@!I-D.ietf-cose-bls-key-representations].
225
225
226
-
The JWK form of this key is an `OKP` type with a curve of `BLS12381G2`, with `x` being the base64url-encoded form of the output of `point_to_octets_E2`. The use of this curve is described in [@!I-D.ietf-cose-bls-key-representations].
227
-
228
-
There is no additional holder key necessary for presentation proofs.
226
+
There is no additional holder presentation key necessary for presentation proofs.
229
227
230
228
### Issuance
231
229
@@ -269,22 +267,16 @@ The design is intentionally minimal and only involves using a single standardize
269
267
270
268
### Holder Setup
271
269
272
-
Prior to the issuer creating a new JWP, it must have presentation binding information provided by the holder. This enables the holder to perform replay prevention while presenting the JWP.
273
-
274
-
The presentation key used by the holder must be transferred to the issuer and verified, likely through a challenge and self-signing mechanism. If the holder requires unlinkability, it must also generate a new key that is verified and bound to each new JWP.
270
+
Prior to the issuer creating a new JWP, the issuer MUST have a presentation public key provided by the holder.
275
271
276
-
How these holder presentation keys are transferred and verified is out of scope of this specification. Protocols such as OpenID Connect can be used to accomplish this. What is required by this definition is that the holder's presentation key MUST be included in the issuer's protected header using the `presentation_jwk` parameter with a JWK as the value.
272
+
The holder's presentation key MUST be included in the issuer's protected header using the Presentation Key header parameter.
277
273
278
274
### Issuer Setup
279
275
280
276
To use the MAC algorithm, the issuer must have a stable public key pair to perform signing. To start the issuance process, a single 32-byte random Shared Secret must first be generated. This value will be shared privately to the holder as part of the issuer's JWP proof value.
281
277
282
278
The Shared Secret is used by both the issuer and holder as the MAC method's key to generate a new set of unique ephemeral keys. These keys are then used as the input to generate a MAC that protects each payload.
The holder's presentation key JWK MUST be included in the issuer protected header using the `presentation_jwk` parameter. The issuer MUST validate that the holder has possession of this key through a trusted mechanism such as verifying the signature of a unique nonce value from the holder.
287
-
288
280
### Combined MAC Representation
289
281
290
282
The combined MAC representation is a single octet string representing the MAC values of the issuer protected header, along with each payload provided by the issuer. This representation is signed by the issuer, but not shared - parties will recreate this octet string and verify the signature to verify the integrity of supplied issuer protected header and the integrity of any disclosed payloads.
@@ -317,7 +309,7 @@ See the JWS [Presentation Protected Header](#presentation-protected-header) sect
317
309
318
310
> Editor's Note: The current definition here is incomplete, the holder's signature needs to also incorporate the presented proof.
319
311
320
-
The first value in the presentation proof is the presentation signature. This is a signature over the presentation protected header, using the key specified by the `presentation_jwk` parameter in the issuer protected header.
312
+
The first value in the presentation proof is the presentation signature. This is a signature over the presentation protected header, using the key specified by the Presentation Key header parameter in the issuer protected header.
321
313
322
314
The second value is the issuer signature over the Combined MAC Representation provided with the issued form.
@@ -686,7 +653,6 @@ established by [@!I-D.ietf-jose-json-web-proof].
686
653
</front>
687
654
</reference>
688
655
689
-
690
656
# Example JWPs
691
657
692
658
The following examples use algorithms defined in JSON Proof Algorithms and also contain the keys used, so that implementations can validate these samples.
@@ -903,6 +869,17 @@ The BBS examples were generated using the library at https://github.com/mattrglo
903
869
904
870
[[ To be removed from the final specification ]]
905
871
872
+
-latest
873
+
874
+
* Defer BBS key definition to [@I-D.ietf-cose-bls-key-representations]
875
+
* Modify example generation to use `proof_key` and `presentation_key` names
876
+
* Change `proof_jwk` to `proof_key` and `presentation_jwk` to
877
+
`presentation_key` to better represent that the key may be JSON
878
+
or CBOR-formatted.
879
+
* Moved the registry for `proof_key` and `presentation_key` to JWP
880
+
where they are defined. Consolidated usage, purpose and
881
+
requirements from algorith musage under these definitions.
0 commit comments