The Message Queuing Telemetry Transport (MQTT) is one the more popular protocols used for the Internet of Things (IoT). It’s now in its fifth revision, adding a number of new features and addressing many issues brought up by high-latency, low-speed wireless communication networks, where low communication overhead is as important as secure data transfers.
WolfSSL is delivering its implementation of MQTT v5.0 now. WolfSSL builds on its products like wolfMQTT on the wolfCrypt embedded crypto engine, including products like wolfSSH and wolfSSL. The latest wolfSSL supports the new TLS 1.3 standard. WolfSSL dual licenses its products under the open-source GPLv2 as well as a commercial license.
WolfSSL may not be a household name for developers, but many are likely to be using the company’s technology. A host of chip and tool vendors license and deliver WolfSSL technology as part of their development platforms. The wolfCrypt crypto engine has been customized to support a range of hardware security engines found on the latest microcontrollers and SoCs.
One reason to choose a commercial implementation like wolfMQTT is its compact size—it uses only 3.6 kB. Another is that it supports quality-of-service (QoS) levels 0-2. SSL/TLS 1.3 (Secure Sockets Layer/Transport Layer Security) encryption can be blended with MQTT with the wolfTLS adding less than 30 kB to the code. The TLS session resumption support can reduce connection costs for sensor devices and other platforms with limited resources.
“wolfMQTT’s progression to the new 5.0 standard helps developers to lever our security coding and testing standards when using this critical IoT protocol,” says Larry Stefonic, Co-founder and CEO of wolfSSL. “Our implementation of MQTT has proven quite popular when coupled with wolfSSL.”
What’s New in MQTTv5.0?
The MQTT 5.0 specification includes several improvements, such as AUTH packet type to submit authentication after a connection is made. Authentication is critical to secure IoT applications. Servers can now disconnect from clients; the protocol supports new data types for UTF-8 string pairs. Packets are able to include optional key/value properties that are useful for custom IoT node communication.
In addition, connection negative acknowledgements can now incorporate a reason code to describe the reason for connection failures. And it’s now possible to provide passwords without a username. This will be used with IoT nodes where only be one user would be associated with the device; thus, a username would be redundant.
The code is written in C89 to instill portability. WolfSSL also employs static-analysis tools to make sure its code is bug-free. It supports all client-side packet types and protocol options. Detailed error checking and handling is in the mix, too.
Most chipsets are supported—Arm, Intel, Motorola, mbed, NXP/Freescale, Microchip (PIC32)/Atmel, STMicro (STM32F2/F4), Analog Devices, and Texas Instruments. It also works with operating systems such as Windows, Linux, Mac OS X, Linux, FreeRTOS, and ChibiOS.