Hi,

I'm having a new look at sntrup761, I have rebased the branch based on
Simon's work, and pushed as branch "sntrup761" in the Nettle repository.
And I've reread https://ntruprime.cr.yp.to/nist/ntruprime-20201007.pdf
(is that still the main spec?).

I've also added valgrind-based tests for side-channels. It appears key
generation may have leaks (when I mark the output from the randomness
generator as secret). Maybe this is just rejection of certain samples,
which should not be a problem (for this sampling strategy, it's expected
to leak the number of tries needed). Encapsulation appears to not
have branches or memory accesses depending on the randomness input.
Decapsulation appears to have no branches or memory accesses depending
on the secret key, which is the most important property.

I don't yet quite understand the implementation. Some issues:

* Not entirely sure where the sorting comes from (I saw no mention of it
  in the spec). I imagine it's part of generating random values of the
  appropriate types.

* The encode/decode step appear to follow the spec closely, but to me
  it's a bit weird to use the M arrays filled with constant values.

* Coding style is a bit odd, e.g., with long long type for values that
  always appear to always be small constant, short lowercase names like
  "p" used for preprocessor constants.

I think it should be doable to get into good shape.

Regards,
/Niels

-- 
Niels Möller. PGP key CB4962D070D77D7FCB8BA36271D8F1FF368C6677.
Internet email is subject to wholesale government surveillance.

_______________________________________________
nettle-bugs mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to