Benchmarking wolfCrypt on the Frontgrade Gaisler GR740: A Glimpse into Performance

In the context of the recent collaboration between wolfSSL and Frontgrade Gaisler, we are excited to share some benchmark results of the wolfCrypt library running on the Gaisler GR740-MINI board.

The GR740, designed as ESA’s Next Generation Microprocessor (NGMP), is a radiation-hardened System-on-Chip (SoC) featuring a quad-core fault-tolerant LEON4 SPARC V8 processor.

WolfSSL and Gaisler aim to enhance security solutions for space-grade applications, leveraging the robust capabilities of the GR740 processor and the cryptographic know-how of wolfSSL.

Benchmark for wolfCrypt running on Baremetal:

------------------------------------------------------------------------------
 wolfSSL version 5.8.0
------------------------------------------------------------------------------
Math:   Multi-Precision: Wolf(SP) word-size=32 bits=4096 sp_int.c
        Single Precision: ecc 256 384 rsa/dh 2048 3072 4096 sp_c32.c small
wolfCrypt Benchmark (block bytes 1024, min 1.0 sec each)
AES-128-CBC-enc              3 MiB took 1.003 seconds,    3.432 MiB/s
AES-128-CBC-dec              3 MiB took 1.002 seconds,    3.411 MiB/s
AES-192-CBC-enc              3 MiB took 1.007 seconds,    2.958 MiB/s
AES-192-CBC-dec              3 MiB took 1.005 seconds,    2.940 MiB/s
AES-256-CBC-enc              3 MiB took 1.005 seconds,    2.601 MiB/s
AES-256-CBC-dec              3 MiB took 1.001 seconds,    2.585 MiB/s
AES-128-GCM-enc            475 KiB took 1.014 seconds,  468.300 KiB/s
AES-128-GCM-dec            475 KiB took 1.015 seconds,  468.142 KiB/s
AES-192-GCM-enc            475 KiB took 1.036 seconds,  458.356 KiB/s
AES-192-GCM-dec            475 KiB took 1.037 seconds,  458.202 KiB/s
AES-256-GCM-enc            450 KiB took 1.003 seconds,  448.872 KiB/s
AES-256-GCM-dec            450 KiB took 1.003 seconds,  448.724 KiB/s
GMAC Table 4-bit           546 KiB took 1.001 seconds,  545.432 KiB/s
CHACHA                       7 MiB took 1.002 seconds,    6.945 MiB/s
CHA-POLY                     4 MiB took 1.000 seconds,    4.466 MiB/s
POLY1305                    17 MiB took 1.001 seconds,   17.076 MiB/s
SHA                         10 MiB took 1.002 seconds,    9.675 MiB/s
SHA-256                      3 MiB took 1.003 seconds,    2.581 MiB/s
SHA3-224                     2 MiB took 1.011 seconds,    1.907 MiB/s
SHA3-256                     2 MiB took 1.003 seconds,    1.801 MiB/s
SHA3-384                     1 MiB took 1.014 seconds,    1.397 MiB/s
SHA3-512                     1 MiB took 1.021 seconds,    0.980 MiB/s
HMAC-SHA                    10 MiB took 1.001 seconds,    9.585 MiB/s
HMAC-SHA256                  3 MiB took 1.001 seconds,    2.561 MiB/s
RSA     2048   public        78 ops took 1.017 sec, avg 13.035 ms, 76.715 ops/sec
RSA     2048  private         2 ops took 1.480 sec, avg 739.794 ms, 1.352 ops/sec
DH      2048  key gen         4 ops took 1.283 sec, avg 320.709 ms, 3.118 ops/sec
DH      2048    agree         4 ops took 1.282 sec, avg 320.625 ms, 3.119 ops/sec
ECC   [      SECP256R1]   256  key gen        18 ops took 1.028 sec, avg 57.084 ms, 17.518 ops/sec
ECDHE [      SECP256R1]   256    agree        18 ops took 1.025 sec, avg 56.947 ms, 17.560 ops/sec
ECDSA [      SECP256R1]   256     sign        16 ops took 1.010 sec, avg 63.136 ms, 15.839 ops/sec
ECDSA [      SECP256R1]   256   verify        10 ops took 1.145 sec, avg 114.465 ms, 8.736 ops/sec

Benchmark of wolfCrypt running in Linux Environment:

------------------------------------------------------------------------------
 wolfSSL version 5.8.0
------------------------------------------------------------------------------
Math:   Multi-Precision: Wolf(SP) word-size=32 bits=4096 sp_int.c
        Single Precision: ecc 256 384 rsa/dh 2048 3072 4096 sp_c32.c small
wolfCrypt Benchmark (block bytes 1048576, min 1.0 sec each)
AES-128-CBC-enc              5 MiB took 1.502 seconds,    3.330 MiB/s
AES-128-CBC-dec              5 MiB took 1.542 seconds,    3.242 MiB/s
AES-192-CBC-enc              5 MiB took 1.737 seconds,    2.879 MiB/s
AES-192-CBC-dec              5 MiB took 1.780 seconds,    2.810 MiB/s
AES-256-CBC-enc              5 MiB took 1.971 seconds,    2.536 MiB/s
AES-256-CBC-dec              5 MiB took 2.015 seconds,    2.481 MiB/s
AES-128-GCM-enc              5 MiB took 10.777 seconds,    0.464 MiB/s
AES-128-GCM-dec              5 MiB took 10.744 seconds,    0.465 MiB/s
AES-192-GCM-enc              5 MiB took 10.983 seconds,    0.455 MiB/s
AES-192-GCM-dec              5 MiB took 10.980 seconds,    0.455 MiB/s
AES-256-GCM-enc              5 MiB took 11.218 seconds,    0.446 MiB/s
AES-256-GCM-dec              5 MiB took 11.215 seconds,    0.446 MiB/s
GMAC Table 4-bit          1024 KiB took 1.863 seconds,  549.684 KiB/s
CHACHA                      10 MiB took 1.483 seconds,    6.742 MiB/s
CHA-POLY                     5 MiB took 1.031 seconds,    4.852 MiB/s
POLY1305                    20 MiB took 1.158 seconds,   17.270 MiB/s
SHA                         10 MiB took 1.063 seconds,    9.410 MiB/s
SHA-256                      5 MiB took 1.494 seconds,    3.346 MiB/s
SHA3-224                     5 MiB took 2.609 seconds,    1.917 MiB/s
SHA3-256                     5 MiB took 2.757 seconds,    1.814 MiB/s
SHA3-384                     5 MiB took 3.578 seconds,    1.398 MiB/s
SHA3-512                     5 MiB took 5.126 seconds,    0.975 MiB/s
HMAC-SHA                    10 MiB took 1.062 seconds,    9.412 MiB/s
HMAC-SHA256                  5 MiB took 1.494 seconds,    3.346 MiB/s
RSA     2048   public       100 ops took 1.309 sec, avg 13.094 ms, 76.373 ops/sec
RSA     2048  private       100 ops took 74.411 sec, avg 744.114 ms, 1.344 ops/sec
DH      2048  key gen         4 ops took 1.291 sec, avg 322.812 ms, 3.098 ops/sec
DH      2048    agree       100 ops took 32.274 sec, avg 322.741 ms, 3.098 ops/sec
ECC   [      SECP256R1]   256  key gen       100 ops took 5.748 sec, avg 57.484 ms, 17.396 ops/sec
ECDHE [      SECP256R1]   256    agree       100 ops took 5.737 sec, avg 57.371 ms, 17.431 ops/sec
ECDSA [      SECP256R1]   256     sign       100 ops took 6.360 sec, avg 63.599 ms, 15.723 ops/sec
ECDSA [      SECP256R1]   256   verify       100 ops took 11.532 sec, avg 115.318 ms, 8.672 ops/sec

These results underscore the potential of integrating wolfSSL’s cryptographic solutions with Gaisler’s advanced hardware, paving the way for secure high-performance cryptography that comply with latest industry standards, including DO-178C Level A, FIPS 140-3 and MISRA-C.

If you have questions about any of the above, please contact us at facts@wolfssl.com or call us at +1 425 245 8247.

Download wolfSSL Now