sfluhrer / ml-kem-security-considerations

This is intended to be the CFRG draft containing security considerations for ML-KEM
Other
2 stars 7 forks source link

Update draft-sfluhrer-cfrg-ml-kem-security-considerations.md #7

Closed kmilner closed 1 week ago

kmilner commented 2 weeks ago

This is a very quick description that I think might be worth fleshing out more, but I think it's worth mentioning.

Associate references:

I'm not sure this warrants adding a name to the author list but Scott said to do so--happy to contribute more explanation or other editing to the document.

kmilner commented 2 weeks ago

I think the advice would be to be protective about how your keys are generated in a way that may be unintuitive if you're used to traditional cryptosystems. Examples

You could generally just mess with the entropy used in key generation to achieve a similar sort of 'booby-trapped' keys, though, so maybe it isn't worth calling out specifically.

sfluhrer commented 2 weeks ago

The text you have is better; I would add two notes (and if you disagree with either of them, say so)

sfluhrer commented 1 week ago

Thinking about it, I believe you have a good point. I would propose this alternative text, which should more explicitly convey your concerns (and also when it is applicable, and also an actionable mitigation). If you agree with this modified text, we can make that as your change (either you or I). If you prefer your text, I'll go ahead and merge it.

Proposed alternative text:

ML-KEM has a potential weakness that did not apply to the classical DH or ECDH cryptosystems. Lattice public keys are a lattice and a secret hidden by an error term. If the error term added public key generation stage is made larger due to a fault attack, then the success of decapsulation can reveal enough of the secret that successive queries determine the private key. That is, a public key can be 'poisoned' such that a future adversary can recover the private key even though it will appear correct in normal usage. This applies only if an ML-KEM public key is used repeatedly.; it does not apply if ML-KEM is used ephemerally. If that is the case, you may want to use an ML-KEM implementation that is hardened against such fault attacks.