TLS uses both kinds of crypto, with a clean division of labor:

  • Asymmetric (public-key) crypto β€” used only during the handshake to authenticate the peer and to agree on a shared secret (e.g. RSA, or ephemeral Diffie-Hellman).
  • Symmetric crypto β€” used afterward to encrypt all the application data (e.g. AES-GCM).

Why split it this way? Two facts force it:

  • Asymmetric operations are orders of magnitude slower per byte, so you’d never use them for bulk data.
  • Symmetric ciphers are fast but need both sides to already share a key β€” and you can’t just send a key over an open wire.

So asymmetric crypto solves the bootstrapping problem (agree on a key safely, over a visible channel), and symmetric crypto does the heavy lifting once the key exists.

See also

References

Questions

flashcards/software-engineering/tls

What is the division of labor between asymmetric and symmetric crypto in TLS?::Asymmetric crypto handles the handshake (authentication + agreeing on a shared key); symmetric crypto encrypts all the application data

Why isn’t asymmetric crypto used to encrypt the bulk application data?::It is orders of magnitude slower per byte than symmetric crypto

Symmetric crypto is fast but requires both sides to already share a key, which is the bootstrapping problem asymmetric crypto solves.