# How can two UProve token holders prove to a 3rd party that they aren't the same user?

Suppose I have two users who are issued two different UProve IDs. The Issuer has guaranteed that one UProve token bearer will never have more than one UProve token ID.

• How can I use UProve to guarantee that two users are "different" without disclosing their actual private ID?

Here is a scenario: An online voting system wants to use UProve to anonymously collect votes. They decide to trust an Issuer who has full knowledge of the end user, but the relying pary has to accept the fact that they will know nothing about the end user at all.

The polling station (relying party) only needs to know that the same UProve ID wasn't used to cast a second vote. The only UProve scenario I know of that would work here is proving the user's SSN (or similar fixed ID).

In this case I don't want to disclose anything.

Is this possible?

-

The U-Prove Technology Overview V1.1 shows that this can be done. The issuer knows who the individual is but can't correlate that with verifier or prover use.

Upon setup the issuer can have extra attributes available that upon request of authorization from the prover the verifier can have access to. The verifier could use such an attribute and only successfully verify if it hasn't seen that attribute before.

-
So that means the issuer needs N attributes, and selectively disclosing them one by one? I suppose I need to mention that the quantity of locations the UProve user will be dealing with numbers in the the millions. A UProve token with just 255 proofs takes quite a long time to generate. I hope there is another solution. –  makerofthings7 Mar 27 '13 at 16:53
What information would be in that attribute? Is it encrypted data? –  makerofthings7 Sep 27 '13 at 14:58

Uprove/anonymous credentials in general seems a bit heavy handed for that. You could accomplish it with simple Chaum style e-cash. The issuer does a blind signature on a serial number. To vote, you reveal the serial number and signature. Its anonymous and doesn't allow duplicate voting.

In fact, since u-prove credentials are single show, you could cause u-prove to do this by simply only issuing a single credential to each user.

As a general note, you can do what you want with locally revokable anonymous credentials since the relying party can simply revoke the credential once it's used. I don't believe Uprove supports this, but other systems do.

-
I'm very interested in learning how this would operate, though the Wiki page for ecash is of no use, and all the pages are dead. Do you have any more info or references so I can understand what you mean by a "blind signature on a serial number"... and it's removal? –  makerofthings7 Apr 11 '13 at 0:35
@makerofthings7 There is a rather decent wikipedia article on blind signatures that shows the basic RSA construction. Is that insufficient? –  imichaelmiers Apr 11 '13 at 19:25
I see it here.. will read it. en.wikipedia.org/wiki/Blind_signature –  makerofthings7 Apr 11 '13 at 20:05