Performance Benchmarks
emCrypt implements all algorithms in platform-independent C code. The following benchmarks show some performance of these software implementations with and without hardware acceleration.
Overview
All algorithms in emCrypt can be independently tailored for higher speed or lower size. The benchmarks are done on the emPower Board with a NXP K66, running @ 168 MHz, configured for highest speed, compiled with Embedded Studio using clang.
Please note:
For further information that goes beyond these details including not listed devices or cores, please take a look at our online documentation:
https://wiki.segger.com/emCrypt
Modular exponentiation benchmark
(c) 2014-2017 SEGGER Microcontroller GmbH & Co. KG www.segger.com
Modular Exponentiation Benchmark compiled Apr 21 2017 15:54:06
Compiler: clang 3.9.1 (tags/RELEASE_391/final)
System: Processor speed = 168.000 MHz
Config: Static heap size = 39600 bytes
Config: CRYPTO_MPI_BITS_PER_LIMB = 32
Modular Arithmetic Performance
==============================
CRT private key, exponent length = modulus length, all times in ms
+---------------------------+---------------+---------------+---------------+
| Algorithm | 512 | 1024 | 2048 |
+---------------------------+---------------+---------------+---------------+
| Basic, ladder | 67.87 1.0x | 287.25 1.0x | 1497.00 1.0x |
| Basic, fast | 50.55 1.3x | 202.80 1.4x | 955.00 1.6x |
| Basic, 2b, FW | 47.41 1.4x | 192.50 1.5x | 923.50 1.6x |
| Basic, 3b, FW | 44.35 1.5x | 182.50 1.6x | 909.50 1.6x |
| Basic, 4b, FW | 43.33 1.6x | 176.17 1.6x | 887.00 1.7x |
| Basic, 5b, FW | 44.13 1.5x | 174.83 1.6x | 872.00 1.7x |
| Basic, 6b, FW | 47.41 1.4x | 178.67 1.6x | 865.00 1.7x |
+---------------------------+---------------+---------------+---------------+
| Basic, 2b, RM | 46.73 1.5x | 189.33 1.5x | 911.00 1.6x |
| Basic, 3b, RM | 43.87 1.5x | 180.17 1.6x | 889.50 1.7x |
| Basic, 4b, RM | 42.58 1.6x | 173.67 1.7x | 870.00 1.7x |
| Basic, 5b, RM | 42.33 1.6x | 171.00 1.7x | 856.50 1.7x |
| Basic, 6b, RM | 43.38 1.6x | 171.00 1.7x | 847.00 1.8x |
+---------------------------+---------------+---------------+---------------+
| Barrett, ladder | 53.84 1.3x | 202.00 1.4x | 1021.00 1.5x |
| Barrett, fast | 40.08 1.7x | 145.14 2.0x | 666.50 2.2x |
| Barrett, 2b, FW | 38.73 1.8x | 139.12 2.1x | 645.50 2.3x |
| Barrett, 3b, FW | 35.59 1.9x | 129.00 2.2x | 620.50 2.4x |
| Barrett, 4b, FW | 34.48 2.0x | 123.78 2.3x | 599.50 2.5x |
| Barrett, 5b, FW | 35.10 1.9x | 122.56 2.3x | 587.50 2.5x |
| Barrett, 6b, FW | 37.78 1.8x | 125.50 2.3x | 583.00 2.6x |
+---------------------------+---------------+---------------+---------------+
| Barrett, 2b, RM | 37.11 1.8x | 133.75 2.1x | 628.00 2.4x |
| Barrett, 3b, RM | 34.79 2.0x | 126.50 2.3x | 606.00 2.5x |
| Barrett, 4b, RM | 33.73 2.0x | 121.78 2.4x | 588.50 2.5x |
| Barrett, 5b, RM | 33.57 2.0x | 119.56 2.4x | 577.50 2.6x |
| Barrett, 6b, RM | 34.43 2.0x | 119.56 2.4x | 570.50 2.6x |
+---------------------------+---------------+---------------+---------------+
| Montgomery, fast | 21.17 3.2x | 92.64 3.1x | 486.33 3.1x |
| Montgomery, 2b, FW | 21.40 3.2x | 93.73 3.1x | 484.67 3.1x |
| Montgomery, 3b, FW | 19.35 3.5x | 84.17 3.4x | 433.00 3.5x |
| Montgomery, 4b, FW | 18.61 3.6x | 80.08 3.6x | 409.00 3.7x |
| Montgomery, 5b, FW | 18.94 3.6x | 79.08 3.6x | 398.67 3.8x |
| Montgomery, 6b, FW | 20.36 3.3x | 81.15 3.5x | 398.00 3.8x |
+---------------------------+---------------+---------------+---------------+
| Montgomery, 2b, RM | 19.84 3.4x | 85.50 3.4x | 446.00 3.4x |
| Montgomery, 3b, RM | 18.65 3.6x | 81.08 3.5x | 419.00 3.6x |
| Montgomery, 4b, RM | 18.14 3.7x | 78.23 3.7x | 401.33 3.7x |
| Montgomery, 5b, RM | 18.07 3.8x | 76.92 3.7x | 392.67 3.8x |
| Montgomery, 6b, RM | 18.59 3.7x | 77.08 3.7x | 387.00 3.9x |
+---------------------------+---------------+---------------+---------------+
Public key, exponent length = 17 bits, all times in ms
+---------------------------+---------------+---------------+---------------+
| Algorithm | 512 | 1024 | 2048 |
+---------------------------+---------------+---------------+---------------+
| Basic, ladder | 4.38 1.0x | 9.62 1.0x | 25.77 1.0x |
| Basic, fast | 2.23 2.0x | 4.68 2.1x | 12.14 2.1x |
| Basic, 2b, FW | 2.41 1.8x | 4.87 2.0x | 12.42 2.1x |
| Basic, 3b, FW | 2.62 1.7x | 5.00 1.9x | 12.44 2.1x |
| Basic, 4b, FW | 3.14 1.4x | 5.67 1.7x | 13.09 2.0x |
| Basic, 5b, FW | 4.17 1.1x | 6.99 1.4x | 15.07 1.7x |
| Basic, 6b, FW | 5.88 0.7x | 9.18 1.0x | 18.70 1.4x |
+---------------------------+---------------+---------------+---------------+
| Basic, 2b, RM | 2.29 1.9x | 4.73 2.0x | 12.20 2.1x |
| Basic, 3b, RM | 2.52 1.7x | 4.87 2.0x | 12.27 2.1x |
| Basic, 4b, RM | 2.99 1.5x | 5.48 1.8x | 12.82 2.0x |
| Basic, 5b, RM | 3.89 1.1x | 6.66 1.4x | 14.64 1.8x |
| Basic, 6b, RM | 5.69 0.8x | 9.02 1.1x | 18.22 1.4x |
+---------------------------+---------------+---------------+---------------+
| Barrett, ladder | 3.46 1.3x | 7.83 1.2x | 22.22 1.2x |
| Barrett, fast | 1.78 2.5x | 3.82 2.5x | 10.42 2.5x |
| Barrett, 2b, FW | 2.15 2.0x | 4.24 2.3x | 11.02 2.3x |
| Barrett, 3b, FW | 2.32 1.9x | 4.38 2.2x | 11.00 2.3x |
| Barrett, 4b, FW | 2.87 1.5x | 5.23 1.8x | 11.95 2.2x |
| Barrett, 5b, FW | 3.96 1.1x | 6.91 1.4x | 14.85 1.7x |
| Barrett, 6b, FW | 5.93 0.7x | 9.96 1.0x | 20.34 1.3x |
+---------------------------+---------------+---------------+---------------+
| Barrett, 2b, RM | 1.88 2.3x | 3.89 2.5x | 10.50 2.5x |
| Barrett, 3b, RM | 2.06 2.1x | 4.07 2.4x | 10.60 2.4x |
| Barrett, 4b, RM | 2.45 1.8x | 4.69 2.0x | 11.31 2.3x |
| Barrett, 5b, RM | 3.18 1.4x | 5.90 1.6x | 13.44 1.9x |
| Barrett, 6b, RM | 4.63 0.9x | 8.30 1.2x | 17.70 1.5x |
+---------------------------+---------------+---------------+---------------+
| Montgomery, fast | 1.41 3.1x | 3.37 2.9x | 9.98 2.6x |
| Montgomery, 2b, FW | 2.06 2.1x | 5.12 1.9x | 15.38 1.7x |
| Montgomery, 3b, FW | 2.13 2.1x | 5.29 1.8x | 15.89 1.6x |
| Montgomery, 4b, FW | 2.69 1.6x | 6.77 1.4x | 20.34 1.3x |
| Montgomery, 5b, FW | 3.61 1.2x | 9.20 1.0x | 27.73 0.9x |
| Montgomery, 6b, FW | 5.41 0.8x | 13.97 0.7x | 42.13 0.6x |
+---------------------------+---------------+---------------+---------------+
| Montgomery, 2b, RM | 1.60 2.7x | 3.87 2.5x | 11.47 2.2x |
| Montgomery, 3b, RM | 1.72 2.5x | 4.19 2.3x | 12.46 2.1x |
| Montgomery, 4b, RM | 2.09 2.1x | 5.14 1.9x | 15.43 1.7x |
| Montgomery, 5b, RM | 2.58 1.7x | 6.41 1.5x | 19.40 1.3x |
| Montgomery, 6b, RM | 3.48 1.3x | 8.66 1.1x | 26.37 1.0x |
+---------------------------+---------------+---------------+---------------+
Benchmark complete
AES benchmark
Benchmarked on a SEGGER emPower board
(c) 2014-2017 SEGGER Microcontroller GmbH & Co. KG www.segger.com
AES Benchmark V1.16 compiled Apr 21 2017 16:00:55
Compiler: clang 3.9.1 (tags/RELEASE_391/final)
System: Processor speed = 168.000 MHz
Config: CRYPTO_CONFIG_AES_OPTIMIZE = 15
Config: CRYPTO_CONFIG_AES_HW_OPTIMIZE = 1
+--------------+------+-----------------+-----------------+
| | | ECB MB/s | CBC MB/s |
| Cipher | Bits | Enc Dec | Enc Dec |
+--------------+------+-----------------+-----------------+
| AES | 128 | 2.03 2.18 | 1.64 1.61 |
| AES (HW) | 128 | 8.14 7.70 | 7.52 6.72 |
| AES | 192 | 1.74 1.88 | 1.44 1.44 |
| AES (HW) | 192 | 6.83 6.52 | 6.30 5.66 |
| AES | 256 | 1.53 1.64 | 1.29 1.30 |
| AES (HW) | 256 | 6.05 5.89 | 5.63 5.00 |
+--------------+------+-----------------+-----------------+
| | | GCM MB/s | CCM MB/s |
| Cipher | Bits | Enc Dec | Enc Dec |
+--------------+------+-----------------+-----------------+
| AES | 128 | 0.05 0.05 | 0.83 0.83 |
| AES (HW) | 128 | 0.05 0.05 | 1.23 1.24 |
| AES | 192 | 0.05 0.05 | 0.73 0.73 |
| AES (HW) | 192 | 0.05 0.05 | 1.16 1.16 |
| AES | 256 | 0.06 0.06 | 0.65 0.65 |
| AES (HW) | 256 | 0.06 0.06 | 1.10 1.11 |
+--------------+------+-----------------+-----------------+
Benchmark complete
ECDSA benchmark
Benchmarked on a SEGGER emPower board
(c) 2014-2017 SEGGER Microcontroller GmbH & Co. KG www.segger.com
ECDSA Sign and Verify Benchmark compiled Apr 21 2017 16:03:45
Compiler: clang 3.9.1 (tags/RELEASE_391/final)
System: Processor speed = 168.000 MHz
Config: Static heap size = 4440 bytes
Config: CRYPTO_MPI_BITS_PER_LIMB = 32
Config: CRYPTO_CONFIG_ECDSA_TWIN_MULTIPLY = 1
+------------------+-----------+-----------+-----------+-----------+
| | Sign | Sign | Verify | Verify |
| Curve | ms | bytes | ms | bytes |
+------------------+-----------+-----------+-----------+-----------+
| secp192r1 | 40.54 | 1152 | 37.64 | 1920 |
| secp224r1 | 50.85 | 1296 | 48.27 | 2160 |
| secp256r1 | 79.07 | 1440 | 75.86 | 2400 |
| secp384r1 | 129.00 | 2016 | 122.00 | 3360 |
| secp521r1 | 238.67 | 2664 | 218.50 | 4440 |
| brainpoolP160r1 | 68.87 | 1008 | 66.81 | 1680 |
| brainpoolP160t1 | 62.88 | 1008 | 60.50 | 1680 |
| brainpoolP192r1 | 98.67 | 1152 | 90.92 | 1920 |
| brainpoolP192t1 | 89.42 | 1152 | 80.86 | 1920 |
| brainpoolP224r1 | 130.87 | 1296 | 122.40 | 2160 |
| brainpoolP224t1 | 119.50 | 1296 | 111.20 | 2160 |
| brainpoolP256r1 | 171.33 | 1440 | 162.00 | 2400 |
| brainpoolP256t1 | 158.00 | 1440 | 145.62 | 2400 |
| brainpoolP320r1 | 260.75 | 1728 | 242.83 | 2880 |
| brainpoolP320t1 | 241.00 | 1728 | 216.00 | 2880 |
| brainpoolP384r1 | 399.00 | 2016 | 372.00 | 3360 |
| brainpoolP384t1 | 376.25 | 2016 | 327.75 | 3360 |
| brainpoolP512r1 | 754.50 | 2592 | 694.00 | 4320 |
| brainpoolP512t1 | 649.00 | 2592 | 613.50 | 4320 |
+------------------+-----------+-----------+-----------+-----------+
Benchmark complete