Skip to content

Latest commit

 

History

History
65 lines (34 loc) · 1.94 KB

tls.md

File metadata and controls

65 lines (34 loc) · 1.94 KB

TLS

Transport Layer Security.

Encrypts the entire TCP data.

SSL

Predecessor of TLS.

Implementations

Unlike TCP / IP, not implemented on the Kernel: http://programmers.stackexchange.com/questions/60030/why-isnt-ssl-tls-built-into-modern-operating-systems One of the reasons is that some countries, mostly dictatorships, regulate cryptography.

Major implementations include:

  • OpenSSL. Likely the most popular on Linux

Implementation specifics will not be documented in this section.

GnuTLS

http://en.wikipedia.org/wiki/GnuTLS

Created after OpenSSL because of GPL licensing.

Apparently, way less popular than OpenSSL and much more buggy: http://www.zdnet.com/article/gnutls-big-internal-bugs-few-real-world-problems/

Used by some important programs that need it for the GPL include LDAP and wget on Ubuntu 14.04.

Network Security Services

http://en.wikipedia.org/wiki/Network_Security_Services

Used by Mozilla.

Apple SSL

Had a large breach, generated by a wrong C line that read goto fail; LOL http://www.zdnet.com/article/apples-goto-fail-needs-a-massive-culture-change-to-fix/

Certificates

Man in the middle

View TLS traffic

Transparent forward proxy

Attack in which an intermediate computer gives you his public key and makes you believe that he is the trusted host.

He can then either eavesdrop read transparently, or arbitrarily modify the requests.

This is useful both to carry out tests over HTTPS, and to hack someone.

Tools that allow to do that include:

  • mitmproxy
  • SSLsplit

Solution to the problem: certificates.

This is why when you use Firefox on an HTTPS site, or command line tools like SSH it gives a warning like: certificate not trusted. This means that the certificate verifier is not trusted by your computer, which is either the fault of:

  • your software distribution which did not include a trusted authority
  • or mostly likely of the website which did not register the public key properly