On 10/12/23 4:52 AM, Falko Strenzke wrote:
Hi Robert, thanks for your feedback. See my answers below.
Robert Relyea schrieb am Montag, 25. September 2023 um 19:23:04 UTC+2:
On 8/21/23 11:52 PM, Falko Strenzke wrote:
Hi John,
that is great to hear. Our two interests are PQC algorithms for
TLS in Firefox and S/MIME in Thunderbird. As I understand it you
are working on the former. Hash-based signatures are also
interesting for us, mainly stateless ones. Are you going to
support SPHINCS+ certificates for TLS, too?
I don't know of anyone that's talking about hash-based signatures
in any of the on-line protocols (TLS, SSH, IKE). The stateful ones
have deployment issues and signature limitations, the stateless
ones are have too big of keys.
The use case for hash-based appears to be mostly code-signing.
It's also one of the few signing operations that have long lived
signatures that could create real problems for a signature made
today and a quantum computer 10 years in the future.
I agree that hash-based schemes will most likely not appear in EE
certificates. But in the certificate chain they might very well
appear, I think. There are currently concepts being discussed for
stateful hash-based root CAs.
I did misspeak. for hash-based schemes, the key size isn't the issue,
it's the signature size. So having hash-based signatures in your chain
is going to blow up the size of the certs signed with those signatures.
If you keep the signature count low, you can get away with smaller
signtures in state-full hashes, but then you run into nasty deployment
issues as you can't really back up stateful keys in any meaningful way
(you'll have to do something key key partitioning or similiar, which in
turns expands the needed signature count).
That being said, I expect to support stateless verification. Again, if
the oids are properly defined we would be able to handle certs that use
them. We would not support stateless signature (at least not natively)
in NSS because there isn't a way to safely deploy stateless signature in
software.
You best indicator on what will be supportable is what the actual
standards bodies define.
The point here is that waiting for final standards delays large scale
proof-of-concept testing for PQC migration – maybe by years. What I
think would be useful is having at least ML-DSA (Dilithium) as a
signature algorithm for authenticating the handshake in TLS. Could you
imagine integrating that in NSS?
Eventually yes, but TLS authentication is not the first priority. We
only need to have that in and generally supported before Cryptographic
Relevent Quantum computers are generally available. Recording a TLS
session and in the future cracking the signature doesn't generate a
compromise.
There are good reasons to wait for the standards before deployment
(rather than experimentation). Mostly because all the PQ algorithms are
quite new and we now have a pretty good track record for what happens if
you move *TOO* quickly. We also want to have the final versions that
everyone agrees on deployed and solid to maximize deployment of those
(if there are a lot of competing standards and everyone still negotiates
ECC or RSA we all loose).
In the mean-time experiments are good to help understand the deployment
issues.
Other things we can do is try to prepare for the new algorithms. I
currently have a patch for the general signature processing that would
make adding the new PQ signatures pretty transparent, for instance.
Do you think an existing (individual) RFC draft for PQC signature
identifiers in TLS would help here?
It would. We're actually pretty close on the standards. NIST should be
final first quarter of 2024. The draft is already good enough for other
standards to reference it. There's a strong desire to get these things
defined and finalized. I expect most of the important standards will be
in place by the end of 2024.
The two areas of most work (In the entire cyrpto industry, not
just firefox or NSS) is getting standardize hybrid into our
streaming protocols which are subject to 'record now/decrypt
later' attacks and firmware/code signing. These are the two main
areas where the useful life of the encrypted/signed objects may
outstrip the potential advent of a crypto relevant quantum
computer. I expect that will be where most of the work occurs in
2024. Remember: the only standardized PQ algorithms right now is
LMS/HSS and XMSS,XMSS/MT. That will change by early 2024 (NIST now
has drafts for Kyber, Dilithium, and SPHINCS).
I understand being cautious to release experimental / not yet
standardised features. Is there a concept in the NSS / Firefox code
base and a development workflow for such features to be integrated
into the code but not being accessible in the release version? That
might facilitate contributions of experimental features that are not
too invasive with respect to the source code structure such as merely
adding new algorithms.
There are experimental API standards in NSS, where the API is access
through a function that is marked as experimental and NSS API
guarrentees do not apply. There are patches to add Kyber_25519 hybrid to
NSS, but I don't see that they've landed yet. Those are explicitly
experimental. Given that the final specs are now close, I'm not sure how
much we would just put off for the final specs though.
bob
--
You received this message because you are subscribed to the Google Groups
"dev-tech-crypto@mozilla.org" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to dev-tech-crypto+unsubscr...@mozilla.org.
To view this discussion on the web visit
https://groups.google.com/a/mozilla.org/d/msgid/dev-tech-crypto/851358ae-aaf3-43a2-bf59-b50ac0a7c081%40redhat.com.