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

Add stateful hash-based signatures #1098

Closed
dstebila opened this issue Sep 30, 2021 · 3 comments
Closed

Add stateful hash-based signatures #1098

dstebila opened this issue Sep 30, 2021 · 3 comments

Comments

@dstebila
Copy link
Member

dstebila commented Sep 30, 2021

LMS and XMSS as standardized by CFRG may be of use to Verisign and others.

@dstebila dstebila added the future-work Will not be fixed in current release cycle label Sep 30, 2021
@dstebila
Copy link
Member Author

dstebila commented Dec 7, 2021

Stateful hash-based signatures won't fit within our current liboqs API for signature schemes, because the signing algorithm for those treat the secret key as a read-only input, whereas a stateful HBS scheme would need to modify the secret key during the signing operation. So the API would need to be adapted. We'd also have to consider whether to include mechanisms for reading/writing the secret key to/from files, or whether to leave that to the caller. Safe management of this update operation is critical as reuse / loss of state can be catastrophic for security.

Check out related literature and implementations: https://github.com/XMSS/xmss-reference, https://eprint.iacr.org/2020/470.pdf, http://www.amphawa.eu/data/icmu-paper.pdf

Eventually we'll also want to consider what can be done in OQS-OpenSSL. It will be hard to add stateful HBS signing (since the OpenSSL signature API would have to be modified at many places) but might be easier and sufficient for limited applications to first add verification for stateful HBS schemes, since those don't actually require any state to be stored/updated (and thus have the same API for verification).

@dstebila dstebila added this to the 0.10.0 milestone Aug 23, 2023
@baentsch
Copy link
Member

baentsch commented Dec 1, 2023

In preparation for merge of the stateful-sigs branch here's some observations where I wonder whether this is all as intended:

Lastly, is there some overall documentation explaining how this is intended to be used? Some sample code at least along the lines of this. Apologies if I overlooked this. I did find the test but it seems overly convoluted for someone just interested in (learning how to) use a stateful sig, no?

@SWilson4 SWilson4 removed the future-work Will not be fixed in current release cycle label Jan 23, 2024
@baentsch baentsch removed this from the 0.10.0 milestone Mar 5, 2024
@SWilson4
Copy link
Member

SWilson4 commented Jun 7, 2024

Closing as completed by #1650.

@SWilson4 SWilson4 closed this as completed Jun 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Status: No status
Development

No branches or pull requests

3 participants