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

Key image can be computed from public key #5

Closed
PlasmaPower opened this issue May 30, 2019 · 3 comments
Closed

Key image can be computed from public key #5

PlasmaPower opened this issue May 30, 2019 · 3 comments

Comments

@PlasmaPower
Copy link

PlasmaPower commented May 30, 2019

As h = H(L) * g, yk = xk * g, and y = xk * h, we can transform y to y = xk * H(L) * g = H(L) * xk * g = H(L) * yk which means that y, the key image, can be computed from the public key (and the list of all public keys). This makes identifying the signer of a ring signature trivial, as you simply need to check if the key image matches each of the public keys.

To fix this, you need to use a function that computes a curve point directly from a hash. There are several potential algorithms for this, such as:

It also seems that I'm not the first person to find this issue in other implementations of the same algorithm: https://web.archive.org/web/20160218042108/shnoe.wordpress.com/2016/02/11/de-anonymizing-shadowcash-and-oz-coin/

@Acentelles
Copy link
Contributor

Hi @PlasmaPower , Thank you for spotting this vulnerability. We've addressed it here

@sdiehl
Copy link
Owner

sdiehl commented May 31, 2019

The addition of this algorithm should fix the information leak.

https://github.com/adjoint-io/aos-signature/pull/6/files#diff-9e6d8fae973f4fc26ef551d36f508ba7R212

@PlasmaPower
Copy link
Author

The fix looks good but the README should also be updated, and I'm not sure what the correct notation is. Thanks!

@sdiehl sdiehl closed this as completed May 31, 2019
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

3 participants