Phase 4 · Encryption in Transit + TLS · Lesson 1 of 2
Article
·
15 min
·
+10 pts
Encryption at rest protects data sitting still. But data spends much of its life moving — between a browser and your app, between two microservices, between your app and a database. The control that protects it in motion is TLS (Transport Layer Security), the protocol behind every https://. When a framework says "data is encrypted in transit," it means TLS, and when an auditor tests that control, they are testing your TLS configuration and the certificates that anchor it.
This lesson gives you the working model: what the TLS handshake actually accomplishes, why TLS 1.3 matters, where mutual TLS (mTLS) fits, and the certificate lifecycle — because the single most common transit-security failure is not weak cryptography, it's a certificate that expired, was misconfigured, or was never rotated.
3 a.m. page: the production certificate expired
TLS combines all three primitives from the cryptography lesson to give a connection three guarantees at once:
The clever part is how the two endpoints agree on a shared symmetric key over a network anyone can listen to. That is the handshake: asymmetric cryptography is used briefly to authenticate the server and establish a shared secret, and from then on the much faster symmetric key encrypts the actual data. This is exactly the envelope-style layering from earlier — slow asymmetric crypto to bootstrap trust, fast symmetric crypto to do the work.
The TLS handshake: authenticate the server, agree on a session key, then switch to fast symmetric encryption
TLS versions are a control in their own right, because old versions carry weak options. SSL (all versions) and TLS 1.0/1.1 are deprecated and must be disabled — supporting them is a routine finding. The live choice is between:
When you review transit encryption, "TLS 1.2 minimum, weak ciphers disabled, TLS 1.3 preferred" is the clean target. "TLS 1.0 still enabled for an old client" is the gap.
The cipher suite is part of the control
"We use TLS" is not enough on its own — TLS 1.2 can be configured with weak ciphers (RC4, 3DES, export-grade) or without forward secrecy. The full control is the version floor and the cipher policy. Tools like SSL Labs / testssl.sh grade an endpoint on both; an A grade means a modern version and a clean cipher list. When you collect evidence, the scan report — not just "TLS enabled" — is what demonstrates the control.
In ordinary TLS, only the server presents a certificate — the client verifies the server, but the server doesn't cryptographically verify the client (that's handled later by passwords, tokens, etc.). Mutual TLS adds the second half: the client also presents a certificate, so both ends authenticate each other before any data flows.
You'll see mTLS in service-to-service communication: microservices in a service mesh (Istio, Linkerd) use mTLS so every internal call is authenticated and encrypted, internal APIs use it so only holders of a valid client certificate can connect, and zero-trust architectures use it to make "the network is trusted" assumptions unnecessary. For a GRC Engineer, mTLS is how "service A is allowed to call service B" becomes a cryptographic fact rather than a firewall rule — and it ties directly to the zero-trust networking ideas in a later phase.
Certificates are the trust anchor of TLS, and they have a lifecycle that, when neglected, is the leading cause of both outages and findings:
The classic failures are concrete and common: a cert expires and takes the site down at 3 a.m.; a wildcard cert's private key is shared across dozens of systems so one compromise means re-issuing everywhere; a renewal is manual and the one person who knew the process left. The control that prevents all three is automated lifecycle management plus an inventory of every certificate and its expiry.
Quick check
An auditor reviewing transit encryption finds that the main application uses TLS 1.2 with strong ciphers, but a legacy admin endpoint still accepts TLS 1.0 connections, and three internal service certificates are renewed manually by a single engineer with no expiry tracking. Which is the most accurate assessment?
GRC Engineer's lens
When you review encryption in transit, check three things and collect the artifact for each: (1) the version and cipher policy on every exposed endpoint — evidence is a scan report (SSL Labs / testssl.sh), not a claim; (2) internal/service traffic — is it TLS or mTLS, or is it plaintext inside a "trusted" network (a frequent blind spot); and (3) the certificate inventory — every cert, its expiry, and whether renewal is automated. The phrase that should trigger a deeper look is "encrypted in transit" with no scan and no certificate inventory behind it — that's an assertion waiting to become a 3 a.m. page.
TLS gives a connection confidentiality, integrity, and authentication in one handshake; TLS 1.3 is the safe-by-default target and deprecated versions must be off; mTLS extends authentication to both ends for service-to-service trust; and the certificate lifecycle — issuance, deployment, rotation, revocation — is where transit security most often breaks, so automation and an expiry inventory are the real controls.
In the next lesson you'll put this to work: auditing a deliberately weak TLS configuration, identifying each issue, and writing the remediation plan an engineering team can execute.