TLS gives you a secure channel over a reliable transport (TCP). That “secure channel” is exactly three guarantees:

  • Confidentiality — encryption, so an eavesdropper on the wire sees gibberish.
  • Integrity — a MAC/AEAD tag detects any tampering with the bytes.
  • Authentication — you know who you’re talking to (usually the server proves its identity via a certificate; optionally the client too).

Dropping authentication is the classic mistake: encryption alone is useless if you might be encrypting to an attacker (a man-in-the-middle). TLS does not provide delivery or ordering — that’s TCP’s job. TLS assumes a reliable, ordered byte stream already exists underneath it.

See also

References

Questions

flashcards/software-engineering/tls

What three guarantees does a TLS secure channel provide?::Confidentiality (encryption), integrity (tampering detected via MAC/AEAD), and authentication (you know who you’re talking to)

TLS relies on TCP to provide delivery and ordering — it does not provide reliability itself.

Why is encryption without authentication useless in TLS?::Without authentication you might be encrypting to a man-in-the-middle instead of the real server