From c767aa3bdd5217fb085ac2099ca2d2500f730bef Mon Sep 17 00:00:00 2001
From: Wind4Greg Pseudonyms with Issuer-known PID
[[CFRG-Pseudonym-BBS-Signature]].
+
This feature is a privacy preserving enhancement that allows a verifier that has
seen a selectively revealed document with derived proof from a holder to
recognize that the same holder is presenting a new selectively revealed document
@@ -1648,7 +1649,192 @@ Pseudonyms with Hidden PID
+ Pseudonyms with Hidden PID
|pseudonym|, they use the proof verification procedures of
[[CFRG-Pseudonym-BBS-Signature]].
+This section provides a summaries of the inputs, outputs, proof serialiation, +tasks, and procedures for "baseline" BBS proofs as well as those for the +optional features. By baseline BBS we mean BBS base and derived proofs +without additional features. All the optional features are "additive" in the +sense that some additional input, task, or, output is generated in +addition to that of the "baseline" BBS signatures/proofs. +
+Name | +Tasks | +Inputs | +Signing Algorithm | +
---|---|---|---|
Baseline BBS | +baseline: BBS signature generation from VC | +baseline: document, proof options, key material, mandatory pointers | +BBS | +
Anonymous Holder Binding | +baseline + selected index adjustment | +baseline + commitment with proof to holder secret from holder | +Blind BBS | +
Pseudonym with Issuer Pid | +baseline + Generate pid | +baseline | +Pseudonym BBS | +
Pseudonym with Hidden Pid | +baseline + selected index adjustment | +baseline + commitment with proof to secret pid from holder | +Pseudonym/Blind BBS | +
Name | +Proof Header Bytes | +Serialized Output | +
---|---|---|
Baseline BBS | +`0xd9`, `0x5d`, and `0x02` | +baseline: bbsSignature, bbsHeader, publicKey, hmacKey, and mandatoryPointers | +
Anonymous Holder Binding | +`0xd9`, `0x5d`, and `0x04` | +baseline + signerBlind | +
Pseudonym with Issuer Pid | +`0xd9`, `0x5d`, and `0x06` | +baseline + pid | +
Pseudonym with Hidden Pid | +`0xd9`, `0x5d`, and `0x08` | +baseline + signerBlind | +
Name | +Tasks | +Inputs | +Proof Generation Algorithm | +
---|---|---|---|
Baseline BBS | +BBS derived proof generation from VC with base proof | +baseline: (from base proof serialization) bbsSignature, bbsHeader, publicKey, hmacKey, and mandatoryPointers; selectivePointers (holders choice) | +BBS | +
Anonymous Holder Binding | +baseline | +baseline + holder secret, prover blind (both known to holder), signer blind (included in base proof from issuer) | +Blind BBS | +
Pseudonym with Issuer Pid | +baseline + Generate pseudonym | +baseline + verifier id (from verifier), pid (included in base from issuer) | +Pseudonym BBS | +
Pseudonym with Hidden Pid | +baseline + Generate pseudonym | +baseline + pid, prover blind (both known to holder), signer blind (included in base from issuer), verifier id (from verifier) | +Pseudonym/Blind BBS | +
Name | +Proof Header Bytes | +Serialized Output | +
---|---|---|
Baseline BBS | +`0xd9`, `0x5d`, and `0x03` | +baseline: bbsProof, compressedLabelMap, mandatoryIndexes, selectiveIndexes, presentationHeader | +
Anonymous Holder Binding | +`0xd9`, `0x5d`, and `0x05` | +baseline | +
Pseudonym with Issuer Pid | +`0xd9`, `0x5d`, and `0x07` | +baseline + pseudonym | +
Pseudonym with Hidden Pid | +`0xd9`, `0x5d`, and `0x09` | +baseline + pseudonym | +
Name | +Inputs | +Proof Verification Algorithm | +
---|---|---|
BBS baseline | +baseline: (from derived proof serialization) bbsProof, compressedLabelMap, mandatoryIndexes, selectiveIndexes, presentationHeader | +BBS | +
Anonymous Holder Binding | +baseline | +Blind BBS | +
Pseudonym with Issuer Pid | +baseline + verifier id (known to verifier), pseudonym (included in derived proof) | +Pseudonym BBS | +
Pseudonym with Hidden Pid | +baseline + verifier id (known to verifier), pseudonym (included in derived proof) | +Pseudonym/Blind BBS | +
The following algorithm specifies how to create a [=data integrity proof=] given an unsecured data document. Required inputs are an -unsecured data document ([=map=] |unsecuredDocument|), and a set of proof -options ([=map=] |options|). A [=data integrity proof=] ([=map=]), or an error, +unsecured data document ([=map=] |unsecuredDocument|), a set of proof +options ([=map=] |options|), an array of mandatory JSON pointers +(|mandatoryPointers|), a |featureOption| indicator parameter, and, depending on +the |featureOption|, a |commitment_with_proof| byte array. +A [=data integrity proof=] ([=map=]), or an error, is produced as output.
++The |featureOption| parameter is used to indicate which optional feature, if +any, is being used. It can take one of the following values `"baseline"`, +`"anonymous_holder_binding"`, `"pseudonym_issuer_pid"`, or +`"pseudonym_hidden_pid"`. Note that `"baseline"` is used to denote the case of +no optional features. In the cases where the |featureOption| is set to +`"anonymous_holder_binding"` or `"pseudonym_hidden_pid"`, the +|commitment_with_proof| input MUST be supplied. +
The following algorithm serializes the base proof value, including the BBS signature, HMAC key, and mandatory pointers. -The required inputs are a base signature |bbsSignature|, -an HMAC key |hmacKey|, and an array of -|mandatoryPointers|. +The required inputs are a base signature |bbsSignature|, |bbsHeader|, +|publicKey|, an HMAC key |hmacKey|, an array of +|mandatoryPointers|, |featureOption|,and depending on +the |featureOption| value the |pid|, and |signer_blind| values. A single base proof string value is produced as output.
+In the case where |featureOption| equals `"anonymous_holder_binding"` the +REQUIRED additional inputs are |holderSecret| and |proverBlind|. These would +have been precomputed by the holder. See +Anonymous Holder Binding for background +information. +
++In the case where |featureOption| equals `"pseudonym_issuer_pid"` the REQUIRED +additional input is the |verifier_id| which is communicated to the holder by the +verifier. See Pseudonyms with +Issuer-known PID for background information. +
++In the case where |featureOption| equals `"pseudonym_hidden_pid"` the REQUIRED +additional inputs are the |pid|, |proverBlind| (both known to +holder), |verifier_id| which is communicated to the holder by the verifier. See +See Pseudonyms with +Hidden PID for background information. +
-In the case where |featureOption| equals `"anonymous_holder_binding"` the +If |featureOption| equals `"anonymous_holder_binding"`, the REQUIRED additional inputs are |holderSecret| and |proverBlind|. These would have been precomputed by the holder. See Anonymous Holder Binding for background information.
-In the case where |featureOption| equals `"pseudonym_issuer_pid"` the REQUIRED +If |featureOption| equals `"pseudonym_issuer_pid"`, the REQUIRED additional input is the |verifier_id| which is communicated to the holder by the verifier. See Pseudonyms with Issuer-known PID for background information.
-In the case where |featureOption| equals `"pseudonym_hidden_pid"` the REQUIRED +If |featureOption| equals `"pseudonym_hidden_pid"`, the REQUIRED additional inputs are the |pid|, |proverBlind| (both known to -holder), |verifier_id| which is communicated to the holder by the verifier. See +holder), and |verifier_id| which is communicated to the holder by the verifier. See Pseudonyms with Hidden PID for background information.
@@ -1705,7 +1705,7 @@-This section provides a summaries of the inputs, outputs, proof serialiation, +This section provides summaries of the inputs, outputs, proof serialiation, tasks, and procedures for "baseline" BBS proofs as well as those for the -optional features. By baseline BBS we mean BBS base and derived proofs +optional features. By baseline BBS, we mean BBS base and derived proofs without additional features. All the optional features are "additive" in the -sense that some additional input, task, or, output is generated in -addition to that of the "baseline" BBS signatures/proofs. +sense that some additional input, task, or output is generated +in addition to those of the "baseline" BBS signatures/proofs.