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: docs/draft-credkit-composite-proofs.md
+43-2Lines changed: 43 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -159,6 +159,39 @@ This document is not, however, an instantiation of either draft, for three reaso
159
159
Should those drafts mature to cover BLS12-381 and statement composition, re-aligning this layer's
160
160
transcript with them would be a natural future revision.
161
161
162
+
## Relationship to AnonCreds v2 {#relationship-to-anoncreds-v2}
163
+
164
+
The construction this document describes is architecturally the same as AnonCreds v2, whose Rust
165
+
implementation [@?ANONCREDS-V2] served as the architecture reference for the composite layer. The
166
+
feature sets coincide almost exactly: multi-message BBS credentials, blind issuance over a
167
+
holder-chosen link secret, selective disclosure, equality of hidden messages across credentials,
168
+
predicates over hidden signed values, accumulator-based revocation, and the composition of all of
169
+
these statements into one presentation. Two of its design decisions are adopted here directly: the
170
+
Pedersen indirection that decouples a predicate backend from the signature proof (see
171
+
(#binding-a-predicate-to-a-signature)), and the integer message encoding that makes predicates
172
+
over signed values possible at all (see (#numeric-messages)).
173
+
174
+
The two systems nonetheless share no bytes at any layer (all observations are as of crate
175
+
`credx` 0.2.1):
176
+
177
+
| Layer | AnonCreds v2 | credkit |
178
+
|---|---|---|
179
+
| BBS core | A vendored pre-IETF BBS from the academic short-group-signature lineage: its own generator derivation, Merlin transcript labels, no ciphersuite identifiers |[@!I-D.irtf-cfrg-bbs-signatures] unchanged, verified byte-for-byte against its test vectors |
180
+
| Blind issuance | Classic BBS+ blind signing — a G1 commitment with a Schnorr proof, predating the IETF draft | The `Commit`/`BlindSign` flow of [@!I-D.irtf-cfrg-bbs-blind-signatures]|
181
+
| Predicates | Bulletproofs range proofs over 64-bit ranges | CCS signed-set membership and digit decomposition [@CCS08] (see (#predicates-over-hidden-messages)) |
182
+
| Non-revocation | The same positive VB accumulator [@VB20], proven with the paper's own membership protocol (additional generators, prover GT arithmetic) | The same accumulator, proven with the CDH weak-BB protocol (see (#cdh-membership-proof-and-bbs-binding)) |
183
+
| Transcript | Merlin | The labeled transcript of (#the-merged-fiat-shamir-transcript), kept in the BBS `hash_to_scalar` family |
184
+
| Envelope | A bespoke presentation format | W3C Verifiable Credentials and Presentations secured by Data Integrity proofs (see (#the-cryptosuite-layer)) |
185
+
186
+
Every intermediate value consequently diverges — generators, domain separation, challenges, wire
187
+
encodings — so neither implementation can serve as a test oracle for the other, and no
188
+
interoperability between them is possible or intended. Cross-checking is structural only: the same
189
+
statement composition, the same equality mechanic, the same protocol shapes. The comparison also
190
+
runs the other way: AnonCreds v2 provides verifiable encryption of hidden messages toward a
191
+
designated third party, which credkit does not implement. The relationship is fairly summarized
192
+
as: the AnonCreds v2 architecture, re-derived over the IETF BBS wire format and packaged as
193
+
JSON-LD credentials, with the predicate and accumulator-proof slots filled differently.
194
+
162
195
## Terminology
163
196
164
197
Holder, Issuer, Verifier, Prover, and the BBS operation names (`Sign`, `Commit`, `BlindSign`,
This is the same technique AnonCreds uses for its attribute encoding, and it is the only change
314
-
to the signing path. Bytes messages are unaffected and continue to reproduce the BBS vectors.
346
+
This is the same technique AnonCreds uses for its attribute encoding (see
347
+
(#relationship-to-anoncreds-v2)), and it is the only change to the signing path. Bytes messages are unaffected and continue to reproduce the BBS vectors.
315
348
The consequences for predicate semantics — that predicates are modular, and that honest values
316
349
must be encoded well below `r` for the natural comparison to hold — are discussed in
317
350
(#modular-predicate-semantics). A predicate MUST reference a message that was signed as an
@@ -1377,6 +1410,14 @@ This document has no IANA actions. It defines no new registries and requests no
0 commit comments