RECENT BLOG NEWS
Case Study: wolfSSL Secures EiMSIG® Smart Home Alarm System
The EiMSIG smart home allows users to monitor and control windows, doors, blinds, lighting, heating, and cameras all from the convenience of a smartphone. Control and monitoring are done through the free EiMSIG® alarms app. The EiMSIG smart home has been designed to be the logical evolution of the classic alarm, as EiMSIG explains on their website.
Because of wolfSSL’s industry reputation, product information, hardware acceleration support on the PIC32, and small footprint, EiMSIG chose the wolfSSL embedded SSL/TLS library to secure their smart home system. The full EiMSIG/wolfSSL case study is available from the wolfSSL case studies page.
For questions regarding the use of wolfSSL products in your embedded or IoT devices, contact us at facts@wolfssl.com.
SWEET32 – 3DES disabled by default in wolfSSL 3.9.10
One of the changes in the recent wolfSSL 3.9.10 release, to mitigate against the SWEET32 attack, is that the 3DES algorithm is now disabled by default when using the Autoconf (./configure) build system. Non Autoconf users can disable 3DES by defining NO_DES3 when compiling wolfSSL.
For those not familiar with SWEET32, more information can be found on the attack’s website, listed below. In summary, SWEET32 is an attack on block cipher algorithms that use a block size of 64 bits:
For more information about the wolfSSL embedded SSL/TLS library, please contact facts@wolfssl.com.
Intel SGX and wolfSSL
Intel ® SGX (Software Guard Extensions) allows for additional security and a smaller surface area for attack. One way this is accomplished is by restricting access to portions of memory even from other applications running on the same computer. This additional security is for both code that is being executed and stagnant information with “sealing” data.
Do you have a use case where cryptography with Intel’s ® SGX is needed? wolfSSL has a port to use SGX under development. A demo version of this port was shown at the IDF conference and demonstrated the low latency for additional security gains that Intel’s ® SGX provides.
If you have a need for an embedded SSL/TLS library with Intel ® SGX contact us today facts@wolfssl.com.
wolfSSL 3.9.10 Now Available
Version 3.9.10 of the wolfSSL embedded SSL/TLS library is now available for download. This release contains bug fixes, new features, and includes fixes for three medium level vulnerabilities.
Vulnerabilities fixed by this release include CVE-2016-7440, CVE-2016-7439, and CVE-2016-7438, as explained in this recent wolfSSL blog post. This includes fixes for
potential AES, RSA, and ECC side channel leaks that a local user monitoring the same CPU core cache could exploit. VM users, hyper-threading users, and users where potential attackers have access to the CPU cache will need to update if they utilize AES, RSA private keys, or ECC private keys. Thanks to Gorka Irazoqui Apecechea and Xiaofei Guo from Intel Corporation for
the report.
Other changes and new features in this release are described below.
Default Configure Option Changes
3DES (–enable-des3) is disabled by default. 3DES has been disabled for security after the Sweet32 attack was announced.
ECC Supported Curves Extension (–enable-supportedcurves) is enabled by default. The ECC Supported Curves Extension, when enabled, broadcasts the ECC curves supported by the client in the Client Hello message.
TLS Extended Master Secret (–enable-extended-master) is enabled by default. The 3SHAKE attack demonstrated how an active attacker can synchronize two TLS sessions so that they share the same “master_secret”. As per RFC 7627, this extension “changes the way the “master_secret” value is computed in a full handshake by including the log of the handshake messages, so that different sessions will, by construction, have different master secrets.”
Added checking CA certificate path length, and new test certs
From RFC 5280, “the basic constraints extension identifies whether the subject of the certificate is a CA and the maximum depth of valid certification paths that include this certificate.” The path length constraint field (pathLenConstraint) specifies the maximum number of non-self-issued intermediate certificates that may follow a given CA certificate in a certificate chain.
wolfSSL now checks the path length between an intermediate CA certificate and its signer’s path length, always decodes the path length if present, and saves the path length into the signers list. The path length is capped at 127 certificates. New test certificates have been added for this scenario, located under the “./certs/test-pathlen” directory.
Fix to DSA pre padding and sanity check on R/S values
This fix adds pre padding of DSA signature with zeros and adds sanity checks for R/S values during DSA sign operations to make sure they are not zero.
Added CTX level RNG for single-threaded builds
In SINGLE_THREADED mode wolfSSL has a new API, wolfSSL_CTX_new_rng(), that creates an RNG object at the WOLFSSL_CTX level that is shared with each created WOLFSSL session object. This is only allowed in SINGLE_THREADED mode because otherwise locking/blocking would be needed. The benefit to this CTX-level RNG is there is only one RNG object to seed and this also saves 200 bytes or so from each WOLFSSL session. It can be called immediately after wolfSSL_CTX_new(), the example client now uses it in SINGLE_THREADED mode.
Intel RDSEED enhancements
Improvements to Intel RDSEED include:
+ Increase RDSEED retries to 32, still an order of magnitude faster than /dev/urandom
+ Increase RDSEED retrieval to 64bits, halving the number of calls
+ Allow fallback to /dev/urandom on retry failure
+ Allow fallback override (that is hard failure) with FORCE_FAILURE_RDSEED which does not fallback to /dev/urandom
ARMv8 hardware acceleration support for AES-CBC/CTR/GCM, SHA-256
Users running wolfSSL on ARMv8 now have access to increased performance through hardware acceleration integration. More details can be found in this blog post, or by emailing us directly.
Arduino support updates
Interested in securing your Arduino-based project? Arduino build instructions and build script have been updated to make building wolfSSL for Arduino environments more intuitive. Arduino build instructions can be found in “./IDE/ARDUINO/README.md” located in the wolfSSL download package.
Added the Extended Master Secret TLS extension
Support for the TLS Extended Master Secret extension has been added to wolfSSL, both at the SSL/TLS and sniffer levels. This extension is enabled by default and can be disabled through the provided API functions (reference the wolfSSL Manual for API and usage).
OCSP fix with issuer key hash, lookup refactor
This includes two fixes. The first for the wolfSSL CertManager OCSP lookup where the issuer key hash wasn’t being set correctly and could lead to unknown responses from the lookup. The second fix addresses the default OCSP lookup callback which previously could get blocked waiting for the server to close the socket.
Added support for Frosted OS
wolfSSL now has support for the Frosted (Free POSIX OS for tiny embedded devices) operating system. More information about FROSTED can be found in their GitHub repository.
Added support for DTLS over SCTP
wolfSSL has added support for DTLS over SCTP (Stream Control Transmission Protocol). If you are not familiar with SCTP, from Wikipedia, “SCTP provides some of the same service features of both [TCP and UDP]: it is message-oriented like UDP and ensures reliable, in-sequence transport of messages with congestion control like TCP; it differs from these in providing multi-homing and redundant paths to increase resilience and reliability.”
wolfSSL has a new configure option to enable DTLS-SCTP support called “–enable-sctp”, and now includes example tools and test applications under the “./examples/sctp” directory. These include an SCTP Client, Server, and DTLS-SCTP Client and Server.
Added support for static memory with wolfCrypt
wolfCrypt now has the ability to use only static memory with the wc_LoadStaticMemory() function. The wolfCrypt test and benchmark applications can use this functionality when WOLFSSL_STATIC_MEMORY is defined.
Fix to ECC Custom Curve support
This includes a fix for wc_ecc_set_custom_curve() not setting the index as ECC_CUSTOM_IDX and also includes cleanup of the ECC test cases.
Support for asynchronous wolfCrypt RSA and TLS client
Added asynchronous wolfCrypt RSA, TLS client and Cavium Nitrox V support including asynchronous wolfSSL client support for “DoServerKeyExchange”, “SendClientKeyExchange”, “SendCertificateVerify” and “DoCertificateVerify”. This includes fixes for asynchronous DTLS, a refactor of the event and asynchronous handling for use in wolfCrypt, and a refactor of the async device support so it is hardware agnostic.
Added Cavium Nitrox V support (Nitrox tested using SDK v0.2 CNN55XX-SDK with new configure “–with-cavium-v=/dir” option) and Nitrox specific functions have been moved to a new port file called “port/cavium/cavium_nitrox.c”.
RSA has been refactored to handle async with states including RSA optimization for using dpraw for private key decode. wolfCrypt test and benchmark support for async RSA has been added. Asynchronous mode can now be enabled using “./configure –enable-asynccrypt”. If no async hardware is defined then the internal async simulator (WOLFSSL_ASYNC_CRYPT_TEST) is used. Note: Using async mode requires async.c/h files from wolfSSL. If interested in using asynchronous mode please send email to facts@wolfssl.com.
Added distribution build configure option
For easier creation of OS and Distribution packages, a new ./configure option has been added called “–enable-distro”. Package maintainers should now use this option instead of hand picking options themselves for wolfSSL packages. This will guarantee that ./configure options are enabled/disabled as the wolfSSL engineers recommend.
Update the test certificates
The wolfSSL test certificates have been updated so that they now all have the same expiration date. Additional DER formatted test certificates, including ECC ones, have been added.
Please contact wolfSSL at facts@wolfssl.com with any questions about new features or fixes made in this release of wolfSSL.
wolfSSL 3.9.10 Vulnerability Fixes
wolfSSL release 3.9.10 fixes 3 medium level security vulnerabilities:
CVE-2016-7440 The C software version of AES Encryption and Decryption in wolfSSL 3.9.8 and earlier uses a T-table based implementation where Table lookups do not properly consider cache-bank access times. This makes it easier for a local user to discover AES keys by running a crafted application on the same machine as a victim and leveraging cache-bank timing differences.
CVE-2016-7439 The C software implementation of RSA in wolfSSL 3.9.8 and earlier uses a different variable during squaring depending on the key state and does not properly consider cache bank monitoring. This makes it easier for a local user to discover RSA keys by running a crafted application on the same CPU core as a victim and leveraging cache-bank hit differences.
CVE-2016-7438 The C software implementation of ECC in wolfSSL 3.9.8 and earlier uses a different variable during doubling depending on the key state and does not properly consider cache bank monitoring. This makes it easier for a local user to discover RSA keys by running a crafted application on the same CPU core as a victim and leveraging cache-bank hit differences.
VM users, hyper-threading users, and users where potential attackers have access to the CPU cache will need to update if they utilize AES, RSA private keys, or ECC private keys.
Thanks to Gorka Irazoqui Apecechea and Xiaofei Guo from Intel Corporation for the reports.
If you have a need for an embedded SSL/TLS library or any questions please contact us today at facts@wolfssl.com.
TPM 2.0 integrated with wolfSSL embedded SSL
Hi! We are currently embarking on a mission to support TPM 2.0 with the wolfSSL embedded SSL library. If you are interested in being an alpha tester, please let us know at facts@wolfssl.com.
ARMv8 Hardware Acceleration with wolfSSL
Are you looking to use cryptography on an ARMv8 board? wolfSSL is in the process of optimizing AES and SHA256 operations using ARMv8 hardware acceleration. This gives the embedded TLS/SSL library a large performance boost when enabled and using AES-SHA256 cipher suites. The current development state can be found on our GitHub repository and enabled with “./configure —enable-armasm”.
For more information contact us at facts@wolfssl.com
Building wolfSSL using Windows Subsystem for Linux
Microsoft and Canonical`s new tools Windows Subsystem for Linux and Bash on Ubuntu on Windows brings a familiar bash environment based on the Ubuntu user-space to Windows 10. This allows developers to use tools available on Linux and other Unix-like systems from within Windows.
Before developers can utilize Windows Subsystem for Linux, the feature has to be installed.
1. Open Settings
2. Click Update & Security
3. Click For Developers
4. Click Developer Mode
5. Now open Control Panel
6. Click Programs and Features
7. Click Turn Windows features on or off.
8. Find and check Windows Subsystem for Linux (Beta)
9. Click OK and follow prompts to finish installation.
Now that WSL is installed it is time to install the Ubuntu image. This is accomplished by launching the Windows Command Prompt and typing “bash.exe”. Follow the prompts to finish the installation.
You now have a fully installed Linux image on Windows! You can launch bash by either running a Windows command prompt and entering the command “bash” or you can find the shortcut “Bash on Ubuntu on Windows” in your start menu.
To setup your environment to build wolfSSL you`ll need the following:
– make
– autoconf
– gcc
These can be installed with “$ sudo apt-get install make autoconf gcc” in bash. Finally, the steps to build and install wolfSSL for Linux are:
1. $ ./autogen.sh
2. $ ./configure
3. $ make
4. $ make install
This was tested and verified with GCC version 4.8.4 and Linux kernel 3.4.0. make in our test environment was able to build wolfSSL in 28.415s.
Additional references:
wolfSSL Embedded SSL/TLS Library
https://blogs.windows.com/buildingapps/2016/07/22/fun-with-the-windows-subsystem-for-linux/
https://msdn.microsoft.com/en-us/commandline/wsl/about
https://msdn.microsoft.com/en-us/commandline/wsl/install_guide
Job Posting: Embedded Systems Software Engineer
wolfSSL is a growing company looking to add a top notch embedded systems software engineer to our organization. We develop, market and sell the leading Open Source embedded SSL/TLS protocol implementation, wolfSSL. Our users are primarily building devices or applications that need security. Other products include wolfCrypt embedded cryptography engine, wolfMQTT client library, and wolfSSH.
Operating environments of particular interest to us include Embedded Linux and RTOS varieties (VxWorks, QNX, ThreadX, uC/OS, MQX, FreeRTOS, etc). Experience with mobile environments like Android and iOS is a plus.
Currently, we are seeking to add a senior level C engineer interested in a fun company with tremendous upside. Backgrounds that are useful to our team include networking, security, and hardware optimizations. Assembly experience is a plus. Experience with encryption software is a plus. RTOS experience is a plus.
Location is flexible. For the right candidate, we’re open to this individual working from virtually any location.
How To Apply
To apply or discuss, please send your resume and cover letter to facts@wolfssl.com.
Job Posting: wolfSSL Web Developer
wolfSSL is interested in hiring an experienced web developer to redesign and maintain the wolfSSL website. This will be a full time position as an employee of wolfSSL. Responsibilities will include website redesign, development, and maintenance as well as writing and improving product documentation. The website will have both static and dynamic content, including a blog and product download pages.
The ideal candidate will have experience with modern web tools and frameworks, experience with web server setup and maintenance, good technical writing skills, and have a passion for cryptography and security fields.
Responsibilities:
+ Redesign of the wolfSSL website, based on a modern web framework
+ Integration of a dynamic blogging platform
+ Creation and maintenance of software documentation
+ Maintenance, expansion, and optimization of the wolfSSL website and forums
Requirements:
+ Knowledge of HTML, CSS, PHP, and modern web languages
+ Familiarity and experience with web and blog frameworks
+ Knowledge of web design best practices
+ Knowledge of back end database systems, such as MySQL
+ Knowledge of SEO and search engine compatibility
+ Team player, able to work well either individually or in a group
+ Interest in cryptography and security software
+ Proficient technical writing skills
How to Apply:
If interested in applying, please send your resume to facts@wolfssl.com. wolfSSL product and company details can be found online at www.wolfssl.com.
Weekly updates
Archives
- November 2024 (26)
- 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)