Daniel Apon via pqc-forum writes:
> Would you be willing to post (here, on the pqc-forum) a list of the
> implementations that you've observed still do not run in constant time?
This question is backwards. The correct procedure is for proposers to
_first_ make crystal clear what security properties they're claiming,
guaranteeing that reviewers investing time and effort into analyzing
those properties won't be met with responses of "We didn't claim that"
(or "That was a typo", as we've seen with HILA5 and Frodo). The timeline
for the claims being made clear is also important: NIST's official
evaluation criteria ask about the "maturity" of security analysis, and
there's no reason that implementation security should be excluded here.
Suppose a reviewer investigates, e.g., the line
syndromePosToFlip = syndromePosToFlip >= P ? syndromePosToFlip - P : syndromePosToFlip;
in crypto_kem/ledakemlt10/portableopt/bf_decoding.c, or the similar
lines in ffi_vec_set_random_from_support_using_seedexpander() in
crypto_kem/rolloi128/ref/ffi_vec.cpp, or the similar lines in the
NTS-KEM software. The LEDA authors and ROLLO authors and NTS-KEM authors
will then respond, justifiably, "We never claimed that this code was
constant time." This is a serious disincentive to security review. Maybe
some review happens anyway but it's less likely.
State-of-the-art automated tools can make a list of code issues to
investigate, and aren't known to have false negatives for post-quantum
code, but rejection sampling is well known to create false positives, so
human effort is still required.
---Dan