S2n
![]() | |
Original author(s) | Colm MacCárthaigh |
---|---|
Developer(s) | Amazon Web Services |
Stable release | 1.5.1[1] / 20 August 2024; 10 days ago (20 August 2024) |
Repository |
|
Written in | C99 |
Operating system | Cross-platform |
Type | Security library |
License | Apache License 2.0 |
Website | github |
s2n-tls, originally named s2n, is an open-source C99 implementation of the Transport Layer Security (TLS) protocol developed by Amazon Web Services (AWS) and initially released in 2015. The goal was to make the code—about 6,000 lines long—easier to review than that of OpenSSL—with 500,000 lines, 70,000 of which are involved in processing TLS.[2][3]
History
s2n was first released in June 2015 on GitHub.[4] AWS said that the name "s2n" stands for signal to noise as a nod "to the almost magical act of encryption—disguising meaningful signals, like your critical data, as seemingly random noise".[2] In 2022 AWS renamed it from s2n to s2n-tls.[5] It has been the subject of several external reviews as well as penetration testing.[6] Galois, Inc. has conducted formal verification of components of s2n-tls.[7][8]
In 2015, independent security researchers described a variant of the Lucky Thirteen attack against s2n, even though s2n included countermeasures intended to prevent timing attacks.[9] In response, Amazon's s2n team said it would remove CBC-mode cipher suites and take code from BoringSSL to replace its own CBC-mode decryption.[10] The AWS Security Blog said that the attack could not have been exploited against Amazon, AWS, or its customers, including because the cited versions of s2n had not been used in a production environment.[11]
In February 2017, Amazon announced that s2n was now handling 100% of SSL traffic for Amazon S3.[12]
Features
TLS extensions
Common TLS extensions supported by this software are Server Name Indication, Application-Layer Protocol Negotiation, and Online Certificate Status Protocol.
Cryptography
s2n-tls supports the main ciphers in use today, such as AES in CBC and GCM modes, 3DES, and RC4. It also provides support for perfect forward secrecy through Diffie–Hellman or Elliptic-curve Diffie–Hellman ephemeral keys.
Weaker ciphers and key exchange modes are disabled by default.[6]
Language bindings
The language bindings below were not developed by AWS:[13]
- Lua: LuaJIT 2.0 binding
- Python: CyS2N
See also
References
- ^ "Release 1.5.1". 20 August 2024. Retrieved 27 August 2024.
- ^ a b Schmidt, Steve (30 June 2015). "Introducing s2n, a New Open Source TLS Implementation". AWS Security Blog. Retrieved 23 March 2021.
- ^ Killalea, Tom (March 2021). "A Second Conversation with Werner Vogels". Communications of the ACM. 64 (3): 50–57. doi:10.1145/3434232. Retrieved 23 March 2021.
- ^ Vaughan-Nichols, Steven (June 30, 2015). "Amazon introduces new open-source TLS implementation 's2n'". ZDNET. Retrieved 2024-08-20.
- ^ Kampanakis, Panos (2022-02-17). "Introducing s2n-quic, a new open-source QUIC protocol implementation in Rust". AWS Security Blog. Retrieved 2024-08-22.
- ^ a b aws/s2n-tls: an implementation of the TLS/SSL protocols, on GitHub
- ^ "Proving Amazon's s2n correct". Galois, Inc. Retrieved 2024-08-20.
- ^ Information Technology Innovation: Resurgence, Confluence, and Continuing Impact. National Academies Press. 2020-12-30. pp. 43–46. ISBN 978-0-309-68420-0.
- ^ Albrecht, Martin R.; Paterson, Kenneth G. (2015-11-23). "Lucky Microseconds: A Timing Attack on Amazon's s2n Implementation of TLS". Cryptology ePrint Archive. Retrieved 24 November 2015.
- ^ Chirgwin, Richard (21 August 2018). "TLS developers should ditch 'pseudo constant time' crypto processing". The Register. Retrieved 23 March 2021.
- ^ MacCarthaigh, Colm (24 November 2015). "s2n and Lucky 13". AWS Security Blog. Retrieved 23 March 2021.
- ^ Schmidt, Steve (23 February 2017). "s2n Is Now Handling 100 Percent of SSL Traffic for Amazon S3". AWS Security Blog. Retrieved 23 March 2021.
- ^ "Language Bindings for s2n-tls". GitHub. Amazon Web Services. Retrieved 23 March 2021.
- v
- t
- e
- Transport Layer Security / Secure Sockets Layer (TLS/SSL)
- Datagram Transport Layer Security (DTLS)
- Server Name Indication (SNI)
- Application-Layer Protocol Negotiation (ALPN)
- DNS-based Authentication of Named Entities (DANE)
- DNS Certification Authority Authorization (CAA)
- HTTPS
- HTTP Strict Transport Security (HSTS)
- HTTP Public Key Pinning (HPKP)
- OCSP stapling
- Opportunistic TLS
- Perfect forward secrecy
- Automated Certificate Management Environment (ACME)
- Certificate authority (CA)
- CA/Browser Forum
- Certificate policy
- Certificate revocation
- Domain-validated certificate (DV)
- Extended Validation Certificate (EV)
- Public key certificate
- Public-key cryptography
- Public key infrastructure (PKI)
- Root certificate
- Self-signed certificate
- Domain Name System Security Extensions (DNSSEC)
- Internet Protocol Security (IPsec)
- Secure Shell (SSH)
Theory | |
---|---|
Cipher | |
Protocol | |
Implementation |