[TLS] Re: WG Last Call: draft-ietf-tls-mlkem-08 (Ends 20 26-07-08) (was Re: Re: Response to CoI Complaints)

Stephen Farrell <[email protected]> Sat, 18 Jul 2026 18:18:06 +0100
Newsgroups gmane.ietf.tls
Message-ID <[email protected]>
Jacob,

I'm reluctantly contributing to this thread, but having quickly
scanned the message below I didn't see any new information amongst
the far-too-many words. Such repetitive text isn't helpful IMO, no
matter what opinion one has of the relevant draft. I suspect that
the level of repetition here is more likely to damage your case
then not. (And a few people here at the IETF hackathon have also
expressed that view to me fwiw.)

Cheers,
S.

On 18/07/2026 15:48, Jacob Appelbaum wrote:
> Hi Nico,
> 
> On 7/17/26 07:35, Nico Williams wrote:
>  > On Fri, Jul 17, 2026 at 12:52:05AM +0200, Jacob Appelbaum wrote:
>>> On 7/16/26 21:57, Nico Williams wrote:
>>>
>>>> The objective answer is that the horse left the barn two decades
>>>> ago when the IETF decided to get out of fighting about national
>>>> cryptographic standards, therefore Deb's 37 years at the NSA are
>>>> irrelevant in this case, and you're fighting the wrong battle if
>>>> you want to change that two-decade-old decision.
>>>
>>> That is not correct and the ISE could easily publish the drafts under 
>>> discussion without consensus as Rob suggested more than a week ago.
>>
>> Has that not been opposed too? / The relevant decision-makers would be 
>> the authors and the Independent Submission Editor. I have not seen a 
>> definitive objection from either, and I understood Eliot to be open to 
>> considering the idea.
>>
>> Would that not be opposed too? It could certainly be opposed. What 
>> kind of opposition do you mean?
> 
> Rob's (it was Rob, right?) suggestion appears to be a viable fallback.
> The Independent Stream does not require IETF rough consensus, although
> it is not an automatic bypass: the authors and ISE would have to pursue
> it, and the IESG would still conduct the RFC 5742 conflict review
> [0][1]. I note that the authors have largely not engaged in discussion.
> 
>> I swear I've seen arguments that users of RFCs don't really understand 
>> these subtle differences in track and editor queues,
>> that they take any RFC as a 'standard'.
> 
> Yes. Many readers treat any RFC number as a standard despite the stream
> boilerplate. That is a real drawback, but it is also why the distinction
> matters for _us_: Independent Stream publication would not assert IETF
> consensus. In practice, I suspect very few outside of the IETF would
> care about the distinction. It would allow us to provide clarity when
> the matter is raised.
> 
> I still prefer resolving the issues in the working group. I am not
> opposed to publication; I am trying to identify text that makes
> publication responsible.
> 
>>>> What you're really litigating is a social death penalty for the NSA 
>>>> -- something we *could* do, but shouldn't.  We really, really 
>>>> shouldn't do that for at least several reasons, such as:
>>>
>>> You may be surprised but I very strongly agree with you. We should
>>> not litigate a social death penalty. I do not advocate for removing 
>>> Deb from the IETF. No one should be harassing her. No one
>>> should be making threats. No one should be giving her a hard time.
>>> No one should be mocking her on social media. No one should be
>>> sending threatening or slanderous or libelous emails.
>>
>> It's not just the invectives against Deb.  It's also the invectives 
>> against the I-D authors and those who have voiced support for the I-
>> D.
> 
> I extend that to everyone: Deb, the authors, supporters, opponents,
> and other participants. We need more technical communication, not
> threats, harassment, ostracism, or censorship.
> 
> I have received several reports of troubling off-list conduct. That
> should be handled through the appropriate conduct process rather than
> mixed into the technical disposition of the drafts. It is unclear to me
> if those reports will by sent by those persons to the IETF out of
> (expressed to me) fear of retaliation.
> 
>> The incessant urging to not publish anything that might be tainted by 
>> the NSA *is* very much akin to a social death penalty for the NSA.
> 
> I do not oppose publication because NSA personnel were involved.
> 
> The immediate concern is a documented NIST design decision: FIPS 203
> removed Kyber's `m <- H(m)` step, whose stated purpose was protection
> against flawed randomness, because FIPS 203 requires approved randomness
> generation [2][3]. The question is whether IETF documents should repeat
> that assumption silently or not, describe and explain the peer-
> recoverable value, and preserve a cheap local safeguard for deployments
> that do not satisfy the full FIPS model.
> 
> It is indisputable that NIST removed the hash over `m`, ignored all
> pushback, ignored official comments on the matter, and unrelated to much
> of the discussion they then also declared that non FIPS-certified
> settings are expected to simply fail catastrophically if the RNG has an
> issue. So you see, removing the hash and qualatatively weakening the
> design of Kyber, they assert is fine. That they accept this outcome and
> state that they are correct was explictly stated by NIST on this very
> list. They additionally also push this without a hybrid construction,
> also over the express concerns of the authors of Kyber. Those two things
> together and my ability to exploit ML-KEM in the Dual_EC_DRBG setting
> correctly raise eyebrows.
> 
> NSA involvement is relevant historical context, but it is not a social
> veto. NIST is not the final technical authority for the IETF, any more
> than BSI, CSE, ETSI, ISO, IEEE, or a corporation would be. Former NIST
> people dropping by to argue that the world should adopt their public
> security posture is unreasonable. They have a traditionally had the
> Suite A and Suite B security postures and we're being offered the B
> option by another name, again. The IETF should have a stronger security
> posture and wihtout being in a FIPS-certified setting. The same
> scrutiny should apply to every source: examine the design, assumptions,
> evidence, and consequences for the end user.
> 
> The still-incomplete public record concerning NIST/NSA coordination and
> the answers given in this discussion make careful review more, not less,
> appropriate. I would also welcome explicit clarification of the IPR
> position, although the current drafts do not resolve it.
> 
> Comments that are not made by NIST have not brought clarity because any
> such analysis carries no weight about NIST's actual position. If NIST
> makes clear that we are free to hash `m` and retain the IPR waiver, we
> would be able to resolve the issue of excess authority preventing a
> stronger security posture, if it is desired. Do you see that they are
> unwilling to bring this clarity? If they were gagged as John Kelsey was,
> I would expect that bringing this clarity would be out of bounds. NIST
> is free to say otherwise and what they did say on the matter is
> contridicted by the public record. It could be credibly explained but
> NIST did not deem it worthy of their time.
> 
> The American cliché "good enough for government" is the phrase that 
> comes to mind here. Is that good enough for the IETF? No, it is not.
> 
>>> People should *especially* not be punished for the worst thing they 
>>> are suspected of doing, and especially if they did not do it.
>>>
>>> Even if they are guilty, they deserve a chance at redemption.
>>>
>>> Everyone deserves a fair shot at re-integration.
>>
>> For those who say TL;DR, the summary is that: IMO the ML-KEM I-D - and 
>> all I-Ds specifying KEMs- should normatively state which DRBGs are 
>> acceptable, and they should include informative text about the 
>> unfortunate risk of RNG-based kleptography when using KEMs outside DH 
>> hybrids.
> 
> I broadly agree, with the qualification if 'acceptable' is stated as a
> 'MUST' or a 'requirement imposed by NIST to achieve security' and that a
> hybrid does not help if both components depend on the same recovered RBG
> lineage.
> 
>> Ok then, here's my take:
>>
>> * Ideally we should have a practical, strong PQ Diffie-Hellman.  We do 
>> not. I agree in the strongest terms. Practical post-quantum 
>> constructions with genuine Diffie-Hellman-like contributory
>> behavior remain an important research goal.
> 
> MIKE seems interesting but I have not analyzed it, evaluated it, used an
> implementation in a deployment.
> 
> CTIDH is somewhat more familar to me and while there is literature that
> is relevant for the security in the quantum setting, I find it to be
> extremely promising.
> 
> CTIDH and related commutative group-action work are interesting in that
> respect. I help maintain an implementation released by an academic
> group, but I did not design CTIDH and make no claim that it is ready to
> replace standardized KEMs. In my own experimental use I combine it with
> X25519.
> 
> More generally, I would not deploy a comparatively young post-quantum
> construction without an independently generated classical component
> today. On balance I have decided that in at least two protocol withs no
> other PQC option available, a hybrid X25519 and CTIDH-512 or CTIDH-1024
> were better than X25519 alone. This protects against CTIDH failures
> today, and hedges against a future with quantum computers.
> 
>> * All KEMs are going to have this `m` problem in some fashion.  Is 
>> that a correct statement?  That makes all of them suitable for RNG- 
>> based kleptography. I do not think that all KEMs necessarily have the 
>> same problem. We need a precise property: can an adversarial recipient 
>> recover an unchanged, sufficiently large, ordered sample of the 
>> sender's RBG output?
> 
> ML-KEM clearly exposes that shape in the most risky way possible and it
> is unnecessary risk. To recap before we en-and-de-cap: `ML-KEM.Encaps`
> samples a 32-byte `m`, and a decapsulating peer that controls its
> implementation can retain the reconstructed `m'`. Third-round Kyber
> instead hashed `m` before using it [2][3]. Other KEMs and their uses
> have to be analyzed construction by construction; a ciphertext carrying
> a recoverable secret is not necessarily carrying raw generator bytes.
> 
> In addition to Kyber where everything is essentially equal except the
> hash in our discussion, sntrup761 is a useful contrast. It uses a
> structured fixed-weight ternary polynomial `r`, not a raw 32-byte `m`.
> In the reference sampler, many 32-bit random words are masked, sorted,
> and mapped into the ternary polynomial before `r` is used, and the
> shared key is derived by hashing its encoding [4]. The recipient can
> recover `r`, but `r` is not an unchanged contiguous generator block. The
> difference is extremely stark.
> 
> That does not prove immunity to every malicious or specially shaped
> RBG. It means only that the direct ML-KEM argument does not transfer
> unchanged. I made a preliminary attempt to recover a Dual_EC_DRBG block
> through this sampler and did not succeed. I would welcome a better
> analysis, especially from the sntrup761 authors: do you see a practical
> method for reconstructing a full Dual_EC output block from the existing
> fixed-weight sampler? The sntrup761 authors and implementations could
> also hash the RNG as Kyber did to make the comparison even easier.
> Regardless, NIST and a couple of other people may discuss the
> construction of `m` and KEMs in a way that would lead a reasonable
> person to believe a KEM always has this issue. However, it is simply not
> true. A KEM does not imply an `m`  must be composed of contiguous sample
> of the system RNG without transformation, otherwise. It is misleading
> and it is dangerous as I have shown with Dual_EC_DRBG as an example. In
> TLS this can lead to decryption of the connection, and future sessions.
> This is acceptable to NIST, and it should not be to the IETF.
> 
> This difference is one reason I remain comfortable with sntrup761x25519
> as a conservative OpenSSH option. The ML-KEM SSH exchange, like TLS,
> gives an unauthenticated client an opportunity to supply the
> encapsulation key and recover the server-generated `m` pre-auth; the
> actual risk still depends on the implementation's RBG, state separation,
> and generation order. This is a kind of landmine where it increases
> analysis work and where implementations may get it wrong. It is not the
> conservative choice that I would expect from the professionally prudent
> securtiy minds that brought us OpenBSD and OpenSSH.
> 
> It however entirely makes sense if OpenSSH needs to provide ML-KEM. I
> hope that they will ensure that `m` is hashed in practice but if not, it
> only further underscores why the NIST's decision process and their
> conclusion is unreasonable. OpenSSH is not only used in a FIPS-certified
> setting, and I highly doubt that NIST will promote the various DRBGs
> used by GNU/Linux, FreeBSD, NetBSD, and OpenBSD as qualified designs. I
> would welcome it as long as they did not impose unreasonable changes as
> they did with Kyber for `m` since those designs are what the world uses.
> 
>> For this reason I think we should have no RECOMMENDED=Y non-hybrid 
>> KEMs.  But I don't see why not have RECOMMENDED=N KEMs.
>> Interesting. I support hybrids as the conservative default, but the
>> hybrid label alone is not sufficient for this issue.
> 
> If the ML-KEM interaction permits recovery of an RBG state before the
> same state lineage generates the X25519 scalar, both components may be
> predictable. If the X25519 scalar was generated first and the RBG
> resists backtracking, that component may remain independent. Reseeding,
> per-connection state, buffering, and call order all matter.
> 
> A compact version of my current classification is therefore:
> 
> scheme       recoverable value            raw RBG block?
> ML-KEM       32-byte `m`                   yes
> Kyber r3     `H(m)`                        no
> sntrup761    fixed-weight ternary `r`      no
> 
> That table is deliberately narrow. I would not label every randomized
> signature, OAEP seed, DH exponent, or structured KEM secret as a "raw
> leak" merely because it depends on randomness; the transformation and
> recoverability must be analyzed. I have done most of that analysis on
> other IETF primitives but that is for a different email.
> 
>> * TLS 1.3 has insanely large nonces ('random'), and that's enough for 
>> RNG-based kleptography.
> 
> Agreed. TLS `Random` fields already create a broader public-output
> problem, and I regret not addressing it while TLS 1.3 was being written.
> I am preparing separate work on public and peer-recoverable RBG outputs
> across TLS, QUIC, MLS, SSH, IKE, and other protocols. That broader work
> should not prevent fixing an additional clean oracle now.
> 
>> therefore ML-KEM adds nothing much new *except* that when using a 
>> FIPS-140-3 validated module then ML-KEM can sneak a Dual_EC-style DRBG 
>> in through the back door even when the TLS 1.3 implementation would 
>> not otherwise use such a DRBG.
> 
> The word "except" is doing substantial work in your sentence. ML-KEM can
> expose an additional sample of the randomness used for secret generation
> even when an implementation separates or conditions other TLS-visible
> fields.
> 
> A successful sabotage mechanism should be reliable, economical, and
> plausibly deniable. The protocol should not make that job easier when a
> wire-compatible hash removes the direct structured sample.
> 
>> * We can insist that the choice of DRBG to use MUST be one of a set we 
>> approve of, and, impliedly, none of the ones we don't approve of.
>> Agreed in principle. We should state the actual requirement rather
>> than invent combined algorithm names. FIPS 203 requires fresh
>> randomness from an approved RBG, with the required security strength, 
>> under the SP 800-90 framework [2]. Hash_DRBG, HMAC_DRBG, and CTR_DRBG 
>> are the SP 800-90A mechanisms, but the requirement
>> also includes the entropy source and construction requirements in
>> SP 800-90B and SP 800-90C.
> 
> I would then state the separate `m` issue. The approved-RBG requirement
> is the primary layer; hashing `m` is a local layer that prevents this
> consumer from returning algebraically structured output to a peer when
> the primary assumption fails.
> 
> NIST and some of the IETF, such as myself, appear to have different risk
> tolerances on that point. NIST has publicly acknowledged the limited
> claim: hashing protected the KEM, while a broken RBG could still
> compromise the wider system. That is not an argument that the KEM-level
> protection has zero value but NIST agreeing that it has value, and that
> it is not valuable to _them_. Okay! I am glad that they did not present
> an attack as their original motivation to remove the hash. It is not a
> security issue to have the hash. It is good that we do not disagree on
> that point. The performance was also not a relevant concern. Their
> expressed concern is how they logically separate things in a FIPS-
> certified setting, and outside of that setting, they qualatiatively
> weakened the design and accept the consequences. This tells us their
> security posture, and it is less than the IETF should accept. These
> kinds of "logical" separations are how we had IPsec failures with
> Dual_EC_DRBG on the internet that allowed for full passive decryption
> through nonce leakage. This was reportedly exploited by the NSA and it
> is not in dispute. Juniper engineers probably deeply regret being
> tricked by that kind of mistaken protocol and implementation design.
> 
> The public record concerning NIST/NSA coordination is, and remains,
> incomplete. Materials produced through litigation appear relevant to
> statements made during this discussion. My understanding is that the
> litagion is ongoing and that production of documented related to NIST/
> NSA collaboration remains unfinished. I do not need to resolve that
> institutional history in this email. I do think NIST should answer
> concrete questions and publish enough of the record for independent
> evaluation. We could also wait for the lawsuit to finish but that is 
> likely to take a long time, so NIST could really help speed things up by 
> either stating their intention to 1) immediately and proactively produce 
> the documents in question and/or 2) directly engage here with the 
> understanding that if the documents later contridict them, they will be 
> on the hook. Both of those seem incredibly unlikely and that is why an 
> independent court has been involved to _force_ NIST to produce the facts.
> 
> Does it not concern you that the facts _already_ produced in that 
> lawsuit do not match the claims made by NIST on this very list?
> 
> If not, what would be the line for you? I ask so that when the lawsuit 
> is finished, we may do a proper retrospective analysis.
> 
>> The AES counter DRBG is plenty good enough. Which implementation?
> 
> CTR_DRBG can be a sound construction, but naming it does not guarantee a
> side-channel-resistant implementation. Cohney et al. demonstrated cache-
> based recovery against vulnerable table-based AES CTR_DRBG code in SGX,
> including state recovery, loss of forward security, and an end-to-end 
> TLS compromise [5]. This was an implementation attack, not a universal 
> break of CTR_DRBG. These kinds of failures are possible because NIST's 
> standards are below the security and the quality of the IETF's 
> standards. There are examples worth considering such as the constraints 
> described in NIST SP 800-90a.
> 
> The distinction matters. FIPS 197 specifies AES, but does not by itself
> require a constant-time implementation or test for secret-indexed table
> lookups. SP 800-90A specifies the DRBG construction, but cannot make a
> leaky AES implementation safe. Hardware instructions can reduce this
> particular risk, while introducing their own hardware and microcode
> assumptions. Would you believe that one of the findings in [5] as 
> presented in 2020 ( https://rwc.iacr.org/2020/slides/Cohney.pdf ) 
> included an OpenSSL FIPS module, the NetBSD kernel systemwide PRG (!), 
> mbedTLS _inside_ SGX, and also the nist_rng library. That includes a 
> FIPS-certified setting. Perhaps the FIPS-certified setting is not as 
> strong as the NIST advertising would have us believe?
> 
> NIST has not updated the corresponding standards in response to the 
> publication [5] as far as I am aware. I am happy to be corrected on this 
> point but if even NIST is able to get it right, maybe we should consider 
> this as a factor in their security posture?
> 
> I want to note as a matter of honesty that here, hashing `m` does not 
> save a system after the attacker has extracted the CTR_DRBG key; the 
> attacker can reproduce the hash. It does, however, address a different 
> failure class: algebraic structure in output that is otherwise handed 
> directly to the peer. Therefore the correct guidance is not "CTR_DRBG is 
> broken" or "the hash fixes everything." It is:
> 
> * exclude Dual_EC_DRBG and analogous structured generators;
> * require a securely implemented, prediction-resistant RBG;
> * require side-channel-resistant primitives and sound reseeding/state
>    management;
> * retain the local hash to avoid exporting raw structure;
> * even NIST's standards and certified FIPS modules get this wrong;
> * NIST updated their threat model in 2019;
> * NIST did not update the actual standards to require safe defaults!
> 
> The longer document should review Hash_DRBG, HMAC_DRBG, and CTR_DRBG,
> including side channels, fault attacks, entropy failure, reseeding, and
> state compromise, rather than treating an approved algorithm name as an
> implementation proof. The authors of [5] note that CTR_DRBG is not 
> provably secure, they note that Woodage and Shumow found problems with 
> HMAC_DRBG, and they encourage the use of Hash_DRBG.
> 
> Note that the authors in addition to the "Dual_EC Backdoor" they raise 
> the "Juniper Dual_EC Incident" they also raise the DUHK Attack on ANSI 
> X9.31.
> 
> So - lets recap that into some conclusions:
> - No: Dual_EC_DRBG (withdrawn (!))
> - No: CTR_DRBG (FIPS certifiable (!!) does not mean not exploitable)
> - No: HMAC_DRBG (see Woodage and Shumow's related work, and others)
> 
> Meanwhile, NIST says they are working on an updated SP 800-90A where 
> they announced a comment period ( https://csrc.nist.gov/pubs/sp/800/90/ 
> a/r2/iprd ) which closed in late 2025:
> 
>    Date Published: September 4, 2025
>    Comments Due: November 4, 2025 (public comment period is CLOSED)
> 
> Aside from the absurdly short comment period, NIST says that public 
> comments will be posted after the closing date. Nearly a year later, 
> that statement remains true as someday they may be posted. As of today, 
> the public comments have not been posted as far as I am aware.
> 
> Do you want to make a prediction about Hash_DRBG?
> 
>> This, however, may run into a problem where FIPS-140-3 validated 
>> cryptographic modules might not be configurable as to DRBG choice. 
>> However, it is enough to state this requirement.  We do not have a 
>> Protocol Police function.
> 
> Agreed. Accurately summarizing the NIST requirement and adding the
> right cross-references is sufficient for that part of the issue.
> 
>> * As long as there is one acceptable DRBG that can be selected, we can 
>> state a normative requirement and give useful advice regarding the 
>> dangers of RNG-based kleptography.
> 
> Agreed. I would list the approved constructions as examples, state
> the required properties, and explain the kleptographic failure mode.
> 
>> * I do suspect that all KEMs enable Dual_EC-style kleptography. And 
>> yet ML-KEM should be published.  Not because that's a good thing, but 
>> because -once more- the horse left the barn when the nonces (`Random`) 
>> were made more than large enough and when the codepoint registries 
>> were made Specification Required. I do not think the general 
>> conclusion about all KEMs follows, but I also do not think this is a 
>> reason to withhold ML-KEM indefinitely. My request concerns an 
>> avoidable, wire-compatible footgun and accurate
>> Security Considerations, not ML-KEM's lattice hardness assumptions.
> 
>> But also I'd have to see how recovering *one* `m` value would allow a 
>> kleptographer to steal *many* other clients' `m` values.
> 
> For Dual_EC_DRBG, the result depends on truncation and state
> management. With an untruncated 32-byte output, one `m` may be enough 
> for the trapdoor holder to recover the next state. With the standardized
> P-256 truncation, the attacker normally enumerates the missing bits and
> uses another output or other state information to identify the correct
> candidate [8]. Once a long-lived shared state is recovered, later
> outputs may be predicted until reseeding or separation defeats
> synchronization.
> 
> Or put simply: you draw 32 bytes from the sabotaged RNG, you transmit 
> it, you then draw 32 more bytes.
> 
> An adversary with the Dual_EC_DRBG trapdoor/secretkey(s) that receives 
> your first 32 bytes is able to predict the 32 bytes of the second draw, 
> even if you do not send them.
> 
> Would you like me to send you an implementation of this where you 
> control the trapdoor/secretkey(s)?
> 
>> * The large size of `Random` is still problematic.
> 
> Agreed. I call these public or peer-recoverable wire oracles. TLS 1.1,
> 1.2, and 1.3 all expose large `Random` fields, and other protocols can 
> inherit related risks through TLS or their own public randomness.
> 
> My broader survey remains preliminary because implementation choices,
> state sharing, sequencing, and authentication phase change the answer.
> If this attack class is deployed, however, the strategic value for mass
> collection and real-time decryption could be substantial.
> 
>> [Heavy trimming follows.]
> 
> Thank you for tolerating my verbosity. I will try to return the favor.
> 
>>>> * If the NSA wants to get burned again by playing the Dual_EC game 
>>>> again, let them!
>>>
>>> This is frankly, reckless. We should not be used unwittingly or be
>>> party to such folly.
>>
>> My personal advice: sometimes that is the smart play -- if you never
>> engage in tactical retreats thus badly losing some battles, you'll
>> exhaust yourself and lose the war.
> 
> I take the advice. My claim here is bounded: we should learn from
> Dual_EC_DRBG and treat it as the canonical public example of strategic
> cryptographic sabotage. The tactical compromise I can support is to
> publish after adding accurate RBG requirements and the `m` guidance,
> while moving the larger analysis to separate work.
> 
> I am exhausted, but that is another reason to turn the dispute into
> specific text rather than continue repeating it.
> 
>>>> * The NSA is not likely the monolith a social death penalty for it 
>>>> would have to presume.
>>>
>>> I do not understand this point but I agree that the NSA is not a 
>>> monolith. Part of asking the questions that I asked is that there are 
>>> NSA people I have directly spoken to who answered almost all of those 
>>> questions without a problem. I am not only talking about 
>>> whistleblowers but people whose job never involved cryptographic 
>>> sabotage.
>>
>> But you and/or others in these threads are treating all involved with 
>> NSA in regards to ML-KEM as monolithically motivated by the same 
>> interest in kleptography.  That amounts to treating the NSA as a 
>> monolith.  "It's supported by NSA pEoPlE!!" is basically the backup 
>> singers' line.
> 
> Thank you for clarifying. I do not infer a common motive from NSA
> affiliation, nor do I want an institutional blacklist. I would apply the
> same skepticism to Edward Snowden, Bill Binney, Thomas Drake, an NSA
> engineer, a NIST employee, a defense contractor, or an independent
> academic: examine what they propose, what assumptions they bring, how
> they answer questions, and what outcomes their position produces. Most 
> of all, I would want to examine their security posture.
> 
> Institutional background can still be relevant without making the
> institution a monolith. People with access to classified systems may
> know constraints or attacks that they cannot describe publicly. That can
> create blind spots even without malicious intent. Suite A is the obvious
> example: public reviewers cannot reason from secret knowledge they do 
> not possess, and a person who possesses it may be unable to explain why 
> or even _that_ a public design is unsafe.
> 
> Furthermore, they may feel that even if they _could_ do so, they do not 
> agree with thwarting large-scale adversaries if it would thwart their 
> favorite, civil-liberties respecting, honest, law-abiding, large-scale 
> adversary... who they consider more as a friend in any case.
> 
> The solution is not personal exclusion. It is transparent threat models,
> conflict disclosure where applicable, independent review, explicit
> assumptions, and technical mitigations that do not depend on trusting a
> person's institutional role. It is also important to look at the 
> results. NIST's modified Kyber grants a cryptographic oracle in over a 
> dozen protocols where the protocols are layered.
> 
> Example: your Signal client uses ML-KEM in TLS, and again in the Signal 
> e2ee ratchet. Neither are required to be FIPS-certified, to put it mildly.
> 
> My own principle is simple: I will not support cryptographic sabotage or
> an accommodation designed to preserve it or that allows for it as an 
> acceptable consequence of an imposed change against the express wishes 
> of the cryptographic primitive's designer(s). I will support technically
> sound protections even when they protect people or institutions hostile
> to me. RFC 7258 says pervasive monitoring is an attack; the relevant 
> IETF value is to reduce harm to the end user [12].
> 
>>>> * There is no technical content regarding ML-KEM to back this up.
>>>
>>> I could easily believe that you were aware of these issues before the 
>>> discussions on this list. Were you?
>>
>> Some of them.
> 
> Agreed. As exhausting as it has been, the discussion has produced a
> clearer technical record and some real convergence.
>>> For example, were you aware that you could do this kind of thing, 
>>> including recovering `m`?
>>
>> I believe my earlier response (and the above) should make it clear 
>> that I am.  Above is a fuller treatment of this issue.
> 
> 
> Yes, now it is clearer. I was asking about before the discussion
> because the point is subtle and was absent from the drafts' Security
> Considerations and from several early responses. That suggests a gap in
> our protocol-analysis process worth fixing.
>>> Do you think that the removal of a hash function to enable it is not 
>>> "technical content" when that single design choice was made exactly 
>>> to counter this kind of thing?
>>
>> Not sufficient to stop publication.  Instead it is sufficient to argue 
>> that the choice of DRBG must be limited.
> 
> 
> Then we agree that it is technical content. I am not asking for 
> nonpublication as an end in itself. If the DRBG restriction includes the 
> reason for it, the recoverability of `m`, and the Appendix C.1 tradeoff, 
> we are close to agreement.
>>> Are you really buying the argument from NIST where they made it worse 
>>> and accept that as a fact, over what, ~300-1500 cycles?
>>
>> With a non-kleptographic DRBG it seems fine. 
> 
> Does that still hold with the cited research showing that the current 
> (not even including Dual_EC_DRBG!) NIST DRBG have non-trivial security 
> failures?
> 
> Does it concern you at all that a practical full state recovery over the 
> network against TLS was shown for CTR_DRBG in a FIPS-certified setting 
> and NIST has so far only updated their _threat model_? If the authors 
> did not catch that two month call for comments _five years later_, will 
> NIST even address these issues?
> 
> Regardless, as of now, it does not seem fine to me. Updating the threat 
> model is absolutely hilarious, I am sure that is very reassuring to 
> impacted parties.
> 
>> I agree that the risk of inserting a kleptographic DRBG is real, but 
>> not publishing is not
>> really a good answer.
> 
> 
> We agree that the kleptographic-RBG risk is real, and I agree that
> nonpublication is not the only answer.
> 
> I still would not call the unhashed design equally safe. It is
> qualitatively weaker than the same construction with one additional
> hash because it relies entirely on the RBG and its implementation. The
> hash was present specifically to tolerate one class of upstream failure.
> 
> CTR_DRBG illustrates the distinction between an algorithm and a deployed
> system. The Cohney et al. work used cache leakage in a vulnerable AES
> implementation to recover DRBG state and compromise TLS [5]. That does
> not show that CTR_DRBG is kleptographic, but it does show that "use an
> approved DRBG" is incomplete implementation guidance. Similar questions
> exist for Hash_DRBG and HMAC_DRBG. What the relevant research literature
> says about side channels, fault injection, entropy failure, reseeding, 
> (RNG) state compromise, and malicious implementation all deserve
> systematic analysis.
> 
> We should define the attack classes carefully. Young and Yung's SETUP
> model is a natural starting point for deliberate kleptography, while
> side-channel and fault attacks may belong in adjacent categories. The
> engineering response can still be systematic:
> 
> * write down each attack strategy and the required capabilities;
> * distinguish design, implementation, supply-chain, and compulsion
>    failures;
> * test whether each construction and implementation resists it;
> * record mitigations and residual risk; and
> * set a minimum profile for protocol use.
> 
> Hardware acceleration is not a magic boundary. AES instructions, RDRAND,
> and SHA extensions reduce some software-side channels but add
> assumptions about hardware, microcode, firmware signing, and update 
> channels. Those assumptions can fail through ordinary bugs or 
> sophisticated compromise.
> 
> The point is not that every extreme scenario is occurring; it is that
> protocol guidance should not confuse a standardized algorithm with an
> immutable, side-channel-free implementation. Also, IETF should not push 
> a standard that requires FIPS-certified setting as a general matter when 
> the general case was made weaker and imposed a new dependency to acheive 
> security: the FIPS-certified setting!
> 
> I have preliminary experiments in which an ML-KEM interaction supplies a
> useful observation point against a deliberately vulnerable table-based
> CTR_DRBG implementation. I do not present that as a general break or a
> finished result. The research from 2019/2020 still generally applies.
> 
> The immediate conclusion remains modest: require a defensible RBG,
> require secure implementation and state management, and hash `m` so this
> particular peer interface does not export raw structure. The longer-term
> work can determine what additional requirements are needed for each
> SP 800-90 construction.
> 
> Also just to restate the obvious: we are really discussing some text in 
> a text file that is _advice_ to implemnters who are not building in a 
> NIST-certified setting. Those implementers better understand the 
> situation and are required to diligently follow NIST's standards. Yes, 
> that still leads to certified implementations being broken in some cases 
> and that is _also_ NIST's problem, not the core concern that we face.
> 
>>>> There is only the 1DES key weakening and the Dual_EC adventure,
>>>
>>> This is not a fair or accurate accounting of the history. Even if you 
>>> skip the Clipper Chip, export cryptography and all related attacks in 
>>> SSL/TLS, and many other related matters, the issue of Dual_EC_DRBG 
>>> amazingly *still* ships today in one of the most popular Java 
>>> libraries in the world. It also ships ML-KEM. We agree about 1DES, of 
>>> course.
>>
>> Clipper was an overt attack on the public. There are at least two 
>> distinct issues.
> 
> Clipper was an overt policy attack, but policy opposition was not the
> whole story.
> 
>  From memory, Prof. Dr. Matt Blaze had to find a novel technical failure 
> in the Escrowed Encryption Standard: the 16-bit LEAF authentication 
> check could be searched so that a device retained strong Skipjack 
> encryption while bypassing the escrow mechanism [9]. This was not a 
> cryptanalytic break of Skipjack itself; it was a break of the key-escrow 
> protocol surrounding it. That distinction strengthens, rather than 
> weakens, the lesson that expert technical review can defeat a 
> government-mandated access design. Skipjack itself followed the 1DES 
> pattern with the 80-bit key and 64 bit block choices by the way.
> 
>> The 512-bit modular DH group precomputation thing was not a covert 
>> attack on the standards process.
> 
> It is not only about 512-bit DH, of course.
> 
> I understand the perspective that export controls and weak 512-bit 
> groups were not, by themselves, covert manipulation of the standards 
> process.
> 
> Noteworthy however is that "covert" depends on a lot of assumptions 
> about people's understanding of what certain technical framing means in 
> a given context. The GSM cryptographic weaknesses may well have been 
> understood by some telecom technician but most non-technical users of 
> the phones most certainly did not always understand.
> 
> They were nevertheless policy-created weaknesses whose practical 
> consequences were not understood by most users of products marketed as 
> secure. We should classify the history precisely without minimizing the 
> harm.
> 
>> Perhaps only Dual_EC was a covert attack on the standards process.
> 
> I do not think Dual_EC_DRBG exhausts the documented history of
> SIGINT enabling or weakened communications standards.
> 
> GSM is one example. TETRA is another important case: the secret TEA1 
> algorithm,  used in critical-communications systems, reduced an 
> advertised 80- bit key to 32 effective bits and was only publicly 
> understood after reverse engineering [10]. The researchers did not 
> establish who inserted the weakening or whether it was exploited, but 
> the result is directly relevant to how we evaluate secret or nationally
> constrained cryptographic designs. TETRA is highly relevant to European 
> security.
>> ML-KEM might be a covert attack, but not on the standards process 
>> because the codepoints were always going to be assigned, and of course 
>> we're discussing the possibility that ML-KEM is kleptography so much 
>> that everyone who needs to know that it could be, does.
> 
> The public, undeniable fact is that FIPS 203 removed the hash that
> Kyber said protected against flawed randomness [2][3]. I am not claiming
> that ML-KEM is itself a covert attack. I am saying that the change opens
> a direct hidden-structure failure mode and that an approved algorithm
> name does not eliminate implementation or side-channel risk and that is 
> when we are speaking about the FIPS-certified setting. Outside of that 
> NIST's change makes our lives harder which is not something that we are 
> required to accept and to pass on to others. The NetBSD kernel wide DRBG 
> CTR_DRBG example from [5] was impressive.
> 
>> Clipper being an overt attack, and ML-KEM maybe a covert attack, you
>> can see that Clipper would be easier to defeat -- the whole public
>> could see it.
> 
> Agreed: the removal is not covert. Appendix C.1 records it. The
> technical effect is also public: relative to third-round Kyber, ML-KEM
> no longer has that local safeguard against flawed randomness. Experts
> therefore have a responsibility to explain the tradeoff and the
> assumption that replaced it.
> 
>>>> And again, if your fears turn out to be true, then you win a big
>>>> prize: more egg on the NSA's face.
>>>
>>> This does not follow. It took over a decade for John Kelsey to come 
>>> out with his public apology tour. It only happened because one person 
>>> blew the whistle and essentially killed himself for us to know about it.
>>
>> But the egg landed on their face much earlier.  Apologies and non- 
>> apologies are merely the acknowledgement
> 
> Agreed that the reputational damage began earlier but it was also
> paid in disrespect to people who raised the findings as a concern.
> That pattern repeats here as a variation on the theme but this time,
> the attack may be a fact to some but now instead of being in doubt,
> it is dismissed as old news or as irrelevent or unexploitable, and so on.
> 
> The important point is not whether an institution eventually apologizes; 
> it is how long users remain exposed before the technical problem is 
> acknowledged and fixed. Shumow and Ferguson's 2007 rump-session 
> observation, and Blaze's Clipper work, are reminders that early warnings 
> deserve serious technical treatment.
>>>> Thus I don't think there is anything we can do regarding `m` other 
>>>> than give advice for non-FIPS implementations -- perhaps we should 
>>>> do that much,
>>>
>>> That sounds like the discussions have moved you!
>>
>> Then you might like the above.  Except you might not because it 
>> doesn't move the needle as much as you seem to want.
> 
> I will take the movement and thank you for several intense but useful
> days of discussion.
> 
>>>> but that seems like something TLS and IETF should say much more 
>>>> generally in a BCP rather than in each Internet protocol RFC that 
>>>> somehow needs RNGs.
>>>
>>> Or maybe, not? I guess I also agree with you that we need a draft 
>>> about the overall issue. Would you be interested in co-authoring such 
>>> a draft?
>>
>> I cannot easily co-author I-Ds [for reasons], not with celerity.  I 
>> can comment and suggest text.
> 
> Thank you. Comments and suggested text would be genuinely useful; I
> could take responsibility for an updated draft but I think the draft 
> authors should resolve the outstanding technical issues that they see as 
> valid. That tells us about the security posture that they wish to 
> advance in the IETF. That applies _equally_ to the hybrid and the pure 
> ML-KEM drafts.
> 
>>>> * You and others are destroying your credibility and good will 
>>>> towards yourselves and towards the IETF by really reaching in your 
>>>> arguments against ML-KEM.
>>>
>>> That is a fair point. [...]
>>
>> That sounds like the discussions have moved you as well :)
> 
> Yes. The discussion has moved me toward a narrower, more actionable
> position where now I see that NIST's current DRBG offerings are 
> _exceeding dangerous_ in the TLS context. Simply presenting them
> without qualification seriously misrepresents the risks as a general
> solution. I remain concerned that credibility and tone sometimes
> displace technical disposition, but I should also make my own arguments 
> easier to assess and harder to dismiss.
> 
>>> I observed an intense desire for conformity and harmonization in the 
>>> form of a popularity contest. There are a few people in the 
>>> discussion who broke through that wall. Quite a few people 
>>> demonstrated that when it came down to a factual point that they have 
>>> a duty to the truth. I personally respect that a lot more than the 
>>> parasocial shaming behavior and the foot dragging.
>>
>> Last October I was on DJB's side.  His pounding the table got me to 
>> abandon that side -- there were no real arguments other than "they've 
>> done it before" and "of course they'd do it again".  Now there's the 
>> `m` matter, and regarding that see the above.
> 
> The cases for and against pure PQC and hybrids are broader than those
> two slogans. I also understand why perceptions of repetitive or abrasive 
> presentation can cause readers to disengage. This is in part a big
> structural failing of the NIST process and it is a problem in the IETF
> as well.
> 
> At the same time, process cannot substitute reaction to style for a
> technical disposition. NIST's participation raised factual questions
> about the history and rationale of the change, and the answers did not
> resolve all of them. My earlier comments also waited years for a partial
> response. That history helps explain the frustration, although it does
> not excuse unnecessary heat from any participant.
> 
> I will focus this reply on the concrete convergence: define the RBG
> requirements, explain `m`, record the Kyber/FIPS change, and state the
> mitigation.
> 
>> I really want to emphasize that DJB's manner of argument is a 
>> tremendous turn-off.
> 
> 
> I hear you. It should not determine whether a reproducible technical
> claim is true. The working group needs both professional communication 
> and a process that tracks substantive objections to a clear disposition.
>>> We should still try to do good things for the betterment of all 
>>> people, even if they're unappreciative.
>>
>> Some people, when faced with a difficult war, choose a hill to die on, 
>> then die on it.  Others fight until it's time to retreat to live
>> to fight another day.  Martyrs don't win wars.
> I understand. The useful response is not martyrdom but converting the
> issue into durable text and reproducible work. While it remains in our
> power, we should endeavor to create that centered around the End User's 
> security. The End User that is not in the FIPS-certified setting 
> especially as NIST has the FIPS-certified setting covered. It does not 
> exactly inspire confidence that in the FIPS-certified setting the 
> certified CTR_DRBG could be exploited to remotely extract the CTR_DRBG 
> AES keys over a network through TLS. They have it covered alright! That 
> security posture is their choice.
> 
>>> This mistake by NIST should be undone in so much as we should not go 
>>> along with something when the research data shows that it is dangerous.
>>
>> Look at it from NIST's point of view: that hash merely extends the 
>> DRBG, and via FIPS they mandate DRBGs, so if the hash is important 
>> then it should be included in the DRBG or the DRBG should be designed 
>> so it's not needed because the DRBG is not necessary.
> 
> I understand that position. But a protocol-level hash is not merely
> "more DRBG." It enforces a property at a separate boundary: the peer
> receives `H(x)` rather than the DRBG output `x`. That matters precisely
> when the upstream RBG assumption fails, and not every TLS deployment is
> inside the FIPS validation model.
> 
>> Thus my [new] position is that we should limit the set of acceptable
>> DRBGs. 
> 
> We may agree on limiting acceptable RBGs if phrased as NIST's 
> requirements that must be imposed to acheive their notion of security.
> Because approved construction names do not by themselves guarantee a
> safe implementation, I would add implementation guidance here and
> develop the broader requirements in a separate document. I was shocked
> when I realized that the literature piles up but the FIPS standards do 
> not keep pace, rather the _threat model_ is updated! TLS should become 
> stronger and stronger as we learn new things, and the threat model 
> should become _stronger_ as adversary capabilities improve. The purpose 
> of TLS is to provide _security_ not a false sense of security, after all.
>>> Yes, I understand the criticism that this appears to be contrived 
>>> because you do not use /dev/hwrng or similar interfaces but I wonder 
>>> what would change your mind?
>>
>> The `m` issue did change my mind, as you noted.  Just not to the point 
>> of opposing publication.  Rather, I propose normatively limiting the 
>> choice of DRBGs to ones we believe are not kleptographic.
> 
> I do not oppose publication once the immediate issues are written down
> or referenced accurately.
> 
>>> For example, the Cavium SIGINT enabling - Cavium has a kernel driver 
>>> for their hwrng and it presents as /dev/hwrng which does not 
>>> transform the output. This kind of CPU is used in "security" devices.
>>>
>>> Please consider that NSA claims it as a SIGINT Enabling Success.
>>
>> If you have a TLA-in-the-box attack, you have bigger problems.  And by 
>> you I mean we, naturally.
> 
> My question is whether "if" is the right prior and what evidence would
> change it.
> 
> The Cavium reporting shows a knowledge-and-choice problem: users may 
> rely on hardware and firmware they cannot meaningfully audit, and 
> hardware RNG interfaces can feed operating-system entropy pools or be 
> consumed directly. A compromised source is a system-wide problem, but 
> that is not a reason to remove cheap local barriers at protocol 
> boundaries. The reason for the removal is not required for security and
> it re-introduces an entire class of security failures. Some large-scale 
> deployments could easily remove that hash and no one will know, so in my 
> view those kinds of deployments should not impose their extreme 
> privilege on the rest of us. Most people, unlike the large defense 
> contractors who mentioned hashing was going to impact their bottom line 
> or the environment, do not have thousands of engineers working from the 
> top to the bottom on their systems. Most people do not have absolute 
> confidence in their full computing systems, they must make assumptions 
> about trust which will change in a big way with this PQC transition.
> 
>>> Would you believe that someone does the wrong thing with that kind
>>> of stack and does so in a way that harms security?
>>
>> Certainly possible, even likely.
> 
> I am glad we agree.
> 
>>>> * We know they will go to IEEE if we don't publish.  IETF is much 
>>>> more open, so if we abdicate our remit to more closed SDOs,
>>>> what will you have achieved with this social death penalty?
>>>
>>> I do not understand this part - the draft can go to the ISE if 
>>> consensus can't be reached. Deb should not be pushed out of the IETF, 
>>> and no one should be ostracizing her. This holds for anyone in these 
>>> discussions, even convicted felons.
>>
>> See above (at the very top).
> 
> Understood.
> 
>>> That said - if the authors of the draft want to take it elsewhere and 
>>> publish it, especially because the WG won't rubberstamp something and 
>>> want to add some basic security considerations, I would say that is 
>>> their right. I note that they are welcome to integrate the text and 
>>> then I think most objections would be handled. Most of us can't edit 
>>> the draft by merging a pull request. I have the sneaking suspicion 
>>> that that if I open the pull request that it would not be merged. If 
>>> I am wrong, I would do the work.
>>
>> Would you settle for publishing with a normative requirement that the 
>> DRBG used to generate `m` be one we approve of?
> 
> Almost. I would settle on publication with a normative RBG requirement
> plus text that explains why `m` matters and recommends restoring the
> hash. The RBG restriction and the hash address different layers. The
> same is true of CTR_DRBG: choosing the construction does not excuse a
> leaky table-based AES implementation. That leaky table-based AES 
> situation is catastrophic and that is for a current NIST DRBG. At the 
> very least we should also normatively cite the (ever weaker?) NIST 
> threat model!
> 
>>>> Really, pick your fights carefully!
>>>
>>> I take your point(s) and I respectfully submit that I observe what
>>> appear to be some oversight in a few of your priors. I appreciate
>>> many of your points though.
>>
>> Have I covered all points now?
> 
> Probably, yes. Remaining is some discussion above as well as the task to 
> produce the exact text.
> 
>>> We all have a duty to resist and none of us have a duty to obey. We
>>
>> I agree with this.
> 
> Good to know, I am glad.
> 
>>> have no requirement to simply go along with such things, especially 
>>> if we think will lead to harm to the End User. With deep respect to 
>>> the actual Indigenous people of the world: we the Indigenous 
>>> Cryptographers of the Internet SHOULD help the End User
>>> to resist targeted and mass surveillance and indeed, we MUST treat
>>> pervasive monitoring as an attack [0].
>>>
>>> To paraphrase Bill Hicks: there is a war on your privacy and each 
>>> time that you protect your privacy with strong encryption, you're 
>>> winning it.
>>
>> On so many fronts.  The whole age verification stuff is clearly aimed 
>> at ending anonymous and pseudonymous posting so as to force self- 
>> censorship on people.
> 
> Agreed. The claimed benefit of broad age-verification mandates does
> not justify the resulting surveillance, identity linkage, and chilling
> of anonymous or pseudonymous expression.
> 
>>> [0] A term the NSA has given *us* and we should claim it, and wear
>>> it with pride to stand in solidarity with other Indigenous peoples
>>> of the world.  Note: "the fact that NSA/CSS makes cryptographic
>>> modifications to commercial or indigenous cryptographic
>>> information security devices or systems in order to make them
>>> exploitable" is "Top Secret" - https://www.spiegel.de/ international/ 
>>> germany/inside-the-nsa-s-war-on-internet-security- a-1010361.html
>>
>> But also public.  And something we basically knew to expect.
> 
> Yes. The history is public enough that surprise is no longer a
> reasonable response. The standards question is which concrete
> engineering lessons we apply now.
> 
> Kind regards,
> Jacob Appelbaum
> 
> [0] https://datatracker.ietf.org/doc/html/rfc8730
> 
> [1] https://datatracker.ietf.org/doc/html/rfc5742
> 
> [2] https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.203.pdf
> 
> [3] https://pq-crystals.org/kyber/data/kyber-specification-
> round3-20210804.pdf
> 
> [4] https://ntruprime.cr.yp.to/nist/ntruprime-20201007.pdf
> 
> [5] https://eprint.iacr.org/2019/996
> 
> [6] https://datatracker.ietf.org/doc/html/rfc4086
> 
> [7] https://datatracker.ietf.org/doc/html/rfc8937
> 
> [8] https://hovav.net/ucsd/dist/juniper.pdf
> 
> [9] https://www.mattblaze.org/papers/eesproto.pdf
> 
> [10] https://www.midnightblue.nl/research/tetraburst
> 
> [11] https://cr.yp.to/antiforgery/cachetiming-20050414.pdf
> 
> [12] https://datatracker.ietf.org/doc/html/rfc7258
> 
> _______________________________________________
> TLS mailing list -- [email protected]
> To unsubscribe send an email to [email protected]

_______________________________________________
TLS mailing list -- [email protected]
To unsubscribe send an email to [email protected]
OpenPGP_signature.asc (application/pgp-signature, 236 B)
-----BEGIN PGP SIGNATURE-----

wnsEABYIACMWIQQwbnhHy1kPJkWsM6fk2On5l6gz3QUCalu1TgUDAAAAAAAKCRDk2On5l6gz3et0
AP9FsL3BcftBIVfELnhf8qIUp4RKYx1/bpJOrrlmjPFyjgD+Lt4mQdj8K8IxHkx0aZ4cSuVGeDpG
4r/f+ChjF4ay+AQ=
=kT8Z
-----END PGP SIGNATURE-----