Hello all,

This patch is a contribution to OpenSSL.

It offers an efficient and constant-time implementation of EC multiplication 
for NIST P256 curve.
It accelerated ECDSA (sign and verify) as well as ECDH (compute and generate 
key), for the P256 curve.

The implementation is based on Montgomery multiplication, specifically 
optimized for the P-256 prime, using x86-64 assembly. It is intended to run on 
any x86-64 CPU (running Linux).

We measured the performance benefit of this patch on Intel(R) CPUs Codename 
Haswell and Sandy Bridge, using 'openssl speed'. Here are the numbers.

Single thread, single core:

Sandy Bridge@3.4GHz:
    ECDSA sign:
        OpenSSL - 8,759 sign/sec
        OpenSSL with NISTP enabled - 8,822 sign/sec
        This patch - 17,111 sign/sec
        1.95/1.94X speedup
    ECDSA verify:
        OpenSSL - 2,303 verify/sec
        OpenSSL with NISTP enabled - 3,831 verify/sec
        This patch - 6,193 verify/sec
        2.69/1.62X speedup
    ECDH:
        OpenSSL - 2,795 op/sec
        OpenSSL with NISTP enabled - 5,189 op/sec
        This patch - 8,087 op/sec
        2.89X/1.56X speedup

Haswell@3.4GHz:
    ECDSA sign:
        OpenSSL - 10,212        sign/sec
        OpenSSL with NISTP enabled - 10,499 sign/sec
        This patch - 22,747 sign/sec
        2.22X/2.16X speedup
    ECDSA verify:
        OpenSSL - 2,647 verify/sec
        OpenSSL with NISTP enabled - 4,384 verify/sec
        This patch - 7,622 verify/sec
        2.88X/1.74X speedup
    ECDH:
        OpenSSL - 3,193 op/sec
        OpenSSL with NISTP enabled - 5,932 op/sec
        This patch - 10,288 op/sec
        3.22X/1.73X speedup

Two threads, single core:

Sandy Bridge@3.4GHz:
    ECDSA sign:
        OpenSSL - 10,076 sign/sec
        OpenSSL with NISTP enabled - 8,911 sign/sec
        This patch - 19,901 sign/sec
        2/2.2X speedup
    ECDSA verify:
        OpenSSL - 2,480 verify/sec
        OpenSSL with NISTP enabled - 3,840 verify/sec
        This patch - 7,056 verify/sec
        2.8/1.8X speedup
    ECDH:
        OpenSSL - 2,983 op/sec
        OpenSSL with NISTP enabled - 5,290 op/sec
        This patch - 9,657 op/sec
        3.2X/1.8X speedup

Haswell@3.4GHz:
    ECDSA sign:
        OpenSSL - 11,004        sign/sec
        OpenSSL with NISTP enabled - 10,153 sign/sec
        This patch - 25,094 sign/sec
        2.3X/2.5X speedup
    ECDSA verify:
        OpenSSL - 2,598 verify/sec
        OpenSSL with NISTP enabled - 3,947 verify/sec
        This patch - 7,705 verify/sec
        3X/2X speedup
    ECDH:
        OpenSSL - 3,166 op/sec
        OpenSSL with NISTP enabled - 5,387 op/sec
        This patch - 10,438 op/sec
        3.3X/1.9X speedup

Reference:
[1] S. Gueron, V. Krasnov: "Fast Prime Field Elliptic Curve Cryptography with 
256 Bit Primes"

Developers and authors:
***************************************************************************
Shay Gueron (1, 2), and Vlad Krasnov (1)
(1) Intel Corporation, Israel Development Center, Haifa, Israel
(2) University of Haifa, Israel
***************************************************************************
Copyright(c) 2013, Intel Corp.


---------------------------------------------------------------------
Intel Israel (74) Limited

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to