While reviewing FIPS requirements for public key checks in Ephemeral Diffie-Hellman key exchanges it came out that FIPS requires checks that the public key point is not the (0, 0) coordinate and nettle is not doing it (only checks that neither point is negative.
Add this check as we never want to allow this point in any case.
Simo.
Simo Sorce simo@redhat.com writes:
ecc_point_set also checks that the point is on the curve, i.e., satisfies the curve equation. That should rule out (0, 0), except if we have some curve with constant term b == 0, which I don't think makes sense.
Not sure how FIPS requirements are formulated, but maybe it would be better to add a test case to check that ecc_point_set rejects (0,0) ?
Regards, /Niels
On Sat, 2019-05-11 at 10:00 +0200, Niels Möller wrote:
Ah you are right the later check would catch it. I was just following the checks FIPS explicitly requires in order and didn't think about that ...
Not sure how FIPS requirements are formulated, but maybe it would be better to add a test case to check that ecc_point_set rejects (0,0) ?
Yes, I will drop my patch and add a test case.
Simo.
Simo Sorce simo@redhat.com writes:
Attached find patch that adds points checks to the ECDH test case. Let me know if that's ok or if you prefer a whole new test.
I think it's ok to have it in the same file.
I think it's nicer to just change set_point to return int, and wrap all existing calls in ASSERT, e.g,
- set_point (&A, ax, ay); + ASSERT (set_point (&A, ax, ay));
in test_dh. Or name functions as int set_point(...), void set_point_or_die (...), but I think ASSERT is still clearer, in this case.
Any particular reason the tests are all for secp_192r1 ?
Regards, /Niels
On Wed, 2019-05-15 at 11:42 +0200, Niels Möller wrote:
Ok, will change.
Less copy-pasting as the numbers are smaller, the curve used really makes no difference.
Nioks, is the fact we do not enable 192r1 in some distribution a problem?
Simo.
Simo Sorce simo@redhat.com writes:
Merged now.
Regards, /Niels
On Wed, 2019-05-15 at 10:48 -0400, Simo Sorce wrote:
I replied in private previously, making a point that in fedora we remove the code and disable everything but secp256r1, 384r1 and 521r1. So any tests that use 192r1 or 224r1 will not be executed at all in that platform.
regards, Nikos
On Fri, May 17, 2019 at 2:24 PM Simo Sorce simo@redhat.com wrote:
I was merely stating the fact :)
nettle-bugs@lists.lysator.liu.se