NIST is pleased to have received over 90 pages of public comments received from 42 commenters on draft FIPS 203: Module-Lattice-based Key-Encapsulation Mechanism (ML-KEM). The comments are posted at https://csrc.nist.gov/pubs/fips/203/ipd.
In response to these, and comments posted on the pqc-forum, NIST has been incorporating small changes to the draft to improve clarity, testing and validation capability, implementation guidance, and consistency with other NIST documents. The changes, and non-changes, were summarized in the talk “FIPS 203 Update” by Quynh Dang at the 5th NIST PQC Standardization Conference. This post summarizes the changes NIST plans to make to the draft FIPS 203.
Clarity
Consistency with other NIST documents
Testing and validation capability, implementation guidance
There is one additional change that we are considering but we have not yet come to a decision. During Decaps, the implicit rejection key \bar{K} is set to J(z||c). NXP PQC team public comment mentions that side-channel protections against \bar{K} will be easier if we swap the order of input to J and instead compute J(c||z). Pierre-Augustin BERTHET’s public comment recommends computing J(z||H(c)). Should we make a change at all? If so, which change is preferable?
Please let us know if you have any feedback or questions about the planned changes to FIPS 203.
Angela Robinson
NIST PQC
The only use case I can see is if you are in a ‘hard real time’ environment, where the spec says “you MUST respond to X in Y msec” (and failing to generate a Kyber public key can lead to an acceptable response).
That said, it isn’t great – as Dan said, this is a quite rare failure mode, and rare failure modes are just as bad in real time designs as they are in security (and for largely the same reason – you have something that is quite difficult to test in practice…)
From: pqc-...@list.nist.gov <pqc-...@list.nist.gov>
On Behalf Of Bobby McGee
Sent: Tuesday, April 23, 2024 2:59 PM
To: pqc-forum <pqc-...@list.nist.gov>
Cc: Samuel Lee <samue...@microsoft.com>; D. J. Bernstein <d...@cr.yp.to>; pqc-...@list.nist.gov <pqc-...@list.nist.gov>
Subject: Re: [pqc-forum] Updates for FIPS 203
RE: "limit the number of iterations in while loops" for FIPS 203, 204. As Prof. Bernstein says, it's hard to see what this accomplishes and not clear what should happen if such a limit is reached. If NIST really wanted to remove variable timing, the "obvious" solution is to get rid of rejection sampling and introduce bias in the PRNG. I'm not advocating this (it would be a huge change whose consequences would need to be thoroughly explored), but there seems to be a dichotomy. Either you have rejection sampling and wait or you don't; I'm not sure sticking timeouts into the cryptography is a good solution, especially if those limits are left to implementors. If NIST really wants to do this, it should be done uniformly and an exit procedure outlined. In any case, this is a pretty big change in my opinion.
On Tuesday, April 23, 2024 at 12:03:30 PM UTC-6 Samuel Lee wrote:
An important piece of feedback on:
NIST plans to specify “lower-level” derandomized API to enable CAVP testing with well-defined KATs and to allow the storing of keys as seeds. The “top-level” API will remain the same (randomized KeyGen and Encaps). More details can be found in a follow up post on derandomization
I think this is a great development both for testing and for allowing a compact representation of ML-KEM private keys, as one can store the seed rather than the decapsulation key blob.
However, it also introduces the potential for a key confusion attack potentially exposing a route to additional cryptanalysis of public information.
With the current definition of K-PKE.KeyGen in FIPS 203, a 32-byte private seed value d which is assumed to be random is expanded into a private key.
--
You received this message because you are subscribed to the Google Groups "pqc-forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
pqc-forum+...@list.nist.gov.
To view this discussion on the web visit
https://groups.google.com/a/list.nist.gov/d/msgid/pqc-forum/2529401a-a7a7-4c47-b811-5b2da8e53ea0n%40list.nist.gov.
There is one additional change that we are considering but we have not yet come to a decision. During Decaps, the implicit rejection key \bar{K} is set to J(z||c). NXP PQC team public comment mentions that side-channel protections against \bar{K} will be easier if we swap the order of input to J and instead compute J(c||z). Pierre-Augustin BERTHET’s public comment recommends computing J(z||H(c)). Should we make a change at all? If so, which change is preferable?
Here is one first order classical approach to protection:
The physical device under supervision has a capability, C/t [units per second]:
The supervision period is DT [seconds]:
The high-water arm setpoint is Ch/t [units/sec]
The low-water alarm setpoint is Cl/t [units/sec]
The monitor traverses the arrow of time:
Possible issues:
To view this discussion on the web visit https://groups.google.com/a/list.nist.gov/d/msgid/pqc-forum/CH0PR11MB5444BA3251DF98DDCED10EFAC1112%40CH0PR11MB5444.namprd11.prod.outlook.com.
On Apr 24, 2024, at 15:53, 'David A. Cooper' via pqc-forum <pqc-...@list.nist.gov> wrote:
This Message Is From an External SenderThis message came from outside the Laboratory.
To view this discussion on the web visit https://groups.google.com/a/list.nist.gov/d/msgid/pqc-forum/83715b92-0774-4b67-abc3-269879acf3f4%40nist.gov.
If it is the case that some implementations are likely to limit the number of iterations whether the standard allows it or not, then we thought it would be better to guide such implementers towards setting a limit that is known to be sufficiently high that exceeding it would be very rare (e.g., less than 1 in 2^128) rather than leaving them to choose a limit on their own.
>> an email to pqc-forum+unsubscribe@list.nist.gov.
>> To view this discussion on the web visit
>> https://groups.google.com/a/list.nist.gov/d/msgid/pqc-forum/2529401a-a7a7-4c47-b811-5b2da8e53ea0n%40list.nist.gov <https://groups.google.com/a/list.nist.gov/d/msgid/pqc-forum/2529401a-a7a7-4c47-b811-5b2da8e53ea0n%40list.nist.gov?utm_medium=email&utm_source=footer>.
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "pqc-forum" group.
>> To unsubscribe from this group and stop receiving emails from it, send
>> an email to pqc-forum+unsubscribe@list.nist.gov.
>> To view this discussion on the web visit
>> https://groups.google.com/a/list.nist.gov/d/msgid/pqc-forum/CH0PR11MB5444BA3251DF98DDCED10EFAC1112%40CH0PR11MB5444.namprd11.prod.outlook.com <https://groups.google.com/a/list.nist.gov/d/msgid/pqc-forum/CH0PR11MB5444BA3251DF98DDCED10EFAC1112%40CH0PR11MB5444.namprd11.prod.outlook.com?utm_medium=email&utm_source=footer>.
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "pqc-forum" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to pqc-forum+unsubscribe@list.nist.gov
> <mailto:pqc-forum+unsubscribe@list.nist.gov>.