RECENT BLOG NEWS
wolfSSL on STM32 MPUs
STMicroelectronics recently released a new range of ARM based MPUs. These are industrial grade ARM microprocessors that provide excellent performance as well as many useful features. ST have released OpenSTLinux to run on these chips, but they have also made a version of their bare-metal HAL API which works with these chips.
The wolfSSL team has recently ported wolfSSL to bare metal for the STM32MP135F in this range. This chip has a single-core 1GHz ARM Cortex-A7 which has hardware crypto acceleration features. There have been multiple parts to this work, which I will walk through in this post.
HAL porting
The previous AES, HASH and PKA HAL acceleration for STM32 MCUs has been ported to work with the STM32MP13 HAL. Every hardware acceleration feature we have previously supported for STM32 MCUs works with this MPU.
During testing, we clocked the MPU at 650MHz, which is the default high clock speed for bare-metal. At this speed we can get 12MB/sec AES-CBC, 9MB/sec AES-GCM and 90MB/sec SHA256. This is with the core clocked at only 65% of its maximum speed.
Extra hash support
We didn’t just stop there: we also added HAL acceleration for additional SHA types. With this MPU, we can now accelerate SHA-384, SHA-512 and SHA3 types. All also achieving around 85-90MB/sec. This is a 10-30x improvement over what you would typically see when running software-based algorithms for these types on the same hardware.
All the work we did to add these hash types should be easily portable to ST MCUs that support those types in the HAL. You can email us at support@wolfSSL.com if you wish for us to assist you with this porting work.
wolfSSL Example
Setting up and running the MPU in bare-metal mode can be a little bit tricky, so on top of all of this, we created a documented example so that you can create an echo client. This example is designed to be used with the STM32MP135F-DK development board. It uses FreeRTOS and LwIP, so it can be extended to do other things.
The example is available on our wolfssl-examples-stm32 GitHub repository.
There is also a README available in the main wolfSSL source tree, which can guide you through using wolfCrypt with the STM32MP135F.
What about Linux?
For those who want to use OpenSTLinux, wolfSSL “just works”. Using ST’s cross-compile toolchain, you can compile wolfSSL just like you would for any other Linux installation. On Linux, this is the wolfCrypt benchmark results:
------------------------------------------------------------------------------ wolfSSL version 5.7.4 ------------------------------------------------------------------------------ Math: Multi-Precision: Wolf(SP) word-size=32 bits=4096 sp_int.c Single Precision: ecc 256 384 rsa/dh 2048 3072 4096 asm sp_cortexm.c wolfCrypt Benchmark (block bytes 1048576, min 1.0 sec each) RNG 10 MiB took 1.049 seconds, 9.537 MiB/s AES-128-CBC-enc 20 MiB took 1.003 seconds, 19.931 MiB/s AES-128-CBC-dec 20 MiB took 1.075 seconds, 18.597 MiB/s AES-192-CBC-enc 20 MiB took 1.198 seconds, 16.697 MiB/s AES-192-CBC-dec 20 MiB took 1.254 seconds, 15.947 MiB/s AES-256-CBC-enc 15 MiB took 1.063 seconds, 14.105 MiB/s AES-256-CBC-dec 15 MiB took 1.076 seconds, 13.943 MiB/s AES-128-GCM-enc 10 MiB took 1.044 seconds, 9.577 MiB/s AES-128-GCM-dec 10 MiB took 1.018 seconds, 9.822 MiB/s AES-192-GCM-enc 10 MiB took 1.130 seconds, 8.846 MiB/s AES-192-GCM-dec 10 MiB took 1.128 seconds, 8.867 MiB/s AES-256-GCM-enc 10 MiB took 1.191 seconds, 8.393 MiB/s AES-256-GCM-dec 10 MiB took 1.204 seconds, 8.307 MiB/s GMAC Table 4-bit 20 MiB took 1.014 seconds, 19.716 MiB/s CHACHA 35 MiB took 1.102 seconds, 31.750 MiB/s CHA-POLY 30 MiB took 1.173 seconds, 25.586 MiB/s POLY1305 120 MiB took 1.027 seconds, 116.896 MiB/s SHA 45 MiB took 1.029 seconds, 43.727 MiB/s SHA-256 25 MiB took 1.042 seconds, 23.988 MiB/s HMAC-SHA 45 MiB took 1.075 seconds, 41.845 MiB/s HMAC-SHA256 25 MiB took 1.029 seconds, 24.291 MiB/s RSA 2048 public 1400 ops took 1.043 sec, avg 0.745 ms, 1342.619 ops/sec RSA 2048 private 100 ops took 2.532 sec, avg 25.324 ms, 39.488 ops/sec DH 2048 key gen 86 ops took 1.007 sec, avg 11.707 ms, 85.419 ops/sec DH 2048 agree 100 ops took 1.194 sec, avg 11.939 ms, 83.763 ops/sec ECC [ SECP256R1] 256 key gen 1500 ops took 1.023 sec, avg 0.682 ms, 1466.898 ops/sec ECDHE [ SECP256R1] 256 agree 700 ops took 1.037 sec, avg 1.482 ms, 674.714 ops/sec ECDSA [ SECP256R1] 256 sign 1200 ops took 1.109 sec, avg 0.924 ms, 1081.961 ops/sec ECDSA [ SECP256R1] 256 verify 700 ops took 1.146 sec, avg 1.638 ms, 610.589 ops/sec
Details on this can also be found in the wolfSSL STM32MP13 README.
If you have questions about any of the above, please contact us at facts@wolfssl.com or +1 425 245 8247.
Download wolfSSL Now
wolfBoot Support for NXP QorIQ Platforms
wolfBoot supports a wide range of NXP QorlQ platforms. In this post, we will highlight supported platforms, key features, and how wolfBoot ensures security and reliability for PowerPC-based embedded systems.
Why wolfBoot for NXP QorIQ?
wolfBoot is a highly suitable secure boot solution for modern embedded systems. wolfBoot is a U-Boot replacement to improve security. wolfBoot supports features like TPM, encrypted updates, external flash partitions, differential updates, and side channel hardening (armored mode). Production support, commercial grade product, safety critical certified DO178 and FIPS 140-3. Its lightweight design, independence from specific platforms, and ease of integration make it a one-stop solution for developers aiming to improve firmware security.
Key advantages:
- Efficient and Lightweight: Perfect for resource-constrained environments.
- Broad Compatibility: Supports PowerPC and Arm-based platforms.
- Flexible Integration: Simplifies secure firmware updates and key management.
Supported NXP QorIQ PPC Platforms
LS1028A
- Overview: ARMv8-A architecture with dual Cortex-A72 cores for industrial and networking applications.
- Features: Integrated TSN (Time-Sensitive Networking), high-speed I/O, and robust peripheral support.
- Tested Environment: LS1028ARDB Reference Board.
T1024
- Overview: Dual-core 64-bit PowerPC processor based on the e5500 core, designed for embedded control and communication.
- Features: Virtualization, encryption acceleration, and advanced networking capabilities.
- Applications: Secure gateways, industrial automation, and telecom systems.
- Tested Environment: T1024RDB with NOR flash using IFC.
T2080
- Overview: High-performance quad-core 64-bit processor using the e6500 core with AltiVec technology for vector processing.
- Features: Exceptional performance for data-intensive workloads and advanced signal processing.
- Tested Environment: NAII 68PPC2 hardware.
P1021
- Overview: A dual-core PPC e500v2 processor.
- Features: Optimized for secure boot from NAND flash via eLBC (Enhanced Local Bus Controller).
- Boot Details: Supports first-stage boot loader and execution of wolfBoot for secure firmware validation and application loading.
- Applications: Ideal for industrial controllers and embedded systems requiring high reliability.
- Tested Environment: P1021RDB with NAND boot source using eLBC
How wolfBoot Secures NXP QorIQ Systems
wolfBoot ensures safe and trusted execution of firmware with:
- Secure Boot: Prevents unauthorized firmware from running.
- Signed Updates: Employs ECC/RSA cryptography for firmware authenticity.
- Customizable Configurations: Provides example setups for easier implementation across platforms.
Conclusion
Whether you’re working on NXP QorIQ PowerPC platforms or other architectures, wolfBoot is designed to deliver the best security and support. Its compatibility with wide ranges of different processors makes it essential for secure embedded systems development.
If you have questions about any of the above, please contact us at facts@wolfSSL.com or +1 425 245 8247.
Download wolfSSL Now
wolfTPM Zephyr Support Coming Soon
wolfSSL is pleased to announce its upcoming wolfTPM support with Zephyr RTOS. Zephyr is an open-source, real-time operating system targeted for resource-constrained devices, which makes it a perfect match for wolfTPM’s lightweight and efficient TPM 2.0 library.
This will introduce hardware-based cryptographic security to IoT and embedded systems. Extending wolfSSL’s existing support for Zephyr supported applications like wolfSSL and wolfSSH.
Stay tuned for future updates about wolfTPM Zephyr support. If you have any further questions about any of the above, please contact us at facts@wolfSSL.com or +1 425 245 8247.
Download wolfSSL Now
Coming Soon: FrodoKEM in wolfCrypt
“Hey wolfSSL, care to show us Europeans some post-quantum love?”
Of course! Here at wolfSSL we were founded in the USA and most of our team is American. Naturally, we have been following NIST (National Institute of Standards and Technology) standards. That said, we love and cherish our European customers and community as well.
Cryptography and communications protocols are international in nature and interoperability requirements span across several borders and oceans. This means that we need to not only look at our own standards bodies but those of other countries as well. Examples of this include our support for the ShangMi ciphers as well as support for the Brainpool ECC (Elliptical Curve Cryptography) curves.
It has been duly noted by wolfSSL that the German BSI (Bundesamt für Sicherheit in der Informationstechnik) and other international organizations are also pushing for industry support and standardization of FrodoKEM. For our customers that are participating in German and other European markets, you can take a sigh of relief and relax. We will soon be starting work on our own implementation of FrodoKEM.
Please do reach out to us letting us know of your interest in FrodoKEM or any other new algorithms that you would like to see implemented in wolfCrypt. Your voice matters as it sets our priorities and can accelerate what we do next!
If you have questions about any of the above, please contact us at facts@wolfSSL.com or +1 425 245 8247.
Download wolfSSL Now
Live Webinar: New and Updated: Getting Started with wolfSSH
Start 2025 with insights into the latest in SSH technology! Join us on January 23rd at 10 AM PT for an exclusive webinar, “New and Updated: Getting Started with wolfSSH.” Presented by Jacob Barthelmeh, Senior Software Engineer at wolfSSL, this session will cover the essential topics to help you harness the full potential of wolfSSH.
Register today: New and Updated: Getting Started with wolfSSH
Date: January 23rd | 10 AM PT
This webinar will provide everything you need to know to get started with wolfSSH. Attendees will gain insights into the architectural design to real-world applications, along with tips on building, debugging, and configuration.
Sneak Peek of the Webinar (subject to change):
- SSH Protocol Overview
- Supported Algorithms and Hardware Acceleration
- Building wolfSSH on Various Platforms
- Key Examples and Real-World Applications
- Debugging and Troubleshooting Techniques
Don’t miss this opportunity to deepen your understanding of wolfSSH and get answers to your questions directly from a wolfSSL expert! Register now to secure your spot!
As always our webinar will include Q&A throughout. If you have questions about any of the above, please contact us at facts@wolfssl.com or +1 425 245 8247.
Download wolfSSL Now
A slice of security for the Raspberry Pi Pico
Pretty much everyone knows what a Raspberry Pi board is, a very budget-friendly ARM board which runs Linux. What you might not know is that Raspberry Pi also created a very small, cheap, embedded ARM microcontroller range and development board as well. The board is known as the Raspberry Pi Pico and the chip is the RP2040.
The RP2040 is a $1 dual-core ARM Cortex-M0+ microcontroller with lots of features and a very well documented SDK. It was followed-up recently with the RP2350, which, for a similar price, gets you a dual-core ARM Cortex-M33 / RISC-V microcontroller. The RP2350 can be found on the Pi Pico 2 boards.
wolfSSL support
wolfSSL has had basic support for RP2040 for a little while, but with wolfSSL 5.7.6, we have provided improvements to the support. In addition, we have added support for the RP2350.
For both microcontrollers, we have enhanced the performance for RNG. We have integrated support for the PRNG in the Pico SDK for the RP2040 and the TRNG in the RP2350. Both provide performance improvements.
With the RP2350, we have also added support for the RISC-V mode for the cores.
Benchmark
What about the numbers? Well, with a RP2350 in ARM mode, clocked at the default 150MHz, these are the numbers you can expect to see from the wolfCrypt Benchmark:
wolfCrypt Benchmark (block bytes 1024, min 1.0 sec each) RNG 3 MiB took 1.001 seconds, 2.855 MiB/s AES-128-CBC-enc 3 MiB took 1.004 seconds, 2.529 MiB/s AES-128-CBC-dec 3 MiB took 1.000 seconds, 2.588 MiB/s AES-192-CBC-enc 2 MiB took 1.007 seconds, 2.157 MiB/s AES-192-CBC-dec 2 MiB took 1.005 seconds, 2.234 MiB/s AES-256-CBC-enc 2 MiB took 1.009 seconds, 1.888 MiB/s AES-256-CBC-dec 2 MiB took 1.003 seconds, 1.898 MiB/s AES-128-GCM-enc 900 KiB took 1.003 seconds, 897.418 KiB/s AES-128-GCM-dec 925 KiB took 1.015 seconds, 911.157 KiB/s AES-192-GCM-enc 850 KiB took 1.006 seconds, 844.758 KiB/s AES-192-GCM-dec 875 KiB took 1.021 seconds, 856.974 KiB/s AES-256-GCM-enc 825 KiB took 1.029 seconds, 802.085 KiB/s AES-256-GCM-dec 825 KiB took 1.015 seconds, 812.705 KiB/s AES-128-GCM-enc-no_AAD 1000 KiB took 1.017 seconds, 983.142 KiB/s AES-128-GCM-dec-no_AAD 1000 KiB took 1.004 seconds, 995.881 KiB/s AES-192-GCM-enc-no_AAD 925 KiB took 1.004 seconds, 921.384 KiB/s AES-192-GCM-dec-no_AAD 950 KiB took 1.018 seconds, 933.496 KiB/s AES-256-GCM-enc-no_AAD 875 KiB took 1.007 seconds, 868.579 KiB/s AES-256-GCM-dec-no_AAD 900 KiB took 1.024 seconds, 879.291 KiB/s GMAC Table 4-bit 2 MiB took 1.000 seconds, 2.488 MiB/s CHACHA 6 MiB took 1.004 seconds, 6.397 MiB/s CHA-POLY 4 MiB took 1.001 seconds, 4.024 MiB/s POLY1305 21 MiB took 1.000 seconds, 20.868 MiB/s SHA 6 MiB took 1.000 seconds, 6.493 MiB/s SHA-256 2 MiB took 1.010 seconds, 2.224 MiB/s SHA-384 1 MiB took 1.013 seconds, 0.988 MiB/s SHA-512 975 KiB took 1.019 seconds, 956.876 KiB/s SHA-512/224 775 KiB took 1.000 seconds, 774.960 KiB/s SHA-512/256 1 MiB took 1.024 seconds, 0.978 MiB/s SHA3-224 1 MiB took 1.001 seconds, 1.171 MiB/s SHA3-256 1 MiB took 1.013 seconds, 1.109 MiB/s SHA3-384 875 KiB took 1.017 seconds, 860.133 KiB/s SHA3-512 625 KiB took 1.032 seconds, 605.855 KiB/s SHAKE256 1 MiB took 1.013 seconds, 1.109 MiB/s HMAC-SHA 6 MiB took 1.001 seconds, 6.463 MiB/s HMAC-SHA256 2 MiB took 1.007 seconds, 2.206 MiB/s HMAC-SHA384 1000 KiB took 1.012 seconds, 987.685 KiB/s HMAC-SHA512 950 KiB took 1.010 seconds, 940.914 KiB/s RSA 2048 public 226 ops took 1.004 sec, avg 4.442 ms, 225.121 ops/sec RSA 2048 private 8 ops took 1.093 sec, avg 136.666 ms, 7.317 ops/sec DH 2048 key gen 16 ops took 1.015 sec, avg 63.442 ms, 15.762 ops/sec DH 2048 agree 16 ops took 1.009 sec, avg 63.034 ms, 15.864 ops/sec ECC [ SECP256R1] 256 key gen 46 ops took 1.034 sec, avg 22.489 ms, 44.466 ops/sec ECDHE [ SECP256R1] 256 agree 108 ops took 1.004 sec, avg 9.292 ms, 107.615 ops/sec ECDSA [ SECP256R1] 256 sign 42 ops took 1.017 sec, avg 24.226 ms, 41.278 ops/sec ECDSA [ SECP256R1] 256 verify 96 ops took 1.015 sec, avg 10.569 ms, 94.614 ops/sec CURVE 25519 key gen 103 ops took 1.006 sec, avg 9.762 ms, 102.433 ops/sec CURVE 25519 agree 106 ops took 1.015 sec, avg 9.575 ms, 104.437 ops/sec ED 25519 key gen 101 ops took 1.005 sec, avg 9.952 ms, 100.479 ops/sec ED 25519 sign 80 ops took 1.019 sec, avg 12.741 ms, 78.484 ops/sec ED 25519 verify 76 ops took 1.020 sec, avg 13.427 ms, 74.477 ops/sec CURVE 448 key gen 25 ops took 1.014 sec, avg 40.580 ms, 24.643 ops/sec CURVE 448 agree 26 ops took 1.034 sec, avg 39.770 ms, 25.144 ops/sec ED 448 key gen 34 ops took 1.027 sec, avg 30.219 ms, 33.092 ops/sec ED 448 sign 32 ops took 1.030 sec, avg 32.187 ms, 31.069 ops/sec ED 448 verify 22 ops took 1.098 sec, avg 49.900 ms, 20.040 ops/sec Benchmark complete
For the RP2040, you can expect around 33-50% of this performance at the default 125MHz.
wolfBoot support
We are not stopping at just plain wolfSSL, we have a port of wolfBoot in-development to allow for secure bootloading of the RP2350 microcontroller. We will announce more details about this soon.
How do I try this?
We have a wolfSSL example available in our wolfSSL Examples repository. For more information, you can reach out to us for help at facts@wolfSSL.com or +1 425 245 8247.
Download wolfSSL Now
wolfCrypt FIPS 140-3 Operating Environments
wolfSSL’s crypto library, wolfCrypt, has obtained a 5-year FIPS 140-3 Validated Certificate #4718. wolfCrypt FIPS is known for its unmatched portability, runs on everything, and is highly optimized for dozens of hardware targets.
WolfCrypt is commonly utilized in standard operating environments due to its royalty-free pricing model and exceptional support across multiple platforms. The wolfCrypt FIPS module has been validated on numerous Operating Environments (OEs). The current list of planned OEs for the wolfCrypt FIPS 140-3 certificate (#4718) is listed here for reference. wolfSSL can easily add additional OEs to existing wolfCrypt FIPS certificates. To learn more about this process, contact us at fips@wolfssl.com today!
Certificate #4718 Current OE List:
Operating System | Processor | Processor Algorithm Acceleration | Product (TBA = To Be Announced at a later time) |
---|---|---|---|
Android 13 | Exynos 9611 without PAA | No | Samsung Galaxy XCover Pro |
Linux 5.4 | BCM56260B0IFSBG - Sabre2 | No | WTM 4000 (Aviat) |
Red Hat Enterprise Linux Workstation 8.9 | Intel® Xeon® W-2255 @ 3.7GHz | No | Precision 5820 Tower |
FreeRTOS v10.4 | Renesas R7FA6E10F | No | TBA |
Linux 5.15 | Freescale i.MX7 Dual Arm Cortex A-7 | No | TBA |
Linux 4.14 | Intel® Atom® E3930 @1.30GHz | No | TBA |
Linux 4.14 | Intel® Atom® E3940 @1.60GHz | No | TBA |
NET+OS v7.6 | Digi International NS9210 | No | TBA |
Yocto (kirkstone) 4.0 | NXP i.MX6UL | No | TBA |
MQX 3.4 | NXP PowerQUICC II MPC8313e 32bit | No | TBA |
CodeOS v1.4 | CodeCorp CT8200 (ARM FA626TE) | No | Series CR2700 Code Reader(s) |
OpenRTOS v10.5 | STM32L4R5 | No | Teledyne Webb SOM Module |
Endace Crypto Firmware 2.1 | Intel® Xeon® Silver 4316 CPU @2.30GHz | No | EndaceProbe 2144 |
Endace Crypto Firmware 2.1 | Intel® Xeon® Silver 4316 CPU @2.30GHz | Yes | EndaceProbe 2144 |
Endace Crypto Firmware 2.1 | Intel® Xeon® Gold 6338N CPU @2.20GHz | No | EndaceProbe 2184 |
Endace Crypto Firmware 2.1 | Intel® Xeon® Gold 6338N CPU @2.20GHz | Yes | EndaceProbe 2184 |
Endace Crypto Firmware 2.1 | Intel® Xeon® Gold 5418N CPU @1.80GHz | Yes | TBA |
Endace Crypto Firmware 2.1 | Intel® Xeon® Gold 6230N CPU @2.30GHz | Yes | EndaceProbe 92C8 |
Anyware Trusted Zero Client Firmware Kernel 6.1 | AMD Ryzen Embedded R1305G | No | Anyware Trusted Zero Client |
Anyware Trusted Zero Client Firmware Kernel 6.1 | AMD Ryzen Embedded R1305G | Yes | Anyware Trusted Zero Client |
Anyware Trusted Zero Client Firmware Kernel 6.1 | AMD Ryzen Embedded R2314 | Yes | HP tz655 Trusted Zero Client |
Fusion Embedded RTOS 5.0 | Analog Devices ADSP-BF516 (Blackfin) | No | Classone ® IP Radio Gateway |
Linux 5.4 | NXP i.MX8M | No | TBA |
Linux 4.9 | ARM Cortex-A7 | No | TBA |
Linux 5.10 | NXP i.MX8 | No | TBA |
HP Imaging & Printing Linux 4.9 Kernel | ARM Cortex-A72 | No | HP PN 3PZ95-60002 |
HP Imaging & Printing Linux 4.9 Kernel | ARM Cortex-A72 | Yes | HP PN 3PZ95-60002 |
HP Imaging & Printing Linux 4.9 Kernel | ARM Cortex-A53 | No | HP PN 6QN27-67002 |
HP Imaging & Printing Linux 4.9 Kernel | ARM Cortex-A53 | Yes | HP PN 6QN27-67002 |
Microsoft Windows CE 6.0 | ARM Cortex-A8 | No | HP LaserJet Enterprise |
Android 13 | Qualcomm Snapdragon 8 Gen 2 (SoC) | No | TBA |
Android 13 | Qualcomm Snapdragon 8 Gen 2 (SoC) | Yes | TBA |
iOS 17.3 | Apple A15 Bionic | No | TBA |
iOS 17.3 | Apple A15 Bionic | Yes | TBA |
Windows 11 Pro | Intel® Core™ i7-1255U @ 1.70 Ghz | No | TBA |
Windows 11 Pro | Intel® Core™ i7-1255U @ 1.70 Ghz | Yes | TBA |
RHEL 8.10 running on RHEL 8.10 KVM | Intel® Xeon® Gold 6526Y @2.80GHz | No | TBA |
RHEL 8.10 running on RHEL 8.10 KVM | Intel® Xeon® Gold 6526Y @2.80GHz | Yes | TBA |
REDACTED Linux 5.4 | Xilinx Zynq-7000 SoC | No | TBA |
REDACTED Linux 5.4 | Xilinx Zynq-7000 SoC | Yes | TBA |
REDACTED Linux 4.19 | Xilinx Zynq Ultrascale+ | No | TBA |
REDACTED Linux 4.19 | Xilinx Zynq Ultrascale+ | Yes | TBA |
REDACTED Linux 4.9 | Ambarella S5L SoC | No | TBA |
REDACTED Linux 4.9 | Ambarella S5L SoC | Yes | TBA |
REDACTED Linux 5.4 | i.MX8 Quad Max SoC | No | TBA |
REDACTED Linux 5.4 | i.MX8 Quad Max SoC | Yes | TBA |
FreeRTOS v10.4 | NXP i.MX RT105x | No | TBA |
Linux 5.15 | MTK MT8395 | No | TBA |
Android 14 | Qualcomm SM8350 Snapdragon | No | Samsung Galaxy S21 |
Android 14 | Qualcomm SM8350 Snapdragon | Yes | Samsung Galaxy S21 |
Linux 6.6 | Xilinx Zynq Ultrascale+ | No | SEL Switch |
Linux 6.6 | Altera SoC FPGA | No | SEL-2740 |
Linux 5.15 | i.MX6UL | No | TBA |
Linux 5.4 | Dual ARM Cortex A7 | Yes | Lenovo XClarity Controller |
Debian 12.5 | Intel® Xeon® E3-1275v6 @3.80GHz | No | TBA |
Ubuntu Version 22.04 running on VMWare ESXi Version 7.0.3 | Intel® Xeon® ES*-2697 v3 | No | TBA |
Linux 5.15 | Freescale i.MX7 Dual Arm Cortex A-7 | No | TBA |
Linux 6.6 | Dual ARM Cortex A7 | Yes | Lenovo XClarity Controller |
If you have questions about any of the above, please contact us at facts@wolfSSL.com or +1 425 245 8247.
Download wolfSSL Now
wolfSSL FIDO Compliance: Implementing FIDO Authentication Standards with wolfCrypt
wolfSSL FIDO Compliance
As organizations move away from traditional password-based authentication, FIDO (Fast Identity Online) has emerged as one of the leading standards for strong authentication. wolfSSL is positioned to support this transition with our robust cryptography library, wolfCrypt, which implements many of the core algorithms required for FIDO compliance. This blog outlines how wolfSSL can serve as a foundation for FIDO-compliant authentication solutions.
FIDO and Why It Matters
FIDO (Fast Identity Online) Alliance maintains strict standards for cryptographic implementations in authentication systems with a mission to reduce the reliance of passwords. With wolfCrypt implementing most of the FIDO-approved algorithms, this means wolfSSL can provide developers with a compliant cryptographic foundation for their FIDO authentication solutions for both large, web-connected systems as well as embedded microcontrollers.
Existing FIDO-Approved Algorithms
wolfSSL already implements many of the cryptographic algorithms from FIDO’s allowed cryptography list[1], including:
- SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-384 and SHA3-512
- HMAC capabilities with the allowed hash functions
- HMAC implementation for secure message authentication
- AES-CMAC support for lightweight authentication
- AES-GCM for authenticated encryption
- RSA PSS and PKCS#1 v1.5 signature support
- Ed25519 signatures
The only missing algorithms in wolfSSL are the implementation of ED256, ED256-2, ED512 and ED638.
wolfSSL also meets FIDO’s deterministic random number/bit generator requirements as wolfCrypt is NIST FIPS 140-2/3 compliant which uses NIST SP800-90A HASH_DRBG as well as NIST SP800-90B compliant entropy generation.
Potential Integration with FIDO2 Applications and Libraries
FIDO2 is the latest authentication standard that enables passwordless and strong two-factor authentication through the Web Authentication (WebAuthn) API and Client-to-Authenticator Protocol (CTAP). With there already being FIDO2 applications on the market wolfSSL can easily be implemented directly or automatically with the compatibility layer or engine/provider OpenSSL replacement. For instance Yubico’s libfido2 library which uses OpenSSL could be ported to use wolfCrypt instead.
A wolfSSL employee has also been working on a project that uses 2FA with wolfCrypt on a Raspberry Pi Pico called Fidelio.
FIPS 140-3 and FIDO2
Organizations requiring both FIDO2 and FIPS 140-3 compliance can leverage wolfCrypt’s FIPS 140-3 validated module, which provides CAVP and FIPS validated implementations of essential FIDO algorithms. This dual compliance ensures solutions meet both authentication standards and regulatory requirements.
Looking Forward
Contact us at facts@wolfSSL.com or +1 425 245 8247 for question about comprehensive support for integrating wolfCrypt into your FIDO2 applications, including:
- Technical consultation for implementation
- Documentation and example code
- Integration with hardware security modules
- Optimization for embedded systems
- Custom builds for specific platforms
Resources
[1] “FIDO Authenticator Allowed Cryptography List,” FIDO Alliance, 2023.
Download wolfSSL Now
Dilithium Support in wolfCLU
We have added the Dilithium command to wolfCLU. Dilithium (referred to as ML-DSA by NIST) is a post-quantam cryptography (PQC) algorithm for signing and verification. This blog post provides an overview of how to use the Dilithium command in wolfCLU.
To use the Dilithium command, you must first build wolfSSL with the appropriate configuration options: `–enable-wolfclu` and `–enable-dilithium`.
Building wolfSSL:
$ cd wolfssl $ ./autogen.sh $ ./configurte –enable-wolfclu –enable-dilithium $ make && make check $ sudo make install
Once wolfSSL is built and installed, you can build wolfCLU. No additional macros are required for this step. After installing, you can check wolfssl command version.
Building wolfCLU:
$ cd wolfclu $ ./autogen.sh $ ./configure $ make && make check $ sudo make install $ wolfssl -v
Key Generation:
To generate a Dilithium key pair, use the “-genkey” command. Dilithium supports different security levels (2, 3, and 5) as defined by NIST. You can specify the security level using “-level” and the output filename using “-out”.
$ wolfssl -genkey dilithium -level 2 -out dilithium_key -outform der -output keypair
Sign:
To sign a file with the Dilithium private key, use the “-sign” command. Specify the private key with “-inkey”, the file to be signed with “-in”, and the output signature file with “-out”.
$ wolfssl dilithium -sign -inkey dilithium_key.priv -inform der -in test.txt -out signature.sig
Verify:
To verify a signed file, use the “-verify” command. Provide the public key using “-inkey”, the file to verify with “-in”, and the signature file with “-sigfile”. If the signature is valid, the output will display “Valid Signature”. If not, it will display “Invalid Signature”.
$ wolfssl dilithium -verify -inkey dilithium_key.pub -inform der -in test.txt -sigfile signature.sig
With these steps, you can easily generate keys, sign files and verify signatures using the Dilithium command in wolfCLU.
If you have questions about any of the above, please contact us at facts@wolfSSL.com or +1 425 245 8247.
Download wolfSSL Now
Renesas RX TSIP with ECDSA and Crypto Callbacks
wolfSSL now has support for Renesas RX TSIP with ECDSA and crypto callbacks. This update provides broader flexibility and security for embedded systems with Renesas RX TSIP. Below is a summary of the key changes and updates that were added in PR# 7685:
Key Changes and Features
- Renesas RX TSIP with ECDSA Support
WolfSSL now fully supports ECDSA on Renesas RX TSIP, which adds greater functionality when generating signatures. The update also adds support for raw R+S signatures. - ECC with NO_ASN
You can now use ECC support without ASN.1 encoding by using the configuration:
‘./configure –enable-cryptonly –disable-rsa –disable-asn –disable-examples’
This can decrease the overhead in environments where you don’t need ASN.1 support. - RX TSIP Crypt Configuration Fixes
These changes also fixes issues with WOLFSSL_RENESAS_TSIP_CRYPTONLY and NO_WOLFSSL_RENESAS_TSIP_CRYPT_HASH macros, allowing for builds to complete smoothly when there is only a requirement for cryptography operations. - Reverted wc_GenerateSeed Support
wc_GenerateSeed on the RX TSIP was reverted. This ensures compatibility with the updated RNG on RX TSIP. - Updated Client Authentication Key Data
Example key data with private key for client authentication has been updated.
Testing
These changes were tested using the e2Studio IDE, and tests were verified including client and server examples.
Conclusion
These updates extend wolfSSL’s support of the Renesas RX TSIP to include ECDSA and Raw R+S signature support, greatly improving flexibility and optimizing the build for embedded systems. If you have questions about any of the above, please contact us at facts@wolfSSL.com or +1 425 245 8247.
Download wolfSSL Now
Weekly updates
Archives
- February 2025 (15)
- January 2025 (23)
- December 2024 (22)
- November 2024 (29)
- October 2024 (18)
- September 2024 (21)
- August 2024 (24)
- July 2024 (27)
- June 2024 (22)
- May 2024 (28)
- April 2024 (29)
- March 2024 (21)
- February 2024 (18)
- January 2024 (21)
- December 2023 (20)
- November 2023 (20)
- October 2023 (23)
- September 2023 (17)
- August 2023 (25)
- July 2023 (39)
- June 2023 (13)
- May 2023 (11)
- April 2023 (6)
- March 2023 (23)
- February 2023 (7)
- January 2023 (7)
- December 2022 (15)
- November 2022 (11)
- October 2022 (8)
- September 2022 (7)
- August 2022 (12)
- July 2022 (7)
- June 2022 (14)
- May 2022 (10)
- April 2022 (11)
- March 2022 (12)
- February 2022 (22)
- January 2022 (12)
- December 2021 (13)
- November 2021 (27)
- October 2021 (11)
- September 2021 (14)
- August 2021 (10)
- July 2021 (16)
- June 2021 (13)
- May 2021 (9)
- April 2021 (13)
- March 2021 (24)
- February 2021 (22)
- January 2021 (18)
- December 2020 (19)
- November 2020 (11)
- October 2020 (3)
- September 2020 (20)
- August 2020 (11)
- July 2020 (7)
- June 2020 (14)
- May 2020 (13)
- April 2020 (14)
- March 2020 (4)
- February 2020 (21)
- January 2020 (18)
- December 2019 (7)
- November 2019 (16)
- October 2019 (14)
- September 2019 (18)
- August 2019 (16)
- July 2019 (8)
- June 2019 (9)
- May 2019 (28)
- April 2019 (27)
- March 2019 (15)
- February 2019 (10)
- January 2019 (16)
- December 2018 (24)
- November 2018 (9)
- October 2018 (15)
- September 2018 (15)
- August 2018 (5)
- July 2018 (15)
- June 2018 (29)
- May 2018 (12)
- April 2018 (6)
- March 2018 (18)
- February 2018 (6)
- January 2018 (11)
- December 2017 (5)
- November 2017 (12)
- October 2017 (5)
- September 2017 (7)
- August 2017 (6)
- July 2017 (11)
- June 2017 (7)
- May 2017 (9)
- April 2017 (5)
- March 2017 (6)
- January 2017 (8)
- December 2016 (2)
- November 2016 (1)
- October 2016 (15)
- September 2016 (6)
- August 2016 (5)
- July 2016 (4)
- June 2016 (9)
- May 2016 (4)
- April 2016 (4)
- March 2016 (4)
- February 2016 (9)
- January 2016 (6)
- December 2015 (4)
- November 2015 (6)
- October 2015 (5)
- September 2015 (5)
- August 2015 (8)
- July 2015 (7)
- June 2015 (9)
- May 2015 (1)
- April 2015 (4)
- March 2015 (12)
- January 2015 (4)
- December 2014 (6)
- November 2014 (3)
- October 2014 (1)
- September 2014 (11)
- August 2014 (5)
- July 2014 (9)
- June 2014 (10)
- May 2014 (5)
- April 2014 (9)
- February 2014 (3)
- January 2014 (5)
- December 2013 (7)
- November 2013 (4)
- October 2013 (7)
- September 2013 (3)
- August 2013 (9)
- July 2013 (7)
- June 2013 (4)
- May 2013 (7)
- April 2013 (4)
- March 2013 (2)
- February 2013 (3)
- January 2013 (8)
- December 2012 (12)
- November 2012 (5)
- October 2012 (7)
- September 2012 (3)
- August 2012 (6)
- July 2012 (4)
- June 2012 (3)
- May 2012 (4)
- April 2012 (6)
- March 2012 (2)
- February 2012 (5)
- January 2012 (7)
- December 2011 (5)
- November 2011 (7)
- October 2011 (5)
- September 2011 (6)
- August 2011 (5)
- July 2011 (2)
- June 2011 (7)
- May 2011 (11)
- April 2011 (4)
- March 2011 (12)
- February 2011 (7)
- January 2011 (11)
- December 2010 (17)
- November 2010 (12)
- October 2010 (11)
- September 2010 (9)
- August 2010 (20)
- July 2010 (12)
- June 2010 (7)
- May 2010 (1)
- January 2010 (2)
- November 2009 (2)
- October 2009 (1)
- September 2009 (1)
- May 2009 (1)
- February 2009 (1)
- January 2009 (1)
- December 2008 (1)