Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify redemption record with voprf draft21 #248

Open
colinbendell opened this issue May 22, 2023 · 2 comments
Open

Clarify redemption record with voprf draft21 #248

colinbendell opened this issue May 22, 2023 · 2 comments

Comments

@colinbendell
Copy link

colinbendell commented May 22, 2023

The redemption record verification does not match the functions in VOPRF Draft21 and it is unclear how it can be updated to align. The updated chrome implementation uses Draft21 for the Issuer protocol but still uses Draft7 (with P384_XMD:SHA-512_SSWU_RO_) for redemption

Context:
from ISSUER_PROTOCOL.md:

The Redeem function corresponds to the VerifyFinalize stage of the VOPRF protocol.

In Draft7, this stage is described as:

def VerifyFinalize(skS, input, output): 
  T = GG.HashToGroup(input)
  element = GG.SerializeElement(T)
  issuedElement = Evaluate(skS, [element])
 ...

Where the current redemption validation process would compare the signed issuedElement with the ECPoint W using the DST of TrustToken VOPRF Experiment V2 HashToGroup\0 and the hash sha512.

In draft21 of VOPRF, the VerifyFinalize stage has been replaced with the Finalize stage and the Evaluate function to determine the PRF result. However, the Evaluate function returns a hash of the input after signing.

@colinbendell
Copy link
Author

This seems to be more of a bug in Chrome, as PrivacyPass Protocol (Draft 10) more clearly defines the use of the Evaluate function. The ISSUER_PROTOCOL.md is just out of date.

@colinbendell colinbendell closed this as not planned Won't fix, can't repro, duplicate, stale May 22, 2023
@colinbendell
Copy link
Author

Re-opening because it is all very confusing. Protocol Draft10 is not updated to reflect voprf draft 21 and the structure and method of the redemption process is odd.

Compounding this is that the ECPoint W doesn't match any documentation:

  • it's encoded as Ne + Ns long instead of Ne in length (97 v 49)
  • the Evaluate() function in voprf produces a hash of Ns length, so it's unclear if the redemption request should be passing the hash output from Finalize() instead of a Point value.

@colinbendell colinbendell reopened this May 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant