Transport Layer Security (TLS) Protocol and its predecessor, Secure Sockets Layer (SSL), are cryptographic protocols that provide security and data integrity for communications over TCP/IP networks such as the Internet. Several versions of the protocols are common in applications such as web browsing, electronic mail, Internet faxing, instant messaging and voice-over-IP (VoIP).

Description 
The TLS protocol allows applications to communicate across a network in a way designed to prevent eavesdropping, tampering, and message forgery. TLS provides endpoint authentication and communications confidentiality over the Internet using cryptography. Most of the time, only the server is authenticated (i.e., its identity is ensured) while the client remains unauthenticated; this means that the end user (whether an individual or an application, such as a Web browser) can be sure with whom it is communicating. The next level of security is known as mutual authentication. Mutual authentication requires public key infrastructure (PKI) deployment to clients unless TLS-PSK or the Secure Remote Password (SRP) protocol are used, which provide strong mutual authentication without needing to deploy a PKI.

Usage 
SSL and TLS have been widely used in several open source software projects. Programmers may use the OpenSSL, NSS, or GnuTLS libraries for SSL/TLS functionality. Microsoft Windows includes a usage of SSL and TLS as part of its Secure Channel package. Delphi programmers may use a library called Indy.

Standards 
The current approved version is 1.2, which is specified in:
 RFC 5246: “The Transport Layer Security (TLS) Protocol Version 1.2”.

The current standard obsoletes these former versions:
 RFC 2246: “The TLS Protocol Version 1.0”.
 RFC 4346: “The Transport Layer Security (TLS) Protocol Version 1.1”.

Other RFCs subsequently extended TLS, including:
 RFC 2595: “Using TLS with IMAP, POP3 and ACAP”. Specifies an extension to the IMAP, POP3 and ACAP services that allow the server and client to use transport-layer security to provide private, authenticated communication over the Internet.
 RFC 2712: “Addition of Kerberos Cipher Suites to Transport Layer Security (TLS)”. The 40-bit ciphersuites defined in this memo appear only for the purpose of documenting the fact that those ciphersuite codes have already been assigned.
 RFC 2817: “Upgrading to TLS Within HTTP/1.1”, explains how to use the Upgrade mechanism in HTTP/1.1 to initiate Transport Layer Security (TLS) over an existing TCP connection. This allows unsecured and secured HTTP traffic to share the same well known port (in this case, http: at 80 rather than https: at 443).
 RFC 2818: “HTTP Over TLS”, distinguishes secured traffic from insecure traffic by the use of a different 'server port'.
 RFC 3207: “SMTP Service Extension for Secure SMTP over Transport Layer Security”. Specifies an extension to the SMTP service that allows an SMTP server and client to use transport-layer security to provide private, authenticated communication over the Internet.
 RFC 3268: “AES Ciphersuites for TLS”. Adds Advanced Encryption Standard (AES) ciphersuites to the previously existing symmetric ciphers.
 RFC 3546: “Transport Layer Security (TLS) Extensions”, adds a mechanism for negotiating protocol extensions during session initialisation and defines some extensions. Made obsolete by RFC 4366.
 RFC 3749: “Transport Layer Security Protocol Compression Methods”, specifies the framework for compression methods and the DEFLATE compression method.
 RFC 3943: “Transport Layer Security (TLS) Protocol Compression Using Lempel-Ziv-Stac (LZS)”.
 RFC 4132: “Addition of Camellia Cipher Suites to Transport Layer Security (TLS)”.
 RFC 4162: “Addition of SEED Cipher Suites to Transport Layer Security (TLS)”.
 RFC 4217: “Securing FTP with TLS”.
 RFC 4279: “Pre-Shared Key Ciphersuites for Transport Layer Security (TLS)”, adds three sets of new ciphersuites for the TLS protocol to support authentication based on pre-shared keys.
 RFC 4347: “Datagram Transport Layer Security” specifies a TLS variant that works over datagram protocols (such as UDP).
 RFC 4366: “Transport Layer Security (TLS) Extensions” describes both a set of specific extensions, and a generic extension mechanism.
 RFC 4492: “Elliptic Curve Cryptography  (ECC) Cipher Suites for Transport Layer Security (TLS)”.
 RFC 4507: “Transport Layer Security (TLS) Session Resumption without Server-Side State”.
 RFC 4680: “TLS Handshake Message for Supplemental Data”.
 RFC 4681: “TLS User Mapping Extension”.
 RFC 4785: “Pre-Shared Key (PSK) Ciphersuites with NULL Encryption for Transport Layer Security (TLS)”.

Related pages
 Certificate authority
 Public key certificate
 Extended Validation Certificate
 SSL acceleration
 Datagram Transport Layer Security
 Multiplexed Transport Layer Security
 X.509
 Virtual private network
 SEED
 Server gated cryptography

Software 
 OpenSSL: a free (and very popular) implementation (BSD license with some banter extensions)
 GnuTLS: a free LGPL licensed implementation
 JSSE: a Java implementation included in the Java Runtime Environment
 Network Security Services (NSS): FIPS 140 validated open source library

References

Further reading 
 
 
 
 
 

Cryptography
Internet standards
Internet protocols
Communication