-
Notifications
You must be signed in to change notification settings - Fork 2
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
Binding the onetime address key extensions to the address spendkey is a red herring #8
Comments
This does not matter. The proof is only designed to show the relationship between Furthermore, notice this statement in the address ownership proof: "This proof must be a Σ-protocol, which in practice means binding to a custom message
This would greatly weaken the proof, since you could just do key cancellation to get a valid |
This is exactly my point: this proof's point is that no one except the owner of
In what use case would you be not be asserting the value of |
It does matter how we obtained them. If you generated them randomly and used key cancellation, then the proof means nothing. You can't actually call it a proof any more. If you really want to do this, then you need to propose that the proof must include an address ownership proof. I'm arguing with you because this is very important - you cannot design a 'conditional proof' that isn't actually a proof without the condition. It's all or nothing.
The proof is used as a building block for other proofs: enote sent proof, reserved enote proof. And then the reserve proof builds on top of the reserved enote proof by adding address ownership. |
FYI, Jamtis-RCT cannot bind the output key extensions to the address spend key because this would prevent e-note recovery for CryptoNote addresses. I don't want to complicate the specs with different derivations for each address type. If needed, the e-note proof can be done by providing the key extensions and an index proof for |
In appendix A.3 Enote Ownership Proof, the implementation paper states "Here we see that binding ko[g/x/u] to K allows enote ownership proofs to demonstrate a relationship between K and Ko." While this is technically true, it doesn't really mean anything and isn't a good reason to bind to the address spendkey, for two reasons. One, since we are providing s1sr outright, there is no way to prove that it was actually derived correctly and that the receiver would normally recover that enote if performing standard scanning. And two, if what we're attempting to prove here is that a spendkey K could know all g/x/u private key components (and thus spend) a onetime address Ko, then we could just provide the onetime address key extensions directly. That would make the proof [K, Ko, ko[g/x/u]]. This is a more generalized proof and may still be applicable even if we change the way the onetime address extensions are derived. The verifier would simply check Ko ?= K + kog G + kox X + kou U. The reason why I bring this up is so that we can optimize the scanning process by not having the address key extensions bind to Ksj (like in @tevador's Jamtis-RCT proposal).
P.S. Also, revealing s1sr might expose other enote information we wouldn't otherwise want to expose. It does expose the address tag under Jamtis currently, which is arguably not an issue since the prover/verifier already knows Ksj, but it's worth considering.
The text was updated successfully, but these errors were encountered: