WalletWasabi / WabiSabi

MIT License
104 stars 28 forks source link

credential presentation at input registrations #29

Closed nothingmuch closed 4 years ago

nothingmuch commented 4 years ago

If credentials are only issued in output registrations and redeemed at input registration, then inputs and outputs are the vertices and credentials are (obscured) edges of a bipartite graph with maximum in/out degree k.

This is problematic for several reasons:

These issues can largely be resolved by adding a reissuance operation, which introduces intermediate nodes on the graph so that it's no longer bipartite. Unfortunately this is a potential privacy leak since only some clients/rounds will require reissuance.

Instead we can simply add credential presentation to each input registration, and issue change credentials in each output registration, effectively unifying the two operations so that each registration is potentially a reissuance.

This is attractive since it allows k to be small without restricting the graph topology, since input registrations and output registrations may be arbitrarily strung together making all outputs plausibly connected to all inputs.

If credential presentation is optional this re-introduces the same kind of privacy leak that reissuance does, namely that initial vs. merging input registrations are distinguishable by the coordinator. A simple fix is to make credential presentation mandatory at input registration, but that presents a bootstrapping problem: how do users obtain initial credentials.

The bootstrapping could be solved by modifying the Show protocol to require a proof of a logical disjunction of a proof of knowledge of a valid MAC on the attributes, or a proof of knowledge that M_{v_i} = {G_g}^{r_{v_i}} <=> v_i = 0.

However, a simpler approach described here which achieves the same effect cryptography is to just add an auxiliary operation that issues null credentials that users can include in their initial registration.

nothingmuch commented 4 years ago

hmm, i seem to have pushed the wrong commit, converted to draft PR

nothingmuch commented 4 years ago

so somehow I managed to fat finger my way into deleting a whole section while committing, hence the extra }. fortunately it was still in my emacs undo history, so i managed to recover it for the most part.

aside: @seresistvanandras i'm not sure about having the boxes as floating figures, as that breaks up the flow unless they are combined into one figure in the new section, and we haven't put in references to the figures.

nothingmuch commented 4 years ago

pushed new commit with proper Co-authored-by trailer and up to date bibtex

nothingmuch commented 4 years ago

blech, i noticed some more errors in the commit message, i won't push again until it's ready to merge though