[Servercert-wg] Compromised/Weak Keys Ballot Proposal

Clint Wilson clintw at apple.com
Thu Apr 11 16:11:40 UTC 2024


Hi Wayne,

Agreed, your proposal [1] is basically what I was describing; I only added that it would be useful, in my mind, to add a repository usable by Certificate Issuers (but not required to be used) similar to what we’ve provided for ROCA and Close Primes.

However, based on the discussion today, I think both of the below sets of changes make sense to me, though I sensed consensus on the call leaning towards the first set of changes. Set 2 is intended to be the same as what I previously described in Option 2.

I believe the only clarification I’ve added in Set 1, beyond what Aaron and Tim discussed, is the addition of a requirement for key sizes other than those specifically represented in a known complete (at this time) repository of Debian weak keys for common key sizes. At least, that was my only intentional addition, so if the described set of changes don’t otherwise align with the proposal represented in Aaron and Tim’s discussion, please let me know. 
In other words, I believe it satisfactory to establish a constrained set of Debian weak keys which CAs must block (rather than leaving the requirement fully open-ended), but I don’t believe that should obviate the need for a CA to check uncommon key sizes — which are otherwise in the key size ranges of that constrained set’s key sizes — should a CA allow those uncommon key sizes. 

I want to further clarify that I do expect any such repository representing this constrained set of Debian weak keys to be updated in the future if some meaningful change is identified to Debian weak keys generated in the included key size ranges, but this approach would allow that to be a structured process within the CA/BF, rather than some “surprise, here’s a random def con preso; block all the keys it describes as being possible to generate yesterday please” situation as we could otherwise (and currently) encounter.

Set 1:
1) Create a CA/BF repo with presently known Debian weak keys for the key sizes RSA 2048, 3072, 4096, 8192; ECC 256, 384, 521 (the repo Rob pointed to seems the most complete from what I’ve seen, but no particularly strong opinions here)
2) Update TBRs: For RSA key sizes or smaller than 8193 bits and ECC key sizes smaller than 522 bits, CAs must not issue certificates containing Debian weak keys
3) Update TBRs: Include a reference to the above CA/BF repo as the set of Debian weak keys which meet the requirement of 2) specifically for the key sizes RSA 2048, 3072, 4096, 8192; ECC 256, 384, 521 included in that repo
4) Update TBRs: Add an explanatory note clarifying that if a CA allows for issuance of certificates other than RSA 2048, 3072, 4096, 8192; ECC 256, 384, 521, the CA must ensure certificates containing any other key size do not contain a Debian weak key

Set 2:
1) Create a CA/BF repo with presently known Debian weak keys for the key sizes RSA 2048, 3072, 4096, 8192; ECC 256, 384, 521
2) Update TBRs: For RSA key sizes smaller than 8193 bits and ECC key sizes smaller than 522 bits, CAs must not issue certificates containing Debian weak keys
3) Update TBRs: Include a reference to the above CA/BF repo as an optional resource for CAs to use in checking for Debian weak keys

I hope I’m contributing something useful to this discussion; please reach out if I could do better here.

Thank you!
-Clint

[1] https://github.com/wthayer/servercert/pull/1/files

> On Apr 10, 2024, at 11:51 AM, Wayne Thayer <wthayer at gmail.com> wrote:
> 
> Hi Clint,
> 
> I think my latest proposal [1] is essentially what you are proposing in option #2, the only difference being that we would add repositories containing weak keys to https://cabforum.org/resources/tools/ (and we can do that without a ballot). If you are instead proposing that we require CAs to check for a specified weak keys contained in one or more repositories, then that is similar to Aaron's proposal except that I understand you want to require CAs to also check for weak keys even if they sign non-standard key sizes that are not included in the repository of weak keys.
> 
> The more I think about the two approaches, the more I prefer my current proposal [1] that does not require CAs to check for specific keys found in one or more repositories. The reason is that I believe CAs already have Debian weak key checks in place and would likely prefer not to have to change their systems to use different logic/data to meet the same requirement as before.
> 
> Thanks,
> 
> Wayne
> 
> [1] https://github.com/wthayer/servercert/pull/1/files
> 
> 
> 
> On Tue, Apr 9, 2024 at 2:26 PM Clint Wilson <clintw at apple.com <mailto:clintw at apple.com>> wrote:
>> Hi Wayne,
>> 
>> I think this does seem like it could be a tractable solution, however I’d like to understand why one of the proposals I’ve brought up a couple times on the calls isn’t also a suitable option. From what I can gather, they’re nearly identical in practical impact, but one provides a much more defined boundary for relying parties. 
>> 
>> Option 1:
>> The CA/BF creates or mirrors a repository of pre-computed Debian Weak keys for the following key sizes (representing those most commonly issued against): RSA 2048, 3072, 4096, 8192; ECC 256, 384, 521. The TBRs stipulate that CAs must not issue certificates containing keys in this repository.
>> 
>> Option 2:
>> The CA/BF creates or mirrors a repository of pre-computed Debian Weak keys for the following key sizes (representing those most commonly issued against): RSA 2048, 3072, 4096, 8192; ECC 256, 384, 521. The TBRs stipulate that CAs must not issue certificates containing weak keys, with a pointer to the repository of the most common key sizes of Debian Weak keys among other similar/relevant pointers for other vulnerabilities.
>> 
>> The reason these 2 proposals are so nearly identical in practice is that there are only a very tiny number of certificates issued against key sizes that are not RSA 2048, 3072, 4096, or 8192; or ECC 256, 384, or 521. By my count, somewhere around 80 certificates out of roughly 750 million (though I really only took a quick glance, so perhaps this is off to an extent… but probably not by huge quantities).
>> 
>> Under Option 2, if a CA wants to allow for Certificate requests containing a key size other than these 7, they’re fully free to do so; they must merely ensure the key is not a Debian Weak key. For every other CA, they can limit the accepted key sizes to those in the repository and the result is functionally the same as Option 1, but without the possibility of “certificates can be issued that are weak and CAs are under no obligation to prevent that if it’s not one of 7 key sizes”.
>> 
>> Concretely, is there a reason Option 2 is intractable for CAs? If so, I would greatly appreciate help understanding how that approach meaningfully differs from Option 1.
>> 
>> Thanks,
>> -Clint
>> 
>>> On Apr 9, 2024, at 11:43 AM, Rob Stradling via Servercert-wg <servercert-wg at cabforum.org <mailto:servercert-wg at cabforum.org>> wrote:
>>> 
>>> > * Aaron Gable commented in the PR with a suggestion that we require CAs to reject any key found in Hanno Bock's repository at https://github.com/badkeys/debianopenssl. This includes RSA 1024/2048/3072/4096 and EC P256/P384 keys.
>>> 
>>> Some of the EC key files in Hanno's repository have ASN.1 encoding issues (see https://www.mail-archive.com/dev-security-policy@mozilla.org/msg00911.html); whereas the equivalent files inhttps://github.com/CVE-2008-0166/private_keys are correctly encoded.
>>> 
>>> > * Roman Fischer suggested that we limit the requirement to check Debian weak keys only with sizes up to RSA 4096 under the logic that no one would “accidentally” create an 8192 bit RSA key on a system vulnerable to Debian Weak keys
>>> 
>>> FWIW, https://github.com/CVE-2008-0166/private_keys already has all of the possible 8192-bit RSA Debian weak keys.
>>> 
>>> From: Servercert-wg <servercert-wg-bounces at cabforum.org <mailto:servercert-wg-bounces at cabforum.org>> on behalf of Wayne Thayer via Servercert-wg <servercert-wg at cabforum.org <mailto:servercert-wg at cabforum.org>>
>>> Sent: 05 April 2024 23:47
>>> To: CA/B Forum Server Certificate WG Public Discussion List <servercert-wg at cabforum.org <mailto:servercert-wg at cabforum.org>>
>>> Subject: Re: [Servercert-wg] Compromised/Weak Keys Ballot Proposal
>>>  
>>> CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
>>> 
>>> Two new alternatives have been proposed in addition to the one I proposed below:
>>> 
>>> * Aaron Gable commented in the PR with a suggestion that we require CAs to reject any key found in Hanno Bock's repository athttps://github.com/badkeys/debianopenssl. This includes RSA 1024/2048/3072/4096 and EC P256/P384 keys. We might prefer to reference a clone in the CAB Forum GitHub org (or some other source of the actual generated weak keys) but that's a detail we can work out if others like this approach.
>>> * Roman Fischer suggested that we limit the requirement to check Debian weak keys only with sizes up to RSA 4096 under the logic that no one would “accidentally” create an 8192 bit RSA key on a system vulnerable to Debian Weak keys
>>> 
>>> Each of these methods has the benefit of adding clarity to the Debian requirement rather than just maintaining the existing language, but they also [arguably] allow CAs to issue certs containing abnormally sized Debian weak keys.
>>> 
>>> I would like to hear from other members (especially Apple) if you prefer or object to either of these alternatives?
>>> 
>>> Thanks,
>>> 
>>> Wayne
>>> 
>>> On Thu, Mar 28, 2024 at 4:13 PM Wayne Thayer via Servercert-wg <servercert-wg at cabforum.org <mailto:servercert-wg at cabforum.org>> wrote:
>>> There was further discussion of this ballot proposal on today's teleconference. It was suggested that rather than omitting any reference to Debian weak keys, the ballot should retain the current language. Unfortunately, the ballot restructures the language in such a way that this is challenging. My new proposal is that TLS BR Section 6.1.1.3(5) be updated to read as follows (https://github.com/wthayer/servercert/pull/1/files):
>>> =====
>>> 5. The Public Key corresponds to an industry-demonstrated weak Private Key. For requests submitted on or after November 15, 2024, at least the following precautions SHALL be implemented:
>>>     1. The CA SHALL reject Debian weak keys (https://wiki.debian.org/SSLkeys).
>>>     2. In the case of ROCA vulnerability, the CA SHALL reject keys identified by the tools available at https://github.com/crocs-muni/roca or equivalent.
>>>     3. In the case of Close Primes vulnerability (https://fermatattack.secvuln.info/), the CA SHALL reject weak keys which can be factored within 100 rounds using Fermat’s factorization method.  
>>> 
>>>     Suggested tools for checking for weak keys can be found here: https://cabforum.org/resources/tools/
>>> =====
>>> I would greatly appreciate feedback from any member that finds this language unacceptable, or that has suggestions to improve it.
>>> 
>>> Thanks,
>>> 
>>> Wayne
>>> 
>>> 
>>> On Fri, Mar 15, 2024 at 11:19 AM Wayne Thayer via Servercert-wg <servercert-wg at cabforum.org <mailto:servercert-wg at cabforum.org>> wrote:
>>> On yesterday's SCWG teleconference, Mads suggested that a way forward would be to leave the existing requirements in place for Debian weak keys. I've interpreted that to mean that we would just remove references to Debian, resulting in this: https://github.com/wthayer/servercert/pull/1/files
>>> 
>>> I'm not satisfied by this approach because it doesn't achieve the clarity intended to result from the original weak keys ballot and will seemingly result in CAs continuing to have varying interpretations of the specific requirements for rejecting Debian weak keys, but perhaps this is the best we can all agree to.
>>> 
>>> What  do others think? Should we proceed with this approach?
>>> 
>>> Thanks,
>>> 
>>> Wayne
>>> 
>>> On Sat, Mar 9, 2024 at 9:15 AM Dimitris Zacharopoulos (HARICA) via Servercert-wg <servercert-wg at cabforum.org <mailto:servercert-wg at cabforum.org>> wrote:
>>> FWIW, I think in the recent years, it was mostly security researchers that attempted to request certificates with Debian weak keys to test if a CA was properly blocking them.
>>> 
>>> If an Applicant uses an outdated OS that generates weak keys, imagine the actual web server or other software that runs on that server, putting Relying Parties at risk. CAs don't have control over that but they could have control over a common set of weak keys using common parameters/algorithms which could be enforced by all CAs.
>>> 
>>> Dimitris.
>>> 
>>> On 9/3/2024 12:05 π.μ., Wayne Thayer via Servercert-wg wrote:
>>> Hi Clint,
>>> 
>>> Thank you for your response. Unfortunately, it leads me to the conclusion that there is not a path forward and we're stuck with the status quo. Having said that, I'll reply to a few of your points below and encourage others to do the same if there is a desire to move forward with an update to our weak keys requirements.
>>> 
>>> On Thu, Mar 7, 2024 at 12:59 AM Clint Wilson <clintw at apple.com <mailto:clintw at apple.com>> wrote:
>>> Hi Wayne,
>>> 
>>> Thank you for carrying this work item forward. I have a few concerns regarding the proposed removal of Debian weak key checking, outlined below.
>>> 
>>> I don’t believe there has been sufficient explanation or data presented to justify the removal of the requirement to check for Debian weak keys. It seems to me there are feasible methods for CAs to continue performing this check. Similar to what Martijn has pointed out, the reasoning provided is lacking (hasty generalization, fallacy of composition, etc.).
>>> 
>>> The argument that I find compelling is that any system capable of generating a Debian weak key in 2024 is also riddled with a decade of vulnerabilities, so preventing the use of said weak key in a certificate is security theater. In what scenario do you envision the rejection of a Debian weak key having a meaningful impact on the security of a service that relies on it? It's just not obvious to me that these checks continue to provide any practical value at this point in time.
>>>  
>>> I don’t believe a compromise where Debian weak keys only need be checked for specific key sizes addresses the core issue, unless tied together with a restriction from accepting key sizes which are not included in such a list (which I do see as reasonable and something I’m under the impression is already being done by some CAs).
>>> 
>>> My understanding is that the objections some CAs had to the original ballot was the requirement to maintain a sizable database of Debian weak keys for every key size they support. Limiting the requirement to the most popular key sizes would resolve that issue and be more inline with my understanding of some current practices. This approach would also greatly reduce the threat of the accidental use of a Debian weak key.
>>>  
>>> The removal of this check seems to shift a burden currently placed on CAs to a risk (long assumed resolved) for Relying Parties and Subscribers. From my reading of the ballot, the requirement that a CA revoke Certificates with Debian weak keys remains in effect, serving only to remove the pre-issuance “blocking” requirement, but retaining an expectation that certificates are checked post-issuance based on the CA’s awareness of this method of compromising a Private Key; this generally seems a significantly worse experience for Subscribers. Have I missed something regarding the intent of the changes in this regard?
>>> 
>>> This is a great point. It makes no sense to allow a CA to issue a cert that is then immediately subject to a revocation requirement. I am open to either exempting Debian weak keys from BR 4.9.1.1(4) or for CAs to be required to revoke a certificate containing a Debian weak key only if they are "made aware" using the mechanism specified in 4.9.3.
>>> 
>>> Thanks,
>>> 
>>> Wayne
>>> 
>>> 
>>> There have been incidents involving certificates issued to Debian weak keys in recent years; some CAs have indicated that they don’t receive Debian weak keys in requests, but evidence exists to the contrary for the ecosystem as a whole.
>>> 
>>> Thank you!
>>> -Clint
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> Servercert-wg mailing list
>>> Servercert-wg at cabforum.org <mailto:Servercert-wg at cabforum.org>
>>> https://lists.cabforum.org/mailman/listinfo/servercert-wg
>>> 
>>> _______________________________________________
>>> Servercert-wg mailing list
>>> Servercert-wg at cabforum.org <mailto:Servercert-wg at cabforum.org>
>>> https://lists.cabforum.org/mailman/listinfo/servercert-wg
>>> _______________________________________________
>>> Servercert-wg mailing list
>>> Servercert-wg at cabforum.org <mailto:Servercert-wg at cabforum.org>
>>> https://lists.cabforum.org/mailman/listinfo/servercert-wg
>>> _______________________________________________
>>> Servercert-wg mailing list
>>> Servercert-wg at cabforum.org <mailto:Servercert-wg at cabforum.org>
>>> https://lists.cabforum.org/mailman/listinfo/servercert-wg
>>> _______________________________________________
>>> Servercert-wg mailing list
>>> Servercert-wg at cabforum.org <mailto:Servercert-wg at cabforum.org>
>>> https://lists.cabforum.org/mailman/listinfo/servercert-wg
>> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cabforum.org/pipermail/servercert-wg/attachments/20240411/f89b521c/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3621 bytes
Desc: not available
URL: <http://lists.cabforum.org/pipermail/servercert-wg/attachments/20240411/f89b521c/attachment-0001.p7s>


More information about the Servercert-wg mailing list