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

Implement short signatures #3

Open
str4d opened this issue Mar 11, 2018 · 2 comments
Open

Implement short signatures #3

str4d opened this issue Mar 11, 2018 · 2 comments

Comments

@str4d
Copy link
Owner

str4d commented Mar 11, 2018

Section 4.2 of the BLS paper outlines how to use the x-coordinate of the "signature point" as the signature itself. It requires reconstructing the point during validation, and then an additional pairing check.

@paberr
Copy link

paberr commented Apr 27, 2019

The BLS12-381 implementation of the pairing library already allows for short signatures (of the same size as the x-coordinate only) by using G1Compressed.
It takes advantage of unused bits to be able to uniquely reconstruct the point.

Unsetting the three most significant bits, would yield the x-coordinate only (although I currently don't see any advantage except maybe compatibility with other implementations).

Wouldn't it be best to implement short signatures on BLS12-381 using this compressed encoding?

@burdges
Copy link

burdges commented Apr 27, 2019

You'd never use BLS merely for the length. You'd choose curve roles based on your aggregation plans, so you need a reversable Engine trait that hides the base fields, which I did in https://github.com/w3f/bls As a rule though, everyone defaults to 48 byte public keys and 96 byte signatures though because mostly people want BLS for voting in consensus protocols with far more signers than simultaneous messages.

Oops I miss-read your response. Yes this issue could likely be closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants