Stop requiring signoff from non-existent "Fedora crypto team" for new cryptography libraries #3624
Labels
No labels
Closed As
Accepted
Closed As
Duplicate
Closed As
Insufficient data
Closed As
Invalid
Closed As
Rejected
document it
fast track
meeting
next release
nonresponsive maintainer
packager revocation
pending announcement
provenpackager
python 2 exception
self contained change
stalled
system wide change
updates policy exception
vote-in-progress
No milestone
No project
No assignees
6 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
fesco/tickets#3624
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Packaging of new cryptography libraries currently requires signoff from the "Fedora crypto team": https://docs.fedoraproject.org/en-US/packaging-guidelines/CryptoPolicies/#_new_crypto_libraries
This "team" is defunct and hasn't existed for the better part of a decade (or longer?), the linked mailing list is private, moderated, and appears to have zero messages in its mailing list archive. Sending mails to it is equivalent to sending something to /dev/null.
The Red Hat Crypto team now
kind offills the role that the "Fedora crypto team" used to have, except for some tasks (like approvals for new cryptography libraries) that are still referenced in our documentation but that nobody seems to be responsible for now. This means that packaging any such library has basically stalled due to lack of the necessary "OK" (or even a definitive "no") from a group that no longer exists (see RHBZ#2350145 for an example).I propose that this signoff requirement is dropped from the Packaging Guidelines.
It'd be nice to have a little bit of the backstory on why sign-off is/was required. In case it makes sense to have sign-off and the Red Hat crypto team is willing to take this up as a responsibility I'd instead suggest to change the documentation to refer to them and the ways to reach them.
If not, then getting rid of the signoff requirement is indeed the only option.
Do we want to reach out, or have we already done so? I saw some back-and-forth on devel@ about it but it wasn't particularly clear.
The team is not defunct, but the contact point described there somehow stopped working.
I think carefully curating what cryptography is allowed in Fedora is a vital service to the integrity of the distribution. not all crypto-librraies are equal, and some are really bad, while others simply do not integrate with the rest of the distribution (crypto-policy, system CA store, etc...)
So far the request are always "oh I'd like to put this in", and the only justification is XYZ needs it and does not support a proper library and I do not care for addressing the issues.
I think the policing could be lifted if there was serious respect of the guidelines (ie integration with crypto-policies and system-ca store as a minimum).
That would still leave unanswered a check on the quality of the library. And especially now there are many bad libraries in hip ecosystems ...
Just a simple example of the systemic issues of the cryptographic implementations: https://hexproof.dev/datagrams/bleichenbacher-oracle-survey/
(xref https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/DAY777IVZT32WVPWTEK5BLVFT4A6FRSS/)
What can we do to unblock this? To start with, can we make it possible to actually contact the crypto team?
As for aws-lc, how can we move forward there? The last update I see in the review ticket from 2026-02-14 says
Has there been any improvement there or in making it possible to use an openssl-based crypto backend? Should we consider making an exception to the crypto policies for aws-lc in Rust like we already have for the crypto libraries/implementations built in to Go?
There is ongoing work in
rustlsupstream that makes it easier to switch out its crypto backends, but this is not yet available in a stable release. There is work happening on two OpenSSL based crypto backends forrustls, but both aren't compatible with the upcoming backend modularization work inrustlsupstream yet.Having an OpenSSL backend for
rustlswill help (though it will also require more patching work downstream for all consumers), but it will not solve the problem entirely - some applications (or libraries) also want to use AWS-LC (or ring) directly, and don't support using OpenSSL. If there is going to be a hard veto (is there even an existing framework / precedent for this, other than the "Legal" banhammer?) from Red Hat on shipping aws-lc and theringcrate in Fedora, affected applications will likely have to be dropped.Should we continue to enforce this restriction for Red Hat's benefit? I'm of the mind that this one probably should go away unless there are some resources committed to make it feasible to maintain.
I'm open to making a FESCo exception to this policy for aws-lc unless there's a legitimate RH legal/compliance reason that we can't.
@ngompa wrote in #3624 (comment):
This statement is absolutely inaccurate, and frankly slandering to the people that work on this stuff.
The crypto team wants to protect Fedora and its users, and have a system that work as a whole, not a hodgepodge of 300 different applications all doing their worst at choosing what algorithms are ok or not to use in a system.
That is why we created crypto-polciies and maintain the ca-certificate store among other things.
FESCo can decide that th security and safety of Fedora users is not that important, and go ahead and allow bad crypto libraries in the distribution, it is not my call, but it is not acceptable to paint our work as only beneficial to Red Hat somehow.
As I understand it, the current solution for Rust packages that use rustls is the ring cryptography backend which also bundles boringcrypto but is described as experimental software and hasn't had a release in over a year and doesn't support PQC algorithms..
Is my understanding correct? If it is, allowing rust-aws-lc-sys seems decidedly better than keeping ring or retiring all the packages that use it until openssl is supported.
@simo wrote in #3624 (comment):
Right now the status quo is decidedly worse. We are shipping an unmaintained crypto library that also uses BoringSSL. Multiple upstreams do not want to use the OpenSSL library, so we are stuck between a rock and a hard place. You don't want to engage with those upstreams, and we can't not have these things. Even
cryptographyfrom Python is no longer actively supporting OpenSSL.I am of the opinion we shouldn't have any more of these things, but I wish people had picked crypto libraries with better APIs, like GnuTLS, instead of OpenSSL as the "default". But they didn't, and here we are. At this point AWS-LC is the best of the bad bunch.
@gotmax23 wrote in #3624 (comment):
Yes if the choice is between ring and aws-lc, aws-lc is orders of magnitudes more desirable and I would support an exception to get rid f ring
We will also need aws-lc for python-cryptography too, because no PQC work is being done by PyCA using OpenSSL.
@ngompa wrote in #3624 (comment):
APIs are secondary, what matter is the cryptography library has solid cryptography, and although my team maintain both so I do not pick favorite children, openssl has less problematic CVEs than GnuTLS and a wider ecosystem...
@ngompa wrote in #3624 (comment):
we definitely do not need aws-lc for python-cryptography, it works well with openssl and integrates correctly with the rest of the system through it.
Aws-lc should be confined to those rust packages that are welded to it.
@simo wrote in #3624 (comment):
I disagree there. APIs are more important, because they are what guarantee adoption. If the APIs are good, developers will use it, and the crypto being good or bad basically does not matter in the face of that. Good APIs and good crypto is the holy grail, and somehow we got OpenSSL instead...
[comment deleted because not appropriate, apologies]
This was discussed during Tuesday's FESCo meeting.
The following proposal was approved (see meeting log at 17:36:31).
The documentation is now updated:
packaging/guidelines#1555