-
Notifications
You must be signed in to change notification settings - Fork 281
Add ML-DSA to sdk and transit #1914
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
base: main
Are you sure you want to change the base?
Conversation
satoqz
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks good to me FWIW, but my experience with Transit and PQC is limited at best.
I do think some tests would be nice, likely in these locations:
builtin/logical/transit/path_keys_test.gohelper/keysutil/policy_test.go
Working on it |
Signed-off-by: f-hc <[email protected]>
Signed-off-by: f-hc <[email protected]>
Signed-off-by: f-hc <[email protected]>
|
Hey @f-hc! I've expressed this in a few places, though, apparently not on #496 which is unfortunate... but I think waiting until Go toolchain natively supports ML-DSA & friends is perhaps our best approach. As much as I appreciate the work of the Cloudflare team, ultimately the Go team will only face pressure to add it when the community declines to use third-party libraries for it. Ultimately, using a third-party crypto library isn't feasible, as While we could enable thus merge this for Transit, I think Transit has ultimately best served as a Go standard crypto library package. (There's also a tangential discussion of if we should be using circl or liboqs, a fellow Linux Foundation project and consortium of many other vendors.) All this to say, I don't know what I think. I was hoping, at the time I wrote that RFC initially, that PQC would be within the next year or so. It has now been over a year and we've not seen positive progress. The actionable part, though, is ML-KEM if you're interested in that instead! That's already part of the standard library, and some discussion of key exchange has occurred, e.g., in the context of #655. |
|
Hello @cipherboy, thank you for the clarification. |
@f-hc @DanGhita If there's general appetite for a PQC ahead of Go standard library... We do have We could fork Transit+keysutil into a PQC-only (experimental?) plugin, that could ultimately be folded into this version, depending freely on liboqs or circl or whatever we want. My biggest worry is that key storage might differ between Go and liboqs/... (and I've not been overly happy with how keysutil does this today anyways for that matter), so there may not be a clean upgrade path. At any rate, it'd let us iterate towards a long-term solution, though perhaps requiring an import+export operation once this version is improved. Thoughts? |
Add ML-DSA (also known as CRYSTALS-Dilithium, and FIPS 204) to sdk and transit
How to create a key:
payload.json:
{"type": "ml-dsa", "derived": "false", "parameter_set": "87"}run:
curl --header "X-Vault-Token: root" --request POST --data @payload.json http://127.0.0.1:8200/v1/transit/keys/my-keyPart of #496