uncategorized

STM32 and wolfSSL - Hardware Crypto and RNG Support

We would like to announce that the wolfSSL embedded SSL library now has support for hardware-based cryptography and random number generation offered by the STM32F2. Supported cryptographic algorithms include AES (CBC, CTR), DES (ECB, CBC), 3DES, MD5, and SHA1. For details regarding the STM32F2 crypto and hash processors, please see the STM32F2xx Standard Peripheral Library document (linked below). If you are using the STM32F2 with wolfSSL, you can see substantial speed improvements when using the hardware crypto versus using wolfSSL’s software crypto implementation. The following benchmarks were gathered from the CTaoCrypt benchmark application (ctaocrypt/benchmark/benchmark.c) running on the STM3221G-EVAL board (STM32F2) using the STM32F2 Standard Peripheral Library and FreeRTOS.wolfSSL Software Crypto, Normal Big Integer Math LibraryAES 1024 kB took 0.822 seconds,   1.22 MB/sARC4 1024 KB took 0.219 seconds,   4.57 MB/sDES       1024 KB took 1.513 seconds,   0.66 MB/s3DES     1024 KB took 3.986 seconds,   0.25 MB/sMD5         1024 KB took 0.119 seconds,   8.40 MB/sSHA         1024 KB took 0.279 seconds,   3.58 MB/sSHA-256  1024 KB took 0.690 seconds,   1.45 MB/sRSA 2048 encryption took 111.17 milliseconds, avg over 100 iterationsRSA 2048 decryption took 1204.77 milliseconds, avg over 100 iterationsDH  2048 key generation   467.90 milliseconds, avg over 100 iterationsDH  2048 key agreement   538.94 milliseconds, avg over 100 iterationsSTM32F2 Hardware Crypto, Normal Big Integer Math LibraryAES        1024 kB took 0.105 seconds,   9.52 MB/sARC4     1024 KB took 0.219 seconds,   4.57 MB/sDES       1024 KB took 0.125 seconds,   8.00 MB/s3DES     1024 KB took 0.141 seconds,   7.09 MB/sMD5           1024 KB took 0.045 seconds,  22.22 MB/sSHA           1024 KB took 0.047 seconds,  21.28 MB/sSHA-256  1024 KB took 0.690 seconds,   1.45 MB/sRSA 2048 encryption took 111.09 milliseconds, avg over 100 iterationsRSA 2048 decryption took 1204.88 milliseconds, avg over 100 iterationsDH  2048 key generation  467.56 milliseconds, avg over 100 iterationsDH  2048 key agreement   542.11 milliseconds, avg over 100 iterationsAs the above benchmarks (and chart) show, the hardware-based algorithms on the STM32 demonstrate significantly faster speeds than that of their software counterparts.To enable STM32 hardware crypto and RNG support, define STM32F2_CRYPTO and STM32F2_RNG when building wolfSSL. For a more complete list of defines which may be required, please see the WOLFSSL_STM32F2 define in /wolfssl/wolfcrypt/settings.h. You can find the most recent version of wolfSSL on GitHub, here: https://github.com/wolfssl/wolfssl.If you would like to use wolfSSL with STM32 hardware-based cryptography or RNG, or have any questions, please contact us at facts@wolfssl.com for more information.wolfSSL embedded SSL librarySTM32: http://www.st.com/internet/mcu/class/1734.jspSTM32F2 Standard Peripheral Library documentation: http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/USER_MANUAL/DM00023896.pdf