mbedtls: Activate deterministic ECDSA
authorHauke Mehrtens <hauke@hauke-m.de>
Sun, 24 Jun 2018 19:27:41 +0000 (21:27 +0200)
committerJo-Philipp Wich <jo@mein.io>
Tue, 18 Dec 2018 16:32:19 +0000 (17:32 +0100)
With deterministic ECDSA the value k needed for the ECDSA signature is
not randomly generated any more, but generated from a hash over the
private key and the message to sign. If the value k used in a ECDSA
signature or the relationship between the two values k used in two
different ECDSA signatures over the same content is know to an attacker
he can derive the private key pretty easily. Using deterministic ECDSA
as defined in the RFC6979 removes this problem by deriving the value k
deterministically from the private key and the content which gets
signed.

The resulting signature is still compatible to signatures generated not
deterministic.

This increases the size of the ipk on mips 24Kc by about 2 KByte.
old:
166.240 libmbedtls_2.11.0-1_mips_24kc.ipk
new:
167.811 libmbedtls_2.11.0-1_mips_24kc.ipk

This does not change the ECDSA performance in a measurable way.

Signed-off-by: Daniel Engberg <daniel.engberg.lists@pyret.net>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(backported from b19622044d492e9eff9d880d6bc1fc9486774886)
(rebased patches)
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
package/libs/mbedtls/patches/200-config.patch

index 5da8bf39b8a2603d9157dc0310d3662394c5e9b9..567fd98021d88585242c6055c0e635b184225dfb 100644 (file)
  
  /**
   * \def MBEDTLS_ECP_NIST_OPTIM
-@@ -682,7 +682,7 @@
-  *
-  * Comment this macro to disable deterministic ECDSA.
-  */
--#define MBEDTLS_ECDSA_DETERMINISTIC
-+//#define MBEDTLS_ECDSA_DETERMINISTIC
- /**
-  * \def MBEDTLS_KEY_EXCHANGE_PSK_ENABLED
 @@ -735,7 +735,7 @@
   *             See dhm.h for more details.
   *
  
  /**
   * \def MBEDTLS_HMAC_DRBG_C
-@@ -2249,7 +2249,7 @@
-  *
-  * Uncomment to enable the HMAC_DRBG random number geerator.
-  */
--#define MBEDTLS_HMAC_DRBG_C
-+//#define MBEDTLS_HMAC_DRBG_C
- /**
-  * \def MBEDTLS_NIST_KW_C
 @@ -2545,7 +2545,7 @@
   *
   * This module enables abstraction of common (libc) functions.