ssh: raise the RSA modulus limit to 16384 bits
the fix for CVE-2026-39829 capped the accepted RSA modulus at 8192 bits, matching crypto/tls, to bound the CPU cost of verifying an attacker-supplied key. That rejected keys OpenSSH generates: ssh-keygen allows -b up to 16384. Raise the limit to 16384 so those keys interoperate, both in the public key parser and the OpenSSH private key parser, and correspondingly raise the prime-factor bound to 8192 bits (each prime is about half the modulus). The agent's checkRSAKeyParams is updated to match. Verifying a 16384-bit key costs roughly 3x an 8192-bit one. Fixes golang/go#80075 Change-Id: Ib08ddd7b48552e692c48dbdf105bbc8579120bbc Reviewed-on: https://go-review.googlesource.com/c/crypto/+/795421 LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Junyang Shao <shaojunyang@google.com> Reviewed-by: Filippo Valsorda <filippo@golang.org> Reviewed-by: David Chase <drchase@google.com>
This commit is contained in:
+2
-2
@@ -246,10 +246,10 @@ func setConstraints(key *AddedKey, constraintBytes []byte) error {
|
||||
// on arbitrary inputs; the CRT coefficient recomputation is cubic in
|
||||
// |p| and can consume excessive CPU on oversized keys.
|
||||
func checkRSAKeyParams(N, E, P, Q *big.Int) error {
|
||||
if N.BitLen() > 8192 {
|
||||
if N.BitLen() > 16384 {
|
||||
return errors.New("agent: RSA modulus too large")
|
||||
}
|
||||
if P.BitLen() > 4096 || Q.BitLen() > 4096 {
|
||||
if P.BitLen() > 8192 || Q.BitLen() > 8192 {
|
||||
return errors.New("agent: RSA prime too large")
|
||||
}
|
||||
if E.BitLen() > 24 {
|
||||
|
||||
Reference in New Issue
Block a user