X509 Attribute Certificate support

wolfSSL is adding support for X509 Attribute Certificates (ACERTs, for short), enabled with --enable-acert. This initial support includes reading, printing, and verifying. Furthermore, it uses our new ASN.1 template implementation, and supports RSA-PSS as well.

But what is an X509 Attribute Certificate, and how does it differ from the more commonly encountered X509 Public Key Certificate? Defined in RFC 5755, an Attribute Certificate is a digitally signed binding between an identity and authorization attributes. In contrast to X509 Public Key Certs, an X509 Attribute Cert does not contain a public key. However, the public key used to verify an Attribute Cert could be found in an X509 Pub Key Cert.

If you’re curious and want to learn more, check out the X509 ACERT pull request and our recently added ACERT example. The latter shows an example of using ACERT support with our openssl compatibility layer.

If you are interested in X509 Attribute Certificates support or have questions about any of the above, please contact us at facts@wolfSSL.com or +1 425 245 8247.

Download wolfSSL Now

LMS in PKCS11

Most people know that wolfSSL supports being a PKCS11 consumer. It is easy to enable this with the --enable-pkcs11 configure time flag and then trying out the examples. Now, what most people don’t realize is that we also have the ability to be a PKCS11 provider!! This is via our library called wolfPKCS11. Check out the source repo on github.

The most interesting thing about PKCS11 is that the post-quantum stateful hash-based signature scheme LMS/HSS has already been added to the PKCS11 standard. If you look at the latest specification, you can already find an example template definition for a private key:

CK_OBJECT_CLASS keyClass = CKO_PRIVATE_KEY;
CK_KEY_TYPE keyType = CKK_HSS;
CK_UTF8CHAR label[] = “An HSS private key object”;
CK_ULONG hssLevels = 123;
CK_ULONG lmsTypes[] = {123,...};
CK_ULONG lmotsTypes[] = {123,...};
CK_BYTE value[] = {...};
CK_BBOOL true = CK_TRUE;
CK_BBOOL false = CK_FALSE;
CK_ATTRIBUTE template[] = {
    {CKA_CLASS, &keyClass, sizeof(keyClass)},
    {CKA_KEY_TYPE, &keyType, sizeof(keyType)},
    {CKA_TOKEN, &true, sizeof(true)},
    {CKA_LABEL, label, sizeof(label)-1},
    {CKA_SENSITIVE, &true, sizeof(true)},
    {CKA_EXTRACTABLE, &false, sizeof(true)},
    {CKA_HSS_LEVELS, &hssLevels, sizeof(hssLevels)},
    {CKA_HSS_LMS_TYPES, lmsTypes, sizeof(lmsTypes)},
    {CKA_HSS_LMOTS_TYPES, lmotsTypes, sizeof(lmotsTypes)},
    {CKA_VALUE, value, sizeof(value)},
    {CKA_SIGN, &true, sizeof(true)}
}; 

Are you looking to use wolfSSL to consume LMS/HSS? Our wolfCrypt library already has support for LMS/HSS; want to consume it via a PKCS11 interface? Want to get ahead of the curve and start prototyping ML-KEM (FIPS 203) or ML-DSA (FIPS 204) in PKCS11? Send a message to facts@wolfSSL.com to let us know which of these you want accelerated.

If you have questions about any of the above, please contact us at facts@wolfSSL.com or +1 425 245 8247.

Download wolfSSL Now

Repurposing ESP32 Devices for Enhanced Security: Insights from wolfSSL at Hackaday 2024

We’re excited to announce that wolfSSL will be attending the 2024 Hackaday Superconference from November 1st to 3rd in sunny Pasadena, California, as a featured speaker! Don’t miss our insightful talk, “Repurposing ESP32 Based Commercial Products,” where you’ll learn how to secure ESP32 devices and turn them into HomeKit compatible tools by flashing custom software onto existing products.

In this talk, we’ll dive into effective reverse engineering techniques, such as finding JTAG pins, and explore development and debugging using open-source Tigard JTAG hardware with VisualGDB in Visual Studio. We’ll also highlight how to implement secure cryptographic functions—like post-quantum TLS 1.3—using wolfSSL’s commercial-grade solutions. Additionally, we’ll discuss the risks associated with modifying high-voltage devices.

Conference Program Details:
Title: Repurposing ESP32 Based Commercial Products
Date and Time: November 2nd | 1:00 – 1:40 PM PT
Room: DesignLab

This is a fantastic opportunity to deepen your understanding of IoT security and cryptography, and see firsthand how wolfSSL is leading the way in secure solutions. Whether you’re looking to enhance your home automation setup or strengthen the security of your projects, this talk has something for everyone.

Get your ticket today!

wolfSSL will also be available at the conference to answer your questions and discuss the future of cryptographic solutions. Don’t miss this chance to connect with us and learn more about how wolfSSL is shaping the future of security.

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 In the European Time Zone: Everything You Need to Know About FIPS 140-3

Curious about how FIPS 140-3 can elevate your security strategy? Join us on October 30th for an exclusive webinar with Kaleb Himes, Senior Software Engineer at wolfSSL. Kaleb will break down everything you need to know about the latest in cryptographic standards. From key differences between FIPS 140-2 and FIPS 140-3 to wolfCrypt’s industry-leading achievement, this is your chance to gain practical insights that can strengthen your systems.

Register today: Everything You Need to Know about FIPS 140-3 – Tailored for the European Time Zone
Date: October 30th | 7 AM PT / 3 PM CET
This webinar is scheduled to accommodate participants in the European Time Zone.

This webinar will cover:

  • Basic & Benefits: Discover why FIPS 140-3 is essential for secure systems and what makes it a must-have.
  • Difference Between FIPS 140-2 and FIPS 140-3: Understand the key distinctions and improvements from FIPS 140-2.
  • wolfCrypt’s Achievement: Learn about wolfCrypt’s milestone as the first to receive the SP800-140Br1 FIPS 140-3 validated certificate (#4718).
    And much more..

Don’t miss out on this chance to deepen your understanding of FIPS 140-3 and its critical role in securing modern systems. Whether you’re new to the standard or looking for expert insights, this webinar offers the knowledge and practical advice you need to stay ahead in cybersecurity.

Register today to secure your spot!

As always, our webinars will include Q&A sessions throughout. If you have questions on any of the above, please contact us at facts@wolfSSL.com or +1 425 245 8247.

Download wolfSSL Now

wolfSSL 5.7.4 Release

wolfSSL release 5.7.4 is now available, with exciting optimizations for ARM devices and enhancements to post-quantum cryptography algorithms. If you’re using wolfSSL on RISC-V, we’ve also included new performance enhancements specifically for RISC-V devices. Alongside these optimizations and new features, several important fixes were made. One notable fix involves the behavior of X509_STORE_add_cert() and X509_STORE_load_locations() functions to better align with OpenSSL when the compatibility layer is enabled.

Below are some of the key changes in this release. For a more comprehensive list, refer to the ChangeLog.

New Features and Additions

  • RISC-V 64: Added new assembly optimizations for SHA-256, SHA-512, ChaCha20, Poly1305, and SHA-3 (PRs 7758, 7833, 7818, 7873, 7916).
  • DTLS 1.2 Connection ID: Implemented support for Connection ID (CID) (PR 7995).
  • DevkitPro Support: Added support for (DevkitPro)libnds (PR 7990).
  • Mosquitto: Added a port for Mosquitto OSP (Open Source Project) (PR 6460).
  • sssd: Added a port for init sssd (PR 7781).
  • eXosip2: Added support for eXosip2 (PR 7648).
  • STM32G4: Added support for STM32G4 (PR 7997).
  • MAX32665 and MAX32666: Added support for TPU hardware and ARM ASM crypto callback (PR 7777).
  • libspdm: Added support for building wolfSSL to be used in libspdm (PR 7869).
  • Nucleus Plus: Added support for use with Nucleus Plus 2.3 (PR 7732).
  • RFC5755 Attribute Certificates: Initial support for x509 attribute certificates (acerts) with --enable-acert (PR 7926).
  • PKCS#11 RSA Padding Offload: Allows tokens to perform CKM_RSA_PKCS (sign/encrypt), CKM_RSA_PKCS_PSS (sign), and CKM_RSA_PKCS_OAEP (encrypt) (PR 7750).
  • Heap/Pool Allocation: Added “new” and “delete” style functions for heap/pool allocation and freeing of low-level crypto structures (PRs 3166, 8089).

Espressif / Arduino Updates

  • Updated wolfcrypt settings.h
  • Updated Espressif SHA, utility, memory, and time helpers (PR 7955).
  • Fixed _thread_local_start and _thread_local_end for Espressif (PR 8030).
  • Enhanced benchmarking for Espressif devices (PR 8037).
  • Introduced Espressif common CONFIG_WOLFSSL_EXAMPLE_NAME in Kconfig (PR 7866).
  • Added wolfSSL esp-tls
  • Updated wolfSSL release for Arduino (PR 7775).

Post-Quantum Crypto Updates

  • Dilithium: Support for fixed-size arrays in dilithium_key (PR 7727).
  • Dilithium Precalc: Added option to use precalc with small sign (PR 7744).
  • Kyber FIPS: Allowed Kyber to be built with FIPS (PR 7788).
  • Kyber in Linux Kernel: Enabled Kyber ASM usage in Linux kernel module (PR 7872).
  • Dilithium, Kyber: Updated to final specifications (PR 7877).
  • Dilithium FIPS: Supported FIPS 204 Draft and Final Draft (PRs 7909, 8016).

ARM Assembly Optimizations

  • ARM32: Added assembly optimizations for ChaCha20 and Poly1305 (PR 8020).
  • Poly1305 Aarch64: Improved Poly1305 assembly optimizations for Aarch64 (PR 7859).
  • Poly1305 Thumb-2: Added Poly1305 optimizations for Thumb-2 (PR 7939).
  • STM32CubePack: Added ARM ASM build option to STM32CubePack (PR 7747).
  • Visual Studio: Added ARM64 support to the Visual Studio project (PR 8010).
  • Kyber ARM Optimizations: Added assembly optimizations for ARM32, Aarch64, ARMv7E-M, and ARMv7-M (PRs 8040, 7998, 7706).

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: Secure Boot now with support for FIPS 204 ML-DSA post-quantum signature algorithm

NIST recently announced three new standards for post-quantum cryptography (FIPS 203-205), and among them was ML-DSA (FIPS 204, Module-Lattice Digital Signature Algorithm), a lattice-based algorithm derived from the round 3 finalist CRYSTALS-DILITHIUM. As a general purpose digital signature algorithm ML-DSA has attractive features, such as fast key generation, signing, and verifying, as well as a tunable security strength. ML-DSA also supports organizations migrating to CNSA 2.0.

Naturally the wolfSSL team found this quite interesting, and we eagerly set to work on ML-DSA support. We are pleased to announce we have added ML-DSA to wolfBoot, which is achieved by utilizing wolfCrypt’s implementation of dilithium (ML-DSA). This implementation supports all three parameter sets standardized in FIPS 204: ML-DSA-44, ML-DSA-65, and ML-DSA-87. If you’re curious, you can read more about it in our wolfBoot PQ docs, and test out the new ML-DSA config example.

In total, wolfBoot now has support for three NIST approved post-quantum algorithms:

Conspicuously absent from this list is FIPS 205, Stateless Hash-Based Digital Signature Standard (SLH-DSA, the NIST standard successor of SPHINCS+). Should we amend this absence? Let us know.

If you have questions about any of the above, please contact us at facts@wolfSSL.com or +1 425 245 8247.

Download wolfSSL Now

Achieving WireGuard GO FIPS Compliance with wolfCrypt

Last week we put out a blog post sharing our integration of wolfCrypt into WireGuard. But did you know that we’ve already ported our FIPS 140-3 certified cryptographic engine into WireGuard GO, the official user space implementation of WireGuard in golang?

In cases where WireGuard’s functionality is desired, but a kernel isn’t available or installing a kernel-level VPN isn’t feasible, WireGuard GO offers a flexible solution.

And if you require FIPS compliance in your WireGuard GO deployments, our latest efforts make this possible. Using our golang wrapper go-wolfssl, we replaced WireGuard GO’s standard crypto (ChachaPoly, Curve25519, Blake2s) with our own FIPS certified algorithms (AES GCM, ECC P-256, SHA-256). One thing to note here is that FIPS-ified WireGuard GO end-points may only communicate with other FIPS-ified end-points. This is because the same set of algorithms would be required on both sides for interoperability.

Although the usual trade-off of WireGuard vs WireGuard GO is performance vs simplicity and flexibility, wolfCrypt’s ability to utilize hardware acceleration for AES and SHA can let you keep reaping WireGuard GO’s benefits without having to compromise on performance.

See the README here for instructions to get started using WireGuard GO with wolfCrypt.

Are you interested in WireGuard GO with wolfCrypt FIPS 140-3?

If you have questions about any of the above or need assistance, please contact us at facts@wolfSSL.com or +1 425 245 8247.

Download wolfSSL Now

What are FIPS 203, 204, and 205?

This year, NIST released the following official standards documents:

What are they and what do they standardize? As a quick summary:

  • Kyber became ML-KEM (Module-Lattice-based Key-Encapsulation Mechanism) which is specified by NIST’s FIPS 203 document.
  • Dilithium became ML-DSA (Module-Lattice-based Digital Signature Algorithm) which is specified by NIST’s FIPS 204 document.
  • SPHINCS+ became SLH-DSA (StateLess Hash-based Digital Signature Algorithm) which is specified by NIST’s FIPS 205 document.

ML-KEM and ML-DSA are great for general purpose use in communications protocols. For example, ML-KEM is almost a drop in replacement for ECDH. We say “almost” because ECDH is a NIKE (Non-Interactive Key Exchange) whereas ML-KEM is a KEM (Key Encapsulation Mechanism) so their APIs and semantics have minor differences. Of course wolfSSL products abstract that difference away for our customers. ML-DSA is a drop-in replacement for RSA and ECDSA.

SLH-DSA has specialized use cases similar to those of LMS and XMSS, but it is stateless. That said, CNSA 2.0 specifically includes LMS and XMSS but not SLH-DSA.

Did you know that we have full implementation and support for optimized ML-KEM and ML-DSA? You can have a look and try them out for yourself. Simply download the wolfSSL library from download page, configure it to enable Dilithium and Kyber and run the benchmarks!

Here are the relevant configure-time flags:

--enable-kyber
--enable-dilithium

Are you interested in implementation and support for SLH-DSA or have questions about any of the above? Please contact us at facts@wolfSSL.com or +1 425 245 8247.

Download wolfSSL Now

Join wolfSSL Live Webinar: Getting Started with wolfMQTT

Unlock the Full Potential of Your IoT Security!

Join us for our upcoming webinar, “Getting Started with wolfMQTT,” on October 24th at 10 AM PT. This session will be led by wolfSSL Senior Software Engineer Eric Blankenhorn. He will introduce you to wolfMQTT, a lightweight client implementation of the MQTT protocol written in C for embedded systems.

Whether you’re just starting or looking to refine your expertise, this webinar will guide you through both the basics and advanced features of wolfMQTT, empowering you to secure your IoT applications more effectively.

Register Today: Getting Started with wolfMQTT
Date: October 24th | 10 AM PT

What you will learn:

  • Discover why a dedicated IoT protocol like MQTT is essential for securing device-to-device communication.
  • Explore key features and specifications supported by wolfMQTT, including SSL/TLS security for encrypted connections.
  • Understand the architecture of wolfMQTT and its seamless integration within embedded systems for IoT devices.
  • Learn how to configure and build wolfMQTT to maximize its capabilities for your IoT environment.
  • See real-world examples of wolfMQTT in action and apply practical insights to your projects.
  • Get a sneak peek into future development plans for wolfMQTT to stay ahead with emerging technologies and security needs.

In today’s rapidly evolving IoT landscape, ensuring the security and reliability of your networked devices is more critical than ever. wolfMQTT is designed to help you address these challenges, offering a powerful yet lightweight solution for securing IoT communication through MQTT. This webinar will equip you with the knowledge and tools to optimize wolfMQTT for your embedded systems, enabling you to enhance both security and performance.

Don’t miss this chance to enhance your IoT security expertise with the power of wolfMQTT. Register now!

As always, our webinars will include Q&A sessions 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

Live Webinar: FIPS 140-3 and CNSA 2.0 Compliance in a Single Connection

As cybersecurity standards continue to evolve, FIPS 140-3 is set to become the cornerstone of government security compliance, offering stronger assurances for cryptographic security. To help you stay ahead of these requirements and implement robust solutions, we’re excited to invite you to our upcoming webinar: FIPS 140-3 and CNSA 2.0 Compliance in a Single Connection.

Register today: FIPS 140-3 and CNSA 2.0 Compliance in a Single Connection
Date: October 23rd | 10 AM PT

This webinar will cover:

  • FIPS 140-3 & CNSA 2.0: Understand the importance of FIPS 140-3, as well as the CNSA 2.0 timeline. We’ll explain how these standards enhance security and what you need to do to stay compliant.
  • Demo: Get hands-on guidance on downloading and building the code for compliance.
  • Post-Quantum Cryptography: Learn about post-quantum algorithms now available in wolfSSL, including Kyber, LMS, and XMSS, and how they can protect your systems against future threats.

Whether you’re managing embedded systems or working in government security, this webinar will give you the tools to ensure compliance and secure your systems for the future.

Register Today!

As always, our webinars will include Q&A sessions throughout. If you have questions about any of the above, please contact us at facts@wolfSSL.com or call us at +1 425 245 8247.

Download wolfSSL Now

Posts navigation

1 2