uncategorized

wolfSSL STM32 Hardware Crypto and RNG Support

Did you know that the CyaSSL lightweight SSL library has support for hardware-based cryptography and random number generation offered by the STM32 processor? Supported cryptographic algorithms include AES (CBC, CTR), DES (ECB, CBC), 3DES, MD5, and SHA1. For details regarding the STM32 crypto and hash processors, please see the STM32F2xx Standard Peripheral Library document (linked below). Devices using the STM32 with CyaSSL can see substantial speed improvements when using hardware crypto versus using CyaSSL’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.CyaSSL 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 iterationsTo enable STM32 hardware crypto and RNG support, define STM32F2_CRYPTO and STM32F2_RNG when building CyaSSL. For a more complete list of defines which may be required, please see the CYASSL_STM32F2 define in /cyassl/ctaocrypt/settings.h.If you would like to use CyaSSL with STM32 hardware-based cryptography or RNG, or have any questions, please contact us at facts@wolfssl.com for more information. The latest stable release of CyaSSL is available for download under the GPLv2 direct from the wolfSSL website.CyaSSL embedded SSL library: http://wolfssl.com/yaSSL/Products-cyassl.htmlSTM32: 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