-
Notifications
You must be signed in to change notification settings - Fork 18k
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
crypto/tls: boringcrypto restricts RSA key sizes to 2048 and 3072 #41147
Comments
@agl, it looks like there's a good argument for NIST having clarified they'll take 4096. Should we allow it? |
This would be great to be included. Today, we're having to manually apply a patch to that line of code. |
Having looked into this, it doesn't appear that allowing other modulus sizes is strictly compliant with the current validation. However, future validations can be updated to take advantage of the increased flexibility now allowed by the IG. We expect to do this, but have no timelines to announce and do not currently have a revalidation in progress. |
It's 2021 now, any update on when we can get 4096bit validated? |
It's 2022 now. Any update on when we can get 4096 bits validated? |
It's been nearly a year since we did a new validation that includes RSA 4096. I'm afraid NIST can take as long as they take—we've no ability to speed up their processing. |
Per closed duplicate #53755:
Let me know if this is agreeable and I can open a PR. (TL;DR: Leidos confirmed any key size |
@cipherboy that's great news! please keep us updated on which go version this can be merged into, so that we can stop using our fork of boringcrypto :) |
@agl as the resident FIPS person, do you have an opinion on this? |
Awesome to hear that we might be able to use 4096 bit RSA keys! |
So with what @cipherboy wrote, can a fix be added to version 1.20? |
hi, will this be added to 1.20? I see #53755 has milestone go1.20 but this one hasn't |
Based on the discussion on this issue, no decision has been made yet. |
@agl / @ianlancetaylor / @rolandshoemaker - Feel free to drop me a mail at my work email ( |
Reading through this issue I'm confused if the sticking point is:
I understand a few people have asserted that (1) is allowed and that is my understanding as well. So it would seem that it's about (2) but wanted to verify that is where the issue is sitting at. Or possible (3) just not the right resource trade off right now 😄 |
@jaredpar My statement above from our lab states not only that 1 is allowed, but 2 is as well. I've offered to put the Go team in touch with this lab if they desire to validate this, but gotten no inquiries. And I've also volunteered to submit a patch fixing this issue. I believe the issue is thus 3, resource tradeoff and are likely busy with other higher priorities (purely speculation here, but perhaps they're considering a newer BC cert that might invalidate 2 due to omission of certifying higher RSA key sizes under later FIPS 140-2 IG)... But not working on the Go team, your guess is as good as mine. |
Talked to @agl about this. I will send a CL for Go 1.20. |
Change https://go.dev/cl/447655 mentions this issue: |
Thank you @rsc! |
@gopherbot please backport |
Backport issue(s) opened: #56671 (for 1.18), #56672 (for 1.19). Remember to create the cherry-pick CL(s) as soon as the patch is submitted to master, according to https://go.dev/wiki/MinorReleases. |
Only needs Go 1.19; closed the Go 1.18 backport. |
Change https://go.dev/cl/449016 mentions this issue: |
Change https://go.dev/cl/449639 mentions this issue: |
…bit keys FIPS-140 has been updated to allow 4096-bit RSA keys. Allow them in certificate processing. This is the Go 1.18 boringcrypto branch version of CL 447655. Not a straight cherry-pick, because the code in the boringcrypto branch is different from the code that merged into the main branch. Fixes #41147 for the Go 1.18 boringcrypto branch. Change-Id: Iae8a6406a2885e6546df2c28c1791c19cfafb6b5 Reviewed-on: https://go-review.googlesource.com/c/go/+/449639 Run-TryBot: Russ Cox <[email protected]> TryBot-Result: Gopher Robot <[email protected]> Reviewed-by: Roland Shoemaker <[email protected]>
…it keys FIPS-140 has been updated to allow 4096-bit RSA keys. Allow them in certificate processing. For #41147. Fixes #56672. Change-Id: I4c6bcb1b137a200dfe70cebc605ae57f49871184 Reviewed-on: https://go-review.googlesource.com/c/go/+/447655 Run-TryBot: Russ Cox <[email protected]> TryBot-Result: Gopher Robot <[email protected]> Auto-Submit: Russ Cox <[email protected]> Reviewed-by: Roland Shoemaker <[email protected]> Reviewed-on: https://go-review.googlesource.com/c/go/+/449016
…it keys FIPS-140 has been updated to allow 4096-bit RSA keys. Allow them in certificate processing. For golang#41147. Fixes golang#56672. Change-Id: I4c6bcb1b137a200dfe70cebc605ae57f49871184 Reviewed-on: https://go-review.googlesource.com/c/go/+/447655 Run-TryBot: Russ Cox <[email protected]> TryBot-Result: Gopher Robot <[email protected]> Auto-Submit: Russ Cox <[email protected]> Reviewed-by: Roland Shoemaker <[email protected]> Reviewed-on: https://go-review.googlesource.com/c/go/+/449016
Is there a reason why the IsBoringCertificate() check would not allow RSA key sizes > 3072 ?
Specifically, I am trying to establish a TLS connection to a corporate server that has an intermediate CA whose key size is 4096 and it throws:
tls handshake failed: x509: certificate specifies an incompatible key usage
Seems like this was recently discussed in golang-nuts ( https://groups.google.com/g/golang-nuts/c/DbzPtRDtVgQ ) but i found no open issue here.
@FiloSottile
The text was updated successfully, but these errors were encountered: