From: Tudor Ambarus Subject: in-kernel user of ecdsa Date: Mon, 12 Mar 2018 19:07:53 +0200 Message-ID: <0f698592-8ade-14d4-7891-1c35501c6285@microchip.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Cc: "bluez mailin list \(linux-bluetooth-u79uwXL29TY76Z2rM5mHXA@public.gmane.org\)" , linux-security-module-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org, Linux Crypto Mailing List To: David Howells , , Return-path: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: tpmdd-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org List-Id: linux-crypto.vger.kernel.org Hi, Would you consider using ECDSA in the kernel module signing facility? When compared with RSA, ECDSA has shorter keys, the key generation process is faster, the sign operation is faster, but the verify operation is slower than with RSA. Smaller key sizes imply reduced memory footprint and bandwidth that are especially attractive for memory constrained devices. I'm working with such a device, capable of generating ecc keys, secure key storage and ecdsa/ecdh crypto acceleration. I'm trying to find an in-kernel user of ecdsa. ECDSA and RSA comparison ------------------------ -> ECDSA requires a much smaller key length in order to provide the same security strength as RSA [1]: Security Strength RSA (bits) ECDSA (bits) 112 2048 224 - 255 128 3072 256 - 383 192 7680 384 - 511 256 15360 512+ 7680 and 15360 keys are not included in the NIST standards for interoperability and efficiency reasons, the keys are just too big. -> key generation: ECC key generation is faster than IFC (Integer - Factorization Cryptography). RSA private key is based on large prime numbers, while for ECDSA any positive integer less than n is a valid private key. -> ECDSA sign operations are faster than RSA, but verify operations are slower. Here's an openssl speed test that I've run on my computer: sign verify sign/s verify/s rsa 2048 bits 0.000604s 0.000018s 1656.3 56813.7 rsa 4096 bits 0.004027s 0.000062s 248.3 16052.5 sign verify sign/s verify/s 256 bit ecdsa (nistp256) 0.0000s 0.0001s 28986.4 13516.3 384 bit ecdsa (nistp384) 0.0002s 0.0008s 5541.0 1322.2 521 bit ecdsa (nistp521) 0.0003s 0.0006s 3104.2 1756.2 Best, ta [1] NIST SP 800-57 Pt. 1 Rev. 4, Recommendation for key management ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot