wolfSSL’s progress continued at a fantastic pace in 2022! New people, new products, new customers, new code, and new testing marked another excellent year for the project and the company. We are particularly pleased with the amount of integration work that we completed in conjunction with our open source and commercial partners. Additionally, our FIPS 140-3 certificate moved closer to completion. Finally, as our readers know, we are laser focused on producing the best tested TLS 1.3 and cryptography. Our latest advancements in testing are covered later in this report.
We also want to give our thanks to all of our wonderful customers, open source users, and partners. You’ve been tremendous and we look forward to serving you in 2023.
wolfSSL Technical Progress
A total of 9 releases of the wolfSSL embedded TLS library were delivered in 2022, each with bug fixes, enhancements, and new feature additions. Highlights of these releases included:
- New Hardware and OS Ports
- Hardware
- Xilinx Versal
- NXP i.MX RT685
- Analog Devices MAXQ1080 and MAXQ1065
- Zephyr support for Nordic nRF5340
- wolfCrypt ported to Infineon TriCore HSM
- wolfSSL Espressif port
- wolfSSL port to STM32U585
- wolfBoot NXP QorIQ P1021 support
- OS Ports
- Hardware
- New Open Source Software Ports!
- chrony – Versatile implementation of the Network Time Protocol (NTP)
- FFmpeg – Video manipulation utility. wolfSSL used to access remote files over HTTPS.
- git – Version control system. Requires other dependencies to also be built with wolfSSL (curl + ssh).
- Kerberos 5 (krb5) – Network authentication service.
- libspdm – DMTF’s Security Protocols and Data Models. Enables authentication, attestation, and key exchange to assist in providing infrastructure security enablement.
- NXP SE05X Middleware – Adds a HostCrypto option for using wolfSSL. Establish an authenticated SCP03 channel to SE050.
- Liboqs – Patched to use different SPHINCS+ variants and liboqs version.
- Updates to Existing Ports
- StrongSwan VPN (libstrongswan) – Updates to build errors with latest release. Tested with wolfCrypt FIPS.
- lighttpd – Enable post-quantum algorithms with liboqs
- stunnel – Enable post-quantum algorithms with stunnel
- Version Updates
- Compiler and IDE Updates
- Added IAR example for the MSP430, located in IDE/IAR-MSP430.
- Update VxWorks Workbench example to support the latest VxWorks.
- Added example Visual Studio project for FIPS v5 ready
- Added support for SEGGER embOS and emNET with an IAR Workbench example in IDE/IAR-EWARM/embOS.
- Added support for Infineon AURIX IDE.
- Added support for the nRF5340 with CryptoCell-312 to Zephyr.
- Added support for NuttX.
- Added example MCUXpresso IDE project.
- Post Quantum Algorithm Support
- wolfSSL KEMs: Kyber – liboqs, pqm4, and wolfSSL proprietary.
- wolfSSL Authentication: Dilithium/Falcon/Sphincs+ – liboqs.
- wolfSSH: hybrid ECDHE-Kyber (P256 with Level1).
- wolfMQTT KEMs: Kyber Level1 and hybrid ECDHE-Kyber (P256 with Level1).
- wolfMQTT Authentication: Falcon Level1.
- New Hardware Crypto Support
- Apple M1 (ARMv8.2-A)
- NXP SE050 – Expanded support
- NXP CAAM SECO HSM (secure controller)
- NXP CAAM QNX – Expanded support
- Renesas TSIP RX65N and RX72N
- Analog Devices MAXQ1080 and MAXQ1065
- Platform Security Architecture (PSA) Interface
- Xilinx Versal Hardened Crypto
- ARM32 and x86 assembly support expanded
- CryptoCell-312
- Improvements to Existing Hardware Crypto Support
- SHA-3 performance with x86_64 assembly
- AES CBC/GCM x86 ASM performance
- AES ARM32 without crypto hardware instructions
- AES GCM assembler optimization for ARMv7
- X448 and Ed448 performance
- New and Updated Algorithms
- SP Math ECC 521-bit support
- Support for RSA-PSS signed certificates
- Added CSR custom OID generation support
- TLS support for ISO-TP transport over CAN Bus
- Non-blocking ECC key generation and shared secret for P-256/384/521 including with TLS/DTLS
- ECIES geniv=Generate IV, more AES options, comp pub keys
- Algorithm Performance Optimization
- SP Math is now default and provides better performance!
- SHA-3 on ARMv8.2-A and later using SHA-3 instructions
- SHA-3 assembly for Intel x64
- Intel x86 AES using AES-NI
- ARMv7 SHA2-256 in assembly
- SP implementation of P384 improved performance
- X448 and Ed448 improved performance for 64-bit platforms
- New and Updated Build Options (as if you didn’t have enough already!)
--enable-entropy-memuse
--enable-sys-ca-certs
--enable-quic
--enable-srtp
--enable-kyber
--enable-psa
--enable-psa-lib-static
--enable-dtls13
--enable-dtlscid
--enable-eccencrypt=geniv
--enable-secure-renegotiation-info
--enable-ticket-nonce-malloc
--enable-chrony
--enable-openldap
--enable-ffmpeg
--enable-strongswan
--enable-heapmath
--enable-aessiv
--enable-amdrand
--with-seco=PATH
- TLS Additions and Updates
- Added DTLS v1.3 support
- Added DTLS-SRTP support
- Added QUIC support
- Added system CA Certificate Store support (Linux, Mac, Win, Android)
- Implemented a software-based entropy gatherer
- Added sniffer asynchronous support (with Intel QuickAssist)
- Expanded wolfSSL’s OpenSSL compatibility layer: added 72 new API’s (now over 1,600 API’s)
- Expanded wolfSSL’s safe ABI support by 50 API’s (to 113 in total)
- Constant time improvements
- ForceZero improvements
- Glitching protection by hardening the TLS encrypt operations
- Added additional TLS state checking
- Session cache refactoring
- (Dear reader, if you are curious about any of the above items, feel free to ask us about the details at facts@wolfssl.com)
- The first ever DTLS 1.3 Release in the wild
- DTLS 1.3 support added in June 2022!
- Added version negotiation support
- Added Connection ID support
- (Narrator: Please try this out and test it, we need feedback)
- Single Precision Math Updates
- SP Math ECC 384-bit speed improvements
- SP support for ARMv3, ARMv6, and ARMv7a
- SP Math ECC 521-bit support
- FIPS 140-2 and 140-3 Validation News!
- FIPS 140-2 News
- SP 800-56A Revision 3 compliance requirements were received from the lab in fall of 2021. All testing was updated to account for the revision 3 requirements in late 2021 and early 2022.
- February 14th, 2022 – 10 new Operational environments added to wolfCrypt FIPS cert #3389 (All had been tested prior to SP 800-56A Revision 3 requirements)
- March 14th, 2022 – 12 new Operational environments added to wolfCrypt FIPS cert #3389 (Some but not all tested with the new SP800-56A Revision 3 compliance in place)
- March 15th, 2022 – 20 of the past Operational Environments were retested bringing them up to the latest SP800-56A Revision 3 compliance so that they would not be dropped from cert #3389 on July 1st of 2022, the stated transition date handed down by the CMVP
- wolfSSL has completed testing for 14 additional Operating Environments while waiting for SP800-56A Revision 3 submissions to be reviewed, with 12 new Operational Environments in the testing process that will soon be ready for submission
- wolfSSL completed CAVP-only algorithm certificates for select OE’s that had no plans to go through CMVP validation
- wolfSSL takes a hard stance on “Vendor Affirmation” abuse by software module vendors (not hardware vendors) making affirmation claims on hardware and software Operational Environments that are wholly different from tested configurations on the associated certificate
- wolfSSL proposed an update to “tested configurations” and how they get listed on a FIPS certificate(s)
- FIPS 140-3 News
- wolfSSL’s 140-3 submission changed to “In Review” status on October 28th of 2022 and we are hopeful to see a certificate sometime in Q1 or Q2 of 2023!
- FIPS 140-2 News
- Testing
- Our primary focus for 2022 was migrating all existing tests capable of running in the cloud to Google Compute Engine for scalability and capability
- Greatly expanded coverage of DTLS testing to include the latest DTLS 1.3
- Added fuzzing targets for the DTLS 1.2 and DTLS 1.3 protocols using wolfSSL’s in-house fuzzing solution
- Added 100’s of DTLS configurations that are tested on every GitHub pull request and again against the master code repository every night
- Greatly expanded coverage of Single Precision math testing
- Added fuzzing targets for the Single Precision math library using wolfSSL’s in-house fuzzer
- Added 100’s of SP configurations to both GitHub Pull Request testing and nightly testing
- Added automated testing of the FIPS 140-3 submission candidate code with wolfCLU (command line utility) (narrator: wolfCLU is really coming along)
- Added automated testing of the wolfSSL’s in-house proprietary ACVP harness, including testing of:
- wolfCrypt FIPS 140-2 validated module
- wolfCrypt FIPS 140-3 submission candidate
- wolfSSL FIPS Ready
- wolfSSL non-FIPS master
- Added TLS regression tests to guard against:
- Performance degradation in TLS handshake times
- Throughput degradation in TLS record layer transactions
- Cryptographic algorithm performance degradation
- Footprint size bloat (Narrator: Nobody enjoys their TLS bloated)
- Added new supplementary coverage through the “wolfssl-multi-test” framework:
- Added cppcheck static analysis
- Added clang-tidy static analysis
- Added fully automated nightly runs of all scenarios, with rich text result emails targeted using git blame
- Added wolfCrypt benchmark coverage, checked nightly against per-config per-algorithm baselines
- Added cross target building+testing (qemu-based) for all asm-supported targets (ARM, MIPS, PPC, RISC-V, S390, 68k), including all 32/64 bit and endian variants, and sanitizer scenarios on all ARM variants
- Added shellcheck static analysis for shell scripts
- Added integrated test runtime isolation using bubblewrap and unshare
- Expanded Linux kernel module testing to mainline (prerelease) kernels
- Added per-line git blame for test output
- Added FIPS 140-3 “–disable-sha” test scenarios
- Added wolfSentry, WireGuard, QUIC, DTLS13, and PQ coverage
- Added “super-quick-check” 15 minute meta-scenario
- Numerous consistency/usability improvements – 10 new command line options, including –dry-run, –enable-bwrap, and –verbose-analyzers
- Examples
- New wolfSSL examples and wolfssl-examples repository additions included:
- Renesas RX72N examples with FreeRTOS+IoT
- Example C# PSK client
- Example of adding the wolfSSL library as a subdirectory to a project and using CMake to build
- Analog Devices MAXQ10xx example client
- NXP SE050 EdgeLock example
- OCSP non-blocking async example
- wolfCrypt API example use of SPHINCS+ key for sign/verify
- Expanded Android examples to include native wolfCrypt test and benchmark plus SP Math configurations
- Script to generate example Dlithium Cert-chains
- DTLS 1.3 examples
- wolfSSL + CAAM using SECO HSM and NVM examples
- ESP32 with VisualGDB examples
- AES key update examples
- Example of certificate generation and parsing with custom extensions
- NXP SECO cryptodev examples
- CSR example using crypto callbacks (HSM)
- Trusted Firmware-M TLS1.3 example
- Updated examples included:
- Updated certificate generation examples to create CA key and cert
- ESP32 test and benchmark example clean-up
- ESP32 TLS1.3 WiFi station client/server example
- PQM4 library example to enable optimizations
- (Narrator: Ask us for more examples if you need them at facts@wolfssl.com)
- New wolfSSL examples and wolfssl-examples repository additions included:
- Additional Product Enhancements
- Documentation
- wolfSSL product documentation received a facelift, with improved Markdown sources, a new nightly build system, and public GitHub repository
- All product manuals are now re-built nightly and available on wolfSSL’s Documentation web page in both HTML and PDF formats!
- wolfMQTT (6 releases)
- Fixes for multithreading use with non-blocking
- Documentation expansion
- GitHub Action testing
- MQTTv5 property handling fixes
- CMake support and fixes to vcpkg build
- ST NUCLEO F767ZI with TOPPERS OS support
- Post-Quantum algorithm support
- Addition of a GitHub CIFuzz action
- MQTTv5 and MQTT-SN disconnect fixes
- wolfSSH (3 releases)
- wolfSSHd
- Server daemon targeting embedded Linux
- Allows users to log into a shell on their device
- Allows users to SFTP files to and from the filesystem
- X.509 Certificates
- Uses X.509 certificates for public key authentication
- Allows for CRL and OSCP checking
- Support for certificate chains
- PQA Support with Hybrid ECDH-P256 Kyber-Level1
- Better Interoperability
- winSCP
- Filezilla
- More RTOS Support
- Green Hills INTEGRITY
- FreeRTOS with LwIP
- Espressif ESP-IDF configuration
- Linux on PowerPC
- wolfCrypt FIPS 140-3 integration
- wolfSSHd
- wolfTPM (4 releases)
- Added C# wrappers for key handling, CSR/Cert generation, RSA encrypt/decrypt and sign/verify
- Added Infineon SLB9672 support
- Added Infineon TriCore HAL support
- Added examples for Keyed Hash / NV counter increment
- Added keygen example for creating a primary key
- Added ST33 GetRandom2 support
- Add CMake support
- Fixes for C++ compilers
- (Narrator: This is the tool to add a TPM to your embedded systems project)
- wolfBoot (4 releases)
- New signature algorithm: ED448
- New encryption algorithm: AES (128 and 256 in CTR mode)
- Mitigations against fault injections (collaboration with newAE)
- Support for multiple partitions/multiple keys
- Encryption extended to delta updates and self updates
- New target: STM32G0
- New target: STM32U5
- New target: i.MX-RT1050
- New target: NXP T2080
- New target: NXP QoriQ p1021
- New target: x86 (via UEFI)
- SPI refactoring and support for QSPI on STM32
- Improved tests (new cloud CI + GitHub actions using renode)
- DO-178C code cropping (dry run) in preparation for certification
- wolfSentry (5 releases)
- User-defined key-value pairs, allowing user plugins to store configuration data in the unified wolfSentry config (JSON). Supports binary objects in base64, custom K-V validators, and freeform user-defined JSON tree values.
- User-defined address families, for plugin support of any address family, with idiomatic addresses in the unified JSON config.
- JSON DOM helper routines, for easy app-level use of JSON.
- New automatic penalty-boxing logic in the core, driven by the “derogatory” and “commendable” counts in each route state.
- An example app with dynamic rules and realtime notifications.
- Completed readwrite lock “kernel” layered on counting semaphores, developed on POSIX, ported to Mac OSX and FreeRTOS – supports complex semantics including cheap recursion and lock promotion/demotion with promotion reservations. Implements error checking and acquisition deadlines.
- Added autolocking to all public APIs that need it – on multicore targets with multithreaded accept handlers, most filtration/processing of traffic by wolfSentry is concurrent using shared locks. With high-complexity plugins this can be important.
- Final beta release (0.8.0) staged our first production release in January 2023.
- wolfEngine (Narrator: or how to plug wolfCrypt into OpenSSL) (Release of stable 1.0.0 version)
- Added compatibility with wolfCrypt FIPS 140-3
- Added examples of loading wolfEngine via config file or programmatically
- Improved RNG, AES-GCM, AES-CTR, RSA, ECC, and DH support
- Added engine control commands
- Improved Windows and Visual Studio build support
- wolfCLU (2 releases)
- Expanded x509 command to handle
- -subject
- -issuer
- -serial
- -dates
- -fingerprint
- -purpose
- -hash
- -modulus
- Expanded enc command with -pass
- Expanded verify command to include -partial_chain
- Expanded req command to handle
- -text
- -noout
- -extensions
- -verify
- Print out of additional req attributes
- Added -text support to ecparam command
- Add -passout flag to req command
- Additional commands added
- Add ca command
- Add dsaparam command
- Add dhparam command
- Add a basic s_client command for simple TLS client connections
- Add rand command
- Add PKCS#12 parsing support and command
- Add CRL verify command
- Add print out of private key to PKEY command
- ??Support for parsing multiple organization names with conf file
- Add disable filesystem configure
- Support for building on FreeRTOS
- Support for building on Windows
- Testing additions
- Tied in GitHub Actions for continuous integration testing
- Testing with FIPS 140-3 wolfCrypt
- Increased unit tests ran with ‘make check’
- Improve error logging
- Support for creating a CSR with attributes
- (Narrator: Thar be dragons attacking that aircraft when you’re sleeping, and we’re fighting them for you. Some of them are big.)
- Expanded x509 command to handle
- cURL (8 releases)
- wolfSSL JNI/JSSE (3 releases)
- Improved SSLEngine for better compatibility with Undertow, Jetty, and Tomcat
- Added support for Java 17 and 18, and testing with Amazon Coretto
- Improved threading and synchronization support
- Improved SSLSocket timeout and shutdown support
- Added support for loading system CA certificates, ALPN, keyStore system properties, and RPM packaging
- Improved example code and documentation
- wolfCrypt JNI/JCE (2 releases)
- Added security provider test example
- Added test cases and fixes for ChaCha20 support
- Improvements for compatibility with wolfCrypt FIPS 140-3
- Added build compatibility with Java 7
- Added support for “SHA” algorithm string, RPM packaging support, and improvements to MessageDigest implementation
- wolfSSL Python (4 releases)
- Initialization fixes (calling wolfSSL_init())
- Improvements in the build system
- Support for TLS 1.3
- Added support for DTLS up to DTLS 1.3
- wolfCrypt Python (4 releases)
- Improved support for building in Windows
- Fixed build/package generation process
- Support for AES-GCM streaming
- Support for AES-CTR
- Support for RSA_OAEP and PSS padding
- wolfCrypt DO-178C
- Completed two certification data packages.
- NXP S32V234 (on A53)
- ARM Developer Studio version 2019.0-1, with armclangcompiler version 6.12.1 using an optimization level of -0s
- Algorithms: SHA-256, SHA-384, HMAC (SHA-256), HMAC (SHA-384), HASH-DRBG (SHA-256), AES-GCM, AES-CMAC, ECC P384 (sign/verify/shared secret), X.509 certificate verify
- Xilinx Ultrazed-EG(on A53), little endian
- GCC compiler that comes with Xilinx SDK 2017.4
Run Azure RTOS ThreadX SMP version 5.8 on the A53 cores - Algorithms: AES-256-GCM assembly with NEON instructions
- GCC compiler that comes with Xilinx SDK 2017.4
- NXP S32V234 (on A53)
- Completed two certification data packages.
- Documentation
wolfSSL Top 10 Blog Posts / Technical Announcements
- wolfCrypt FIPS 140-3 IUT Update
- Top 10 wolfSSL Library Configurations
- wolfSSL adds QUIC Support
- wolfSSL Support for NXP SE050 with SCP03
- Top Ten Things you should know about Secure Boot
- wolfSSL running on Xilinx Versal Hardware Encryption
- Building wolfSSL with Yocto explained in only 2 minutes!
- DTLS 1.3 Beta, What’s New, Benchmarks, and Examples
- wolfSSL adds Rust Bindings and Wrappers
- Avoid building a “Billion Dollar Brick” with wolfSSL Satellite Cybersecurity Solutions
2022 Webinars
The wolfSSL team hosted and/or participated in a total of 58 webinars this year. Check out our top 5 webinars of the year:
- Everything you need to know about FIPS 140-3
- Getting Started with wolfSSL in 2022
- Secure Element or TPM with wolfSSL
- Looking Under the Hood – wolfSSL Automotive Stories and Examples!
- Securing BTLE with wolfSSL and TLS v1.3
We host at least one webinar per week, make sure you are checking out our blog page to find out about our webinars! Check out our YouTube channel for all of our previous webinars!
wolfSSL Organizational Growth
- wolfSSL added 7 new team members in 2022. Additions included salespeople, engineers, and administrators.
- We expanded our customer base considerably, are now securing connections for over 2,000 products, have partner relationships with over 40 vendors, and are securing well over 2 Billion connections on any given day, worldwide.
- wolfSSL represents one of the largest teams focused on a single implementation of TLS/Crypto worldwide. If you know of anyone who fits the following description, please let us know.
wolfSSL Events and Tradeshows
The wolfSSL team participated in a total of 49 events in 2022! As part of these events we were in 39 cities, 15 US states, and 7 countries! We participated in one virtual event and were fortunate to attend 48 in-person events. The events we participated this last year included:
CES | CyberLEO | Black Hat USA | IoT TechExpo North America | ST Tech Tour - Burlington |
West 2022 | Global Connected Aircraft (Connected Aviation Intelligence Summit) | ST Tech Tour - Southern California | ST Tech Tour - Montreal | AMD-Xilinx XSWG - Washington DC |
Satellite 2022 | NXP Tech Days - Minneapolis | NXP Tech Days - Silicon Valley | HIS 2022 | Aerospace Tech Week AMERICAS |
DoD Information Warfare Symposium | cURL Up | ICMC | ST Developers Conference | Automotive Computing Conference |
Quad-A 2022 Summit | Embedded Tech Convention | AIR, SPACE & CYBER CONFERENCE | AUSA 2022 | AAAA Cribbins Army Aviation Conference |
ST Tech Tour - Schaumburg | Automotive Tech Detroit 2022 | Air Force FACE and SOSA TIM and Expo | MilSat Symposium | ESCAR Europe |
RWC/HACS | ESCAR USA 2022 | International Cyber Expo | NXP Tech Days - Detroit | Military & Aviation Exhibition 2022 |
Cyber Physical Systems Security Summit | Embedded World 2022 | MWC Las Vegas | NBAA-BACE | Embedded Software Engineering Kongress |
IoT Solutions World Congress | Automobile Elektronik Kongress | NXP Tech Days - Boston | it-sa | XSWG (Xilinx) - Germany |
Forum 78 | NXP Tech Days - Irvine | XSWG (Xilinx) - Colorado | CyberSatGov |
(Narrator: We are talkative)
In summary, we had a great year! 2022 was successful on multiple fronts, and we look forward to serving our customers and community with ever more secure and functional software in 2023. If you have any questions or run into any issues, contact us at facts@wolfssl.com, or call us at +1 425 245 8247.