Here’s some pictures of Todd’s talk at OSCON about Secure Memcache. For those who have not been following, Secure Memcache is a Memcache branch that includes the wolfSSL embedded SSL for encryption between Memcache servers and clients.
Hi! One of our users recently requested that wolfSSL become compatible with Mongoose. As such, we have recently made changes to the wolfSSL 1.5.4 embedded ssl library to make it build seamlessly with the Mongoose embedded web server. Essentially this meant that we made minor enhancements to wolfSSL’s openssl compatibility layer to accomplish a clean build. Everything should build cleanly at this point, but let us know if you face any issues. If you build with wolfSSL instead of OpenSSL, you will get a smaller resulting build. You can contact us with any support issues you face at firstname.lastname@example.org.
Hi! Most of our readers will already know that AES is a key encryption standard used by governments worldwide, and that wolfSSL has always supported AES.
Intel has released a new set of instructions that is a faster way to implement AES, and wolfSSL is currently the first ssl library to fully support the new instruction set for production environments.
Essentially, Intel has added AES instructions at the chip level that perform the compute intensive parts of the AES algorithm, boosting performance.
What we’ve done is add the functionality to wolfSSL to allow it to call the instructions directly from the chip, instead of running the algorithm in software. This means that when you’re running wolfSSL on a chipset that supports AES-NI, you can run your AES crypto 5-10 times faster!
If you’re doing some benchmarking for your environment, let us know at email@example.com we’ll be happy to support you with the effort. Our current benchmarks are in the lab, and we’d like to work with users that can help us further define real world expectations for speed improvements from AES-NI.
References and further reading, ordered from general to specific:
Wikipedia entry on AES: http://en.wikipedia.org/wiki/Advanced_Encryption_Standard
Wikipedia entry on AES-NI: http://en.wikipedia.org/wiki/AES_instruction_set
Intel Software Network page on AES-NI: http://software.intel.com/en-us/articles/intel-advanced-encryption-standard-instructions-aes-ni/
See the readme of wolfSSL 1.5.4 for instructions on building with AES-NI.
wolfSSL is a popular tool for digitally signing applications, libraries or files prior to loading them on embedded devices. Most desktop and server operating systems allow creation of this type of functionality through system libraries, but stripped down embedded operating systems do not. The reason that embedded RTOS environments do not include digital signature functionality is because it has historically not been a requirement for most embedded applications. However, the times they are a changing. In today’s world of connected devices and heightened security concerns, digitally signing what is loaded onto your embedded or mobile device has become a top priority. Examples of embedded connected devices where this requirement was not found in years past include set top boxes, DVR’s, POS systems, both VoiP and mobile phones, and even automobile based computing systems. Because wolfSSL supports the key embedded and real time operating systems, encryption standards and authentication functionality, it is a natural choice for embedded systems developers to use when adding digital signature functionality.
Generally, the process for setting up code and file signing on an embedded device are as follows:
1. The embedded systems developer will generate an RSA key pair.
2. A server side script based tool is developed
a. The server side tool will create a hash of the code to be loaded on the device with SHA-256 for example.
b. The hash is then digitally signed, also called a RSA private encrypt.
c. A package is created that contains the code along with the digital signature.
1. The package is loaded on the device along with a way to get the RSA public key. The hash is re-created on the device then digitally verified (also called RSA public decrypt) against the existing digital signature.
Benefits to enabling digital signatures on your device:
1. Easily enable a secure method for allowing third parties to load files to your device.
2. Ensure against malicious files finding their way on to your device.
3. Digitally secure firmware updates
4. Ensure against firmware updates from unauthorized parties
Do you need help setting up code signing for your embedded device? Let us know as we can help setting up servers side scripts as well as on the device side. Contact us at firstname.lastname@example.org.
More background on code signing:
A great article on the topic at embedded.com: http://embedded.com/design/216500493?printable=true
General information on code signing: http://en.wikipedia.org/wiki/Code_signing
Hi! We’re planning to build a benchmark tool for our users. We believe that developers like to make an informed choice, and benchmarking is the key to getting informed about tools like wolfSSL. Size and TPS are usually at the top of the agenda when benchmarking an SSL library, but other considerations can come into play as well. For example, does the library support TLS version 2, or does it only support SSL 3.0 or TLS version 1? Does the library support DTLS? How do the various ciphers perform against each other under different load types?
The first version of our SSL benchmark tool will only benchmark wolfSSL, but we hope to expand its scope over time to compare other open source SSL libraries as well. Please contact us at email@example.com if you have input on other parameters that should be benchmarked or if you are interested in participating in the development of the tool. We’re also thinking of breaking with our traditional yet boring “yet another” naming convention and calling the benchmark tool something else, like “Hungry Wolf” or “SSL Slapper” to spice things up. As such, email us if you think you have a great name idea for the tool!
Hi! We are currently putting together a build of wolfSSL for the Android platform, specifically for users that require a small footprint embedded ssl library. The development effort is will result in wolfSSL operating as an SSL provider for Java on the Android platform. The natural byproduct of this project is that we’ll have a Java based SSL provider available for other mobile and embedded platforms. If you are interested in running wolfSSL in Java as an SSL provider, then contact us at firstname.lastname@example.org, and we will provide you with a beta copy.
wolfSSL release 1.5.4 adds support for the Mongoose Web Server and intel`s AES-NI encryption instructions, speed improvements for the SHA1 cipher from loop unrolling, new testing certificates and bug fixes.
Support for the Mongoose Web Server was user requested. Support was added by test building Mongoose with wolfSSL and enabling our OpenSSL compatibility API. Minor functionality was then added to wolfSSL`s OpenSSL compatibility API to make the build seamless. The build results in a smaller footprint version of Mongoose for embedded users. Secure connections to Mongoose were then tested and subsequently passed. If you find any issues in building Mongoose with wolfSSL or with the subsequent builds, then please contact us at email@example.com.
Support for AES-NI, intel`s new instruction set for accelerated AES support, was enabled so that our intel based users could access the instruction set directly through wolfSSL. This new functionality gives wolfSSL users wonderful speed improvements when using AES on servers under heavy load. More details on how to make the most of wolfSSL`s AES-NI support for intel servers will be available shortly. If you need more help now, then let us know at firstname.lastname@example.org. Details on AES-NI can be found here: http://www.intel.com/Assets/en_US/PDF/whitepaper/Intel_AES-NI_White_Paper.pdf.
Happy yaSSLing! We hope you enjoy this new release!
yaSSL has now been partnered with ARM for 18 months! Why is yaSSL partnered with ARM? Simply stated, because so many of our users and customers are running on the ARM chipset. Users choose wolfSSL on ARM because it is fast, lightweight, and easily embedded to secure connected application software. To meet the needs of our customers, we have ported the wolfSSL embedded ssl library to several ARM based environments, including Android, ThreadX, QNX, Ubuntu, IAR, MontaVista and OpenWRT. If you need wolfSSL on another ARM based operating environment that we don’t currently support, then contact us at email@example.com.
yaSSL, the leading C++ based ssl library, is now available for download. This release of yaSSL contains bug fixes, new testing certs, and a security patch for a potential heap overflow on forged application data processing. Vulnerability discovered by Matthieu Bonetti from VUPEN Security (http://www.vupen.com).
We recently announced a beta version of secure Memcache is available to the community. Users are excited about having SSL available in memcache, but show concern about the performance cost of enabling security. With this feedback in mind, we benchmarked secure memcache performance against standard memcache. See the graph below for comparison of secure memcache to standard memcache by measure of TPS. The first bar is regular memcache. The rest of the bars show secure memcache running with different cipher options. We’ve also included the performance of “direct to database,” or running without memcache at all, as a baseline for comparison.
We have several additional optimizations in the works that will bring the performance of secure memcache to within 5-10% of standard memcache for most environments, and can also provide network, operating system and hardware specific optimizations for specific users.
You will see from the graph that running Memcache with SSL enabled is 4x faster than running direct to database. The cost of running securely varies between about 25% and 40%, depending on cipher. There is some cost to running secure memcache, but it is not unbearable. Email us at firstname.lastname@example.org if you want more details on the benchmark.
Who should use secure Memcache? Generally speaking, anyone concerned about the security of their memcache data.
1. Users with regulatory compliance requirements.
2. SaaS companies hosting sensitive customer and user data who cannot risk a breach that could damage their reputation
3. Users running in the cloud.
4. Users concerned with masking memcache data securely within their firewall.
Contact us at email@example.com if you are interested in receiving the beta or for more information.