wolfSSL now supports using the Trust Protection Unit (TPU), Modular Arithmetic Accelerator (MAA), and TRNG provided by Analog Devices MAX32666 and MAX32665 microcontrollers.
The implementation can be seen in PR #7777 to wolfSSL, and is in wolfSSL starting at 5.7.4!
The port offers various usage options: fully leveraging all hardware features, selectively enabling specific hardware acceleration like SHA acceleration, or utilizing Crypto Callbacks for mixed usage between hardware and software. For a guide on setting up the port please refer to the README.
Currently wolfSSL supports offloading the following algorithms and operations to the respective hardware:
TRNG:
- RNG
TPU:
- AES-CBC – 128/192/256
- AES-GCM – 128/192/256
- AES-ECB – 128/192/256
- SHA-1
- SHA-2 – 224/256/384/512
MAA (HW Accelerated Math Operations up to 2048 bits):
- Modulate (mod)
- Modular Addition (addmod)
- Modular Subtraction (submod)
- Modular Multiplication (mulmod)
- Modular Exponentiation (expmod)
- Modular Squaring (sqrmod)
Benchmarks:
These benchmarks were collected using a Cortex-M4 clocked at 96 Mhz included on the MAX32666 FTHR dev kit, and a bare metal implementation of our benchmark. The timer used for these benchmarks can be enabled with the addition of MAX3266X_RTC to user_settings.h for reproduction.
AES ECB/CBC/GCM:
AES-CBC and AES-ECB Hardware Acceleration provides a hefty 2x uplift in performance when compared to our Arm assembly acceleration and normal software implementations.
AES-GCM does not provide the same uplift due to the hardware not supporting GCM explicitly, but we take advantage of the ECB support of the hardware to still provide a speedup when compared to our standard software implementation.
You can enable this kind of speed up for other AES modes by adding HAVE_AES_ECB to user_settings.h.
All algorithms of SHA provide a consistent boost to performance. With our benchmark tool we see up to a 7x performance for SHA-384/512 when compared to our software implementations. As the algorithm gets simpler we see less of a performance increase, however the consistent throughput is still impressive.
Math Acceleration (RSA 2048 and ECDSA p256):
Using the Math Acceleration hardware we do see a decrease in performance for RSA 2048 and ECDSA p256 when compared to our software implementations. This is likely due to the setup and preprocessing that needs to happen before sending the operands down to the hardware.
Download:
For our official release please checkout our download page!
Questions?
For information about using MAX32666 or MAX32665 hardware acceleration in your project, or any general inquiries about supporting your project’s hardware, reach out to our support team at support@wolfSSL.com
If you have questions about any of the above, please contact us at facts@wolfSSL.com or +1 425 245 8247.
Download wolfSSL Now