From Wikipedia, the free encyclopedia
Jump to: navigation, search
Developer(s) The OpenSSL Project
Stable release

1.0.1g (7 April 2014; 12 days ago (2014-04-07)[1]) [±]
1.0.0l (6 January 2014; 3 months ago (2014-01-06)[1]) [±]

0.9.8y (5 February 2013; 14 months ago (2013-02-05)[1]) [±]
Preview release 1.0.2 Beta 1 (24 February 2014; 54 days ago (2014-02-24)[1]) [±]
Written in C, assembly
Operating system Multi-platform
Type Security library
License Apache License 1.0 and 4-clause BSD License

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 various open source BSD operating systems), OpenVMS and Microsoft Windows. IBM provides a port for the System i (OS/400). OpenSSL is based on SSLeay by Eric Andrew Young and Tim Hudson, development of which unofficially ended on December 17, 1998, when Young and Hudson both started to work for RSA Security.

History of the OpenSSL project[edit]

The OpenSSL project was founded in 1998 to invent a free set of encryption tools for the code used on the Internet. As of 2014 two thirds of all webservers use it. The OpenSSL project management team consists of 4 Europeans. The entire group consists of 11 members, of which 10 are volunteers, with only one full-time employee, Stephen Henson, the lead developer. The project has a budget of less than $1 million a year and relies in part on donations. Steve Marquess, a former military consultant in Maryland started the foundation for donations and consultancy contracts and garnered sponsorship from the Department of Homeland Security and the DoD.[2]

Major version releases[edit]

OpenSSL release history[3][4][5]
Version Original release date Comment Last minor version
Old version, no longer supported: 0.9.1 December 23, 1998
  • Official start of the OpenSSL project
0.9.1c (December 23, 1998)
Old version, no longer supported: 0.9.2 March 22, 1999
  • Successor of 0.9.1c
0.9.2b (April 6, 1999)
Old version, no longer supported: 0.9.3 May 25, 1999
  • Successor of 0.9.2b
0.9.3a (May 27, 1999)
Old version, no longer supported: 0.9.4 August 9, 1999
  • Successor of 0.9.3a
0.9.4 (August 9, 1999)
Old version, no longer supported: 0.9.5 February 28, 2000
  • Successor of 0.9.4
0.9.5a (April 1, 2000)
Old version, no longer supported: 0.9.6 September 24, 2000
  • Successor of 0.9.5a
0.9.6m (March 17, 2004)
Old version, no longer supported: 0.9.7 December 31, 2002
  • Successor of 0.9.6m
0.9.7m (February 23, 2007)
Older version, yet still supported: 0.9.8 July 5, 2005
  • Successor of 0.9.7m
0.9.8y (February 5, 2013)
Older version, yet still supported: 1.0.0 March 29, 2010
  • Successor of 0.9.8n
1.0.0l (January 6, 2014)
Current stable version: 1.0.1 March 14, 2012
  • Successor of 1.0.0l
  • RFC 6520 TLS/DTLS heartbeat support.
  • SCTP support.
  • RFC 5705 TLS key material exporter.
  • RFC 5764 DTLS-SRTP negotiation.
  • Next Protocol Negotiation.
  • PSS signatures in certificates, requests and CRLs.
  • Support for password based recipient info for CMS.
  • Support TLS v1.2 and TLS v1.1.
  • Preliminary FIPS capability for unvalidated 2.0 FIPS module.
  • SRP support.
1.0.1g (April 7, 2014)
Future release: 1.0.2 February 24, 2014 (beta)
  • Successor of 1.0.1f
  • Suite B support for TLS 1.2 and DTLS 1.2
  • Support for DTLS 1.2
  • TLS automatic EC curve selection.
  • API to set TLS supported signature algorithms and curves.
  • SSL_CONF configuration API.
  • TLS Brainpool support.
  • ALPN support.
  • CMS support for RSA-PSS, RSA-OAEP, ECDH and X9.42 DH.
1.0.2 BETA 1 (February 24, 2014)
Future release: 1.1.0
Old version
Older version, still supported
Latest version
Latest preview version
Future release


OpenSSL supports a number of different cryptographic algorithms:

AES, Blowfish, Camellia, SEED, CAST-128, DES, IDEA, RC2, RC4, RC5, Triple DES, GOST 28147-89[6]
Cryptographic hash functions
MD5, MD4, MD2, SHA-1, SHA-2, RIPEMD-160, MDC-2, GOST R 34.11-94[6]
Public-key cryptography
RSA, DSA, Diffie–Hellman key exchange, Elliptic curve, GOST R 34.10-2001[6]

(Perfect forward secrecy is supported using elliptic curve Diffie–Hellman since version 1.0.[7])

FIPS 140-2 compliance[edit]

As of December 2012, OpenSSL is one of two open source programs to be involved with validation under the FIPS 140-2 computer security standard by the National Institute of Standards and Technology's (NIST) Cryptographic Module Validation Program (CMVP).[8] (OpenSSL itself is not validated, but a component called the OpenSSL FIPS Object Module, based on OpenSSL, was created to provide many of the same capabilities).[9]

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 was reinstated in February 2007.[10]


OpenSSL is "dual licensed" under the OpenSSL License and the SSLeay License.[11] The OpenSSL License is Apache License 1.0 and SSLeay License is a 4-clause BSD License. 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.

As the OpenSSL License is Apache License 1.0, but not Apache License 2.0, it requires the phrase This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. ( to appear in advertising material and any redistributions (Sections 3 and 6 of the OpenSSL License). Due to this restriction, the OpenSSL License and the Apache License are incompatible with the GPL.[12] 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.[13][14] Some packages (like Deluge) explicitly modify the GPL license by adding an extra section at the beginning of the license documenting the exception.[15] Other packages use the LGPL licensed GnuTLS which performs the same task.

Notable vulnerabilities[edit]

Vulnerability in the Debian implementation[edit]

In order to keep a warning from being issued by the Valgrind analysis tool, a maintainer of the Debian distribution applied a patch to the Debian implementation of the OpenSSL suite, which inadvertently broke its random number generator in the process. The broken version was included in the Debian release of September 17, 2006 (version 0.9.8c-1). Any key generated with the broken random number generator, as well as data encrypted with such a key, was compromised. The error was reported by Debian on May 13, 2008.[16]

On the Debian 4.0 distribution (etch), these problems were fixed in version 0.9.8c-4etch3 and for the Debian 5.0 distribution (lenny), these problems were fixed in version 0.9.8g-9.[16]


Logo representing the Heartbleed bug. The logo and the name "Heartbleed" have contributed to public awareness of the issue.[17][18]

OpenSSL versions 1.0.1 through 1.0.1f had a severe memory handling bug in their implementation of the TLS Heartbeat Extension that could be used to reveal up to 64 kilobytes of the application's memory with every heartbeat.[19][20] By reading the memory of the web server, attackers could access sensitive data, including the server's private key.[21] This could allow attackers to decode earlier eavesdropped communications if the encryption protocol used does not ensure Perfect Forward Secrecy. Knowledge of the private key could also allow an attacker to mount a man-in-the-middle attack against any future communications. The vulnerability might also reveal unencrypted parts of other users' sensitive requests and responses, including session cookies and passwords, which might allow attackers to hijack the identity of another user of the service.[22]

At its disclosure, some 17% or half a million of the Internet's secure web servers certified by trusted authorities were believed to have been vulnerable to the attack.[23]

See also[edit]


  1. ^ a b c d "OpenSSL: News, Project Newsflash". Retrieved 9 April 2014. 
  2. ^ Yadron, Danny (11 April 2014). "Internet Security Relies on Very Few". Retrieved 14 April 2014. 
  3. ^ "OpenSSL – Project Newsflash". OpenSSL Software Foundation. Retrieved 11 February 2013. 
  4. ^ "OpenSSL – News summary". OpenSSL Software Foundation. Retrieved 11 February 2013. 
  5. ^ "OpenSSL – Changelog". OpenSSL Software Foundation. Retrieved 29 October 2013. 
  6. ^ a b c "GOST engine OpenSSL 1.0.0 README". 
  7. ^ "Protecting data for the long term with forward secrecy". Retrieved 2012-11-05. 
  8. ^ Validated FIPS 140-1 and FIPS 140-2 Cryptographic Modules. NIST. Retrieved 2012-12-19.
  9. ^ "Important Notes about OpenSSL and FIPS 140-2". 
  10. ^ "NIST recertifies open source encryption module". 
  11. ^ "OpenSSL: Source, License". 
  12. ^ "Licenses – Free Software Foundation". 
  13. ^ "WGET 1.10.2 for Windows (win32)". 
  14. ^ "Releases of source and binaries". Retrieved 30 November 2010. 
  15. ^ "Deluge LICENSE file". Retrieved 24 January 2013. 
  16. ^ a b "DSA-1571-1 openssl – predictable random number generator". Debian. May 13, 2008. Retrieved 2012-12-03. 
  17. ^ McKenzie, Patrick (April 9, 2014). "What Heartbleed Can Teach The OSS Community About Marketing". Retrieved April 10, 2014. 
  18. ^ Biggs, John (April 9, 2014). "Heartbleed, The First Security Bug With A Cool Logo". TechCrunch. Retrieved 10 April 2014. 
  19. ^ (7 April 2014). "OpenSSL Security Advisory [07 Apr 2014]". Retrieved 9 April 2014. 
  20. ^ OpenSSL (2014-04-07). "TSL heartbeat read overrun (CVE-2014-0160)". Retrieved 2014-04-08. 
  21. ^ Codenomicon Ltd (2014-04-08). "Heartbleed Bug". Retrieved 2014-04-08. 
  22. ^ "Why Heartbleed is dangerous? Exploiting CVE-2014-0160". 2014. 
  23. ^ Mutton, Paul (8 April 2014). "Half a million widely trusted websites vulnerable to Heartbleed bug". Netcraft Ltd. Retrieved 8 April 2014. 

External links[edit]