Janos Follath
865a75e95b
Reject low-order points on Curve448 early
...
We were already rejecting them at the end, due to the fact that with the
usual (x, z) formulas they lead to the result (0, 0) so when we want to
normalize at the end, trying to compute the modular inverse of z will
give an error.
If we wanted to support those points, we'd a special case in
ecp_normalize_mxz(). But it's actually permitted by all sources (RFC
7748 say we MAY reject 0 as a result) and recommended by some to reject
those points (either to ensure contributory behaviour, or to protect
against timing attack when the underlying field arithmetic is not
constant-time).
Since our field arithmetic is indeed not constant-time, let's reject
those points before they get mixed with sensitive data (in
ecp_mul_mxz()), in order to avoid exploitable leaks caused by the
special cases they would trigger. (See the "May the Fourth" paper
https://eprint.iacr.org/2017/806.pdf )
Signed-off-by: Janos Follath <janos.follath@arm.com>
2021-06-24 15:34:59 +01:00
..
2021-05-20 10:37:22 +02:00
2021-05-28 11:06:40 +02:00
2021-03-10 12:52:37 +00:00
2021-03-10 12:52:37 +00:00
2021-05-25 09:23:10 +02:00
2021-01-26 13:57:46 +01:00
2021-01-27 15:37:12 +01:00
2021-03-04 14:34:50 +00:00
2021-06-22 09:33:20 +02:00
2021-06-24 14:48:38 +01:00
2021-05-25 09:23:10 +02:00
2020-10-08 12:09:44 +02:00
2020-08-19 10:35:41 +02:00
2020-08-19 10:35:41 +02:00
2021-03-25 14:25:46 +01:00
2021-06-16 10:34:25 +02:00
2021-03-10 12:52:37 +00:00
2021-05-20 15:08:55 +02:00
2021-03-02 10:18:08 +01:00
2021-06-16 10:34:25 +02:00
2021-05-27 14:39:53 +02:00
2021-06-08 16:45:41 +02:00
2021-06-17 21:46:29 +02:00
2020-08-19 10:35:41 +02:00
2021-06-17 09:38:38 +02:00
2020-08-19 10:35:41 +02:00
2021-05-19 11:31:37 -04:00
2021-06-17 09:38:38 +02:00
2021-06-24 15:00:33 +01:00
2021-06-15 00:10:37 +02:00
2021-06-03 18:10:04 +02:00
2021-06-24 15:34:59 +01:00
2021-06-15 15:47:44 +02:00
2021-06-15 15:47:44 +02:00
2021-06-18 16:35:58 +01:00
2021-05-18 23:15:40 +02:00
2020-08-19 10:35:41 +02:00
2021-06-08 16:45:41 +02:00
2021-06-16 10:34:25 +02:00
2021-06-08 16:45:41 +02:00
2021-06-16 10:34:25 +02:00
2021-06-16 10:34:25 +02:00
2020-08-19 10:35:41 +02:00
2021-04-07 12:45:35 +01:00
2021-03-29 14:20:18 +01:00
2021-04-07 12:45:35 +01:00
2021-03-29 14:20:18 +01:00
2021-04-07 12:45:35 +01:00
2021-04-07 12:45:35 +01:00
2021-06-20 23:14:36 +02:00
2021-06-01 11:22:56 +02:00
2021-06-16 10:34:25 +02:00
2021-03-10 12:52:37 +00:00
2021-05-18 19:01:42 +01:00
2021-06-08 16:45:41 +02:00
2021-06-17 09:38:38 +02:00
2021-06-17 09:38:38 +02:00
2021-06-17 09:38:38 +02:00
2021-04-15 11:19:47 +01:00
2021-06-16 10:34:25 +02:00
2021-06-22 09:27:41 +02:00
2021-04-21 12:31:43 +02:00
2020-11-13 09:20:18 +00:00
2020-08-19 10:35:41 +02:00
2020-08-19 10:35:41 +02:00
2021-04-15 17:32:06 +02:00
2021-04-07 16:03:31 +02:00
2021-06-16 10:34:25 +02:00
2021-03-26 15:58:25 +01:00
2021-02-09 15:36:08 +01:00
2021-05-13 11:19:01 +02:00
2021-05-21 18:07:06 +02:00
2021-05-13 11:18:57 +02:00
2021-03-15 12:14:40 +01:00
2021-02-18 15:45:12 +01:00
2021-06-16 10:34:25 +02:00
2021-04-19 10:51:59 +02:00
2021-03-03 19:58:02 +01:00
2020-11-25 13:10:50 +01:00
2021-06-22 12:18:25 +02:00
2021-05-10 11:29:13 +02:00
2021-02-16 18:55:05 +01:00
2021-06-17 09:38:38 +02:00
2021-02-18 15:45:06 +01:00
2020-08-19 10:35:41 +02:00
2020-11-25 13:10:50 +01:00
2020-08-19 10:35:41 +02:00
2021-05-27 17:33:32 +02:00
2021-04-01 14:05:41 +02:00
2021-05-27 14:40:40 +02:00
2021-02-15 14:26:44 +01:00
2021-06-22 12:18:25 +02:00
2021-05-27 14:40:40 +02:00
2021-06-08 16:45:41 +02:00
2021-03-10 12:52:37 +00:00
2021-03-10 12:52:37 +00:00
2021-06-17 09:37:55 +02:00
2021-06-08 16:45:41 +02:00
2021-06-08 16:45:41 +02:00
2021-06-08 16:45:41 +02:00
2021-05-14 14:55:15 +01:00
2021-06-18 12:59:38 +02:00
2021-06-16 16:19:53 +01:00
2021-05-24 12:45:20 +02:00
2020-08-25 14:35:55 +01:00
2021-06-08 11:07:27 +02:00
2021-06-07 20:53:33 +02:00
2021-06-16 16:19:53 +01:00
2021-03-10 12:52:37 +00:00
2021-05-31 19:40:45 +01:00
2021-05-26 04:47:29 +01:00
2021-06-22 18:52:37 +02:00
2021-02-22 19:24:03 +01:00
2021-06-18 13:22:57 +02:00
2020-08-19 10:35:41 +02:00
2020-08-19 10:35:41 +02:00
2021-04-28 17:31:55 +01:00
2021-06-17 23:17:52 +02:00
2021-04-28 17:31:55 +01:00
2021-04-28 17:31:55 +01:00
2021-06-08 16:45:41 +02:00
2021-05-27 14:27:43 +02:00