-
Notifications
You must be signed in to change notification settings - Fork 4
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
Adding OpenSSL CLA requirement #113
Comments
It would be great to have mlkem-native in OpenSSL. Two points:
|
Thanks for tagging me @mkannwischer . Sure I can give some background: These discussions started before the establishment of PQCA (see openssl/project#431 for "history" and rationale). When they then didn't really progress, as a long-time OpenSSL contributor, I more recently chose to re-prioritize my non research-community-targeting FOSS contributions to that project where we currently proceed implementing all standards in a way completely separate from PQCA for various reasons, (missing) CLAs being one. fwiw, SLH-DSA is the most mature, but work is proceeding on the other algs as well, incl. ML-KEM, see e.g., openssl/openssl#26006. That said, as I am an independent contributor myself, I personally love to work with any other independent contributor on the same terms of any given FOSS project. So if indeed in this case all authors (and where applicable, their employers) of an ML-KEM implementation are also willing to contribute under the same terms, let's discuss concrete ways forward, ideally in an open forum like openssl GH. While I by now also appreciate the boringSSL APIs, there's (as always) room for improvement, so you may consider responding to openssl/openssl#25879 for example as and when you'd be willing/able/permitted to contribute and make OpenSSL better. Another approach may be for you to open further issues at OpenSSL explicitly targeting functional and non-functional benefits of alternative code bases. That way, the whole OpenSSL community can chime in as to merit and priority of such features. In this case, please be sure to use the tag "ML-KEM" in the issue header so they're easier to find in the "sea of issues" :-) Tagging me also would help. Or even more simply, just open a PR -- in the case of ML-KEM, be sure to target the feature branch of that name for now. Thanks in advance! |
The CLA would not be an issue from my employer's end either. |
Thank you very much for all that context @baentsch! It would be great to contribute. |
Some clarifications/notes:
|
I've gone over this with our lawyers over the past couple of months. We can definitely make this work from the Linux Foundation perspective, provided that all of the contributors are willing to sign the CLA (and have their employers sign it if applicable). Note that this requirement would include all past contributors, too. There are still a couple of things that need to be sorted out for this to work.
So, the next steps should be as follows:
Does all of this make sense to everybody? Please let me know if there are any questions. Thanks for your time! |
Thanks @hartm . Just my thoughts (I think we should have finally agreement via a tsc vote)
We have a TSC this week - suggest we use some time in the meeting to talk about the practicalities. |
We discussed this at the 20250116 meeting. We'll continue today. For now the focus is on mlkem-native. Any CLAs will need to include contributors to the original reference implementations upon which mlkem-native was based. |
I have a small update on this: I have been in touch with the Kyber team regarding CLAs for the pqcrystals implementations and initial feedback was quite positive. As a first step, we are trying to get signatures from everyone listed in https://github.com/pq-crystals/kyber/blob/main/AUTHORS. I don't know how long that will take. |
As I see you revive(d) this thread and as quite some time has passed since the above, allow me to give an update/heads-up only as an "interested bystander" (definitely not to be understood as any "projects' official opinion" but just my personal thoughts): IMO, the OpenSSL ML-KEM implementation has matured massively by now and I personally think an equally massive functional and/or non-functional delta would have to be present(ed) to update it via PR. In order to provide a rough estimation of work effort (required on your side as well as the reviewers'), I'd like to share some code sizes/relations that I consider pretty representative/tell-tale: The size of the diff between feature/ml-kem and master is 28371 (LoC) of which less than 10% (2510) are attributed to the actual crypto/ml_kem code, 3885 to the necessary provider integration, 16380 to tests and the rest to "ancillary" changes required to add proper support for ML-KEM (sizes determined by running Why do I mention this to you, @hanno-becker @mkannwischer ? IMO, what "mlkem-native" currently has in terms of functionality equates (roughly) to the 2510 LoC above. What you would absolutely have to add to raise a PR trying to propose your code to OpenSSL is the equivalent of the 3885 LoC above, i.e., much more than what you already have (assuming all tests pass immediately). Quite a bit of that is boilerplate, but doing it requires lots of internal OpenSSL know how that requires quite an effort to acquire (and I won't claim to have it). Complicating things more, I do not think the "mlkem-native" APIs are currently suitable to support the OpenSSL breadth of options e.g. outlined here. Worse, IMO the integration of your code to liboqs does not help this integration effort in any way as the APIs there also currently are not "wide" enough (extended vs seed key representation). In addition, the strict separation of key representation code between This is not to discourage you from pursuing an integration of your code to OpenSSL, but only meant as a warning that you have way more than half the way to go in terms of actual work (in my personal opinion, you have walked maybe 10% of the journey) -- and this is completely independent of the CLA issue you'd need to sort in addition as per this issue as well as the effort that would be required to review your contribution (pretty much the same again that already went into the current code in feature/ml-kem). Again, all of this is just my personal opinion meant to "shine some light on the path ahead" as someone who has traveled some parts of it in the past 4 years. As usual, I may be off, but at least no-one can claim I didn't share what I think I know. Have a good weekend. |
@baentsch, thanks for your thoughts -- your experience working on OpenSSL is very valuable here. Actually, allow us to get straight to it: Would you like to work with us (me and @mkannwischer) on the integration of mlkem-native into OpenSSL, and the (re-)shaping is needed on mlkem-native and libOQS to make that happen? I think we'd stand a much better chance if we had your hands-on support here. |
Simple answer: No. In case you have interest and time for more background, read on.
I think --and I keep repeating saying this since a long time-- that an integration of mlkem-native to
For more detailed arguments, see e.g. here and here. FWIW&FYI, my personal motivation in all of this is to help improve the PQC software ecosystem both in an efficient manner (as I'm doing this unlike everyone else in PQCA completely voluntary and unpaid) and one beneficial to end users (not corporate "FOSS free riders" or "PQC marketing"): I currently cannot see how an integration of mlkem-native with OpenSSL (let alone via If you'd like to discuss directly (as well as exchange more "background thoughts" too long to write down), please feel free to send me an email to set up a direct conversation, @hanno-becker @mkannwischer . |
One of the potential projects consuming code from liboqs, and pq-code-package is OpenSSL.
In order for any code to be considered by OpenSSL, all contributors (current, future, and historical) are required to have signed the OpenSSL CCA. This is very similar to the Apache CLA. This will apply both at the individual contributor and organization contributor level.
Note that this in no way means it's certain OpenSSL will actually use our code. They are still evaluating the approach they wish to make. This is merely a prereq for consideration.
This discussion has been ongoing at the PQCA level both in terms of general approach ,as well as tooling to support.
As a TSC we need to consider if we are ok with this approach, whether we have any particular concerns, and provide feedback to the PQCA.
Suggest discussion at the 20241106 TSC meeting
The text was updated successfully, but these errors were encountered: