OpenSSL
Developer(s) | The OpenSSL Project |
---|---|
Stable release | 3.0.5 (5 July 2022[1]) [±] |
Repository | |
Written in | C |
Operating system | Multi-platform |
Type | Security library |
License | Apache-like unique |
Website | http://www.openssl.org/ |
OpenSSL is an open source implementation of the SSL and TLS protocols. The core library (written in the C programming language) implements the basic cryptographic functions and provides various utility functions. Wrappers allowing the use of the OpenSSL library in a variety of computer languages are available.
Versions are available for most Unix-like operating systems (including Solaris, Linux, Mac OS X and the four open source BSD operating systems), OpenVMS and Microsoft Windows. IBM provides a port for the System i (iSeries/AS400). OpenSSL is based on SSLeay by Eric A. Young and Tim Hudson, development of which unofficially ended around December 1998, when Tim and Eric both moved to work for RSA Security.
Major version releases
- OpenSSL 0.9.8 was released on July 5, 2005.
- OpenSSL 0.9.7 was released on December 31, 2002.
- OpenSSL 0.9.6 was released on September 25, 2000.
- OpenSSL 0.9.5 was released on February 28, 2000.
- OpenSSL 0.9.4 was released on August 9, 1999.
- OpenSSL 0.9.3 was released on May 25, 1999.
Algorithms
OpenSSL supports a number of different cryptographic algorithms:
- Ciphers
- Blowfish, Camellia, DES, RC2, RC4, RC5, IDEA, AES
- Cryptographic hash functions
- MD5, MD2, SHA, MDC-2
- Public-key cryptography
- RSA, DSA, Diffie-Hellman key exchange, Elliptic curve
FIPS 140-2 compliance
OpenSSL was the first open source program to be validated under the FIPS 140-2 computer security standard by the National Institute of Standards and Technology's Cryptographic Module Validation Program. A certificate was first awarded in January 2006 but revoked in July 2006 "when questions were raised about the validated module’s interaction with outside software." The certification has since been reinstated.[2]
Licensing
OpenSSL is "dual licensed" under the OpenSSL License and the SSLeay license.[3] The common usage of the term dual-license is that the user may pick which license they wish to use, however OpenSSL documentation uses the term dual-license to mean that both licenses apply.
The OpenSSL license requires the phrase This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/) to appear in advertising material and any redistributions (Sections 3 and 6 of the OpenSSL License). Due to this restriction it is incompatible with the GPL.[4] Some GPL developers have added an OpenSSL exception to their licenses specifically allowing OpenSSL to be used with their system. GNU Wget and climm both use such exceptions.[5][6]
Misconceptions
Because of the prefix Open- on its name, OpenSSL is often associated with OpenBSD [citation needed]; which distributes several programs using the naming style of Open*, like OpenSSH. This is however a mistake as OpenSSL is developed completely outside of the scope of OpenBSD by The OpenSSL Project, under a different license than is commonly used by OpenBSD. Like with FreeBSD's OpenBSM, the project simply shares the goal of having an open source implementation of a valuable asset for the common good.
Debian security breach
The Debian version of the OpenSSL library was the subject of a security breach discovered in late May 2008[7] whereby the version of OpenSSL bundled with Debian, Ubuntu, and other Debian-based distributions generated keys from a much smaller entropy pool than normal.
The problem was caused by trying to prevent Valgrind warnings related to the use of uninitialized memory within the OpenSSL libraries. This was done to try to make it easier to debug C applications that use the openssl libraries.[8] If one assumes that uninitialized memory is uncorrelated to the other sources of entropy, this should not negatively affect security: OpenSSL does not depend upon using uninitialized memory for entropy. The relevant change removed two identical lines of code, however;[9] of which one was actually used to add entropy from /dev/urandom to the pool; and so removing it meant that the pseudorandom number generator seed would be taken directly from the process ID, and nothing more.[10] The change had been approved officially by the OpenSSL developers on their mailing list[11].
The result is that there are only 32,767 maximum possible encryption keys for each architecture (such as i386)[8]. Tools are available [12] to test and exploit this. The security hole has now been patched, but affected users will have to regenerate any potentially vulnerable keys such as those generated using 'openssl', 'ssh-keygen', and 'openvpn --keygen'. Additionally, OpenID provider implementations which use affected versions of Debian need to regenerate their keys[13]. A full list of affected software can be found on Debian's wiki[14] (Because they use a completely different underlying cryptographic library, GnuPG and GnuTLS are not affected).[8]
See also
References
- ^ "OpenSSL: Newslog". Retrieved 7 July 2022.
- ^ NIST recertifies open source encryption module
- ^ OpenSSL: Source, License
- ^ Licenses - Free Software Foundation
- ^ WGET 1.10.2 for Windows (win32)
- ^ climm - Download!
- ^ Linux.com: Security Alert: Debian OpenSSL flaw affects many systems, May 15, 2008; retrieved 6/8/2008
- ^ a b c SSLKeys - Debian Wiki
- ^ Debian SVN diff
- ^ Security Now Episode #146, Steve Gibson, Gibson Research Corporation. MP3 audio retrieved 6/1/2008
- ^ [1]
- ^ MetaSploit
- ^ IdentityBlog Crypto Flaw + Bad Practices = need for governance
- ^ SSLkeys - Debian wiki