Documentation

Forward Secrecy (Perfect Forward Secrecy)

CRYPTOGRAPHIC PROPERTY SESSION KEYS LONG-TERM PROTECTION

Protects Past Communications

Forward Secrecy (also called Perfect Forward Secrecy or PFS) ensures that even if a server's private key is compromised in the future, an attacker cannot decrypt previously captured encrypted traffic. Each session uses unique, temporary keys that are never stored.

What is Forward Secrecy?

CRYPTOGRAPHIC PROPERTY

Simple Definition: Forward Secrecy is a cryptographic property that ensures session keys are not compromised even if the server's long-term private key is stolen. Each TLS session generates unique temporary keys that are discarded after use.

The Problem Forward Secrecy Solves:

Without Forward Secrecy:

  • "Record and Decrypt Later" - Attackers can record encrypted traffic today and decrypt it years later if they steal the server's private key
  • Single Point of Failure - One compromised private key exposes ALL past communications
  • Permanent Compromise - Historical data remains vulnerable indefinitely
  • Mass Surveillance Risk - Intelligence agencies can store encrypted traffic and decrypt it later

With Forward Secrecy:

  • Session Isolation - Each session has unique keys that can't be derived from the server's private key
  • Limited Damage - Stealing the server's key only affects future connections, not past ones
  • Ephemeral Keys - Temporary keys are deleted after each session
  • Protection Against Mass Surveillance - Recording encrypted traffic becomes useless

Real-World Scenario: The "Record Now, Decrypt Later" Attack

Threat: Intelligence agencies and sophisticated attackers record massive amounts of encrypted HTTPS traffic today, storing it in data centers. They wait patiently for years, hoping that:

  1. A vulnerability is discovered in the encryption
  2. The server's private key is eventually stolen or leaked
  3. Quantum computers become powerful enough to break the encryption

Without Forward Secrecy: Once they obtain the server's private key, they can go back and decrypt YEARS of stored traffic, exposing millions of private conversations, financial transactions, medical records, and confidential business communications.

With Forward Secrecy: Even if they steal the private key, all previously recorded traffic remains encrypted and unreadable. The temporary session keys were never stored and can't be recovered.

MASS SURVEILLANCE THREAT

Real-World Analogy

Think of Forward Secrecy like hotel room keys:

Without Forward Secrecy (Static Keys):

  • Hotel uses the same master key forever
  • If master key is stolen, thief can unlock ALL rooms from past, present, and future
  • All previous guests' rooms are compromised retroactively

With Forward Secrecy (Ephemeral Keys):

  • Hotel issues unique temporary key cards for each guest
  • Key cards automatically expire after checkout
  • If master key is stolen, only current guests are at risk
  • All previous guests' rooms remain secure (keys were destroyed)
  • Thief can't recreate old keys even with the master key

How Forward Secrecy Works

KEY EXCHANGE

Diffie-Hellman Key Exchange

Forward Secrecy relies on ephemeral Diffie-Hellman (DHE) or Elliptic Curve Diffie-Hellman Ephemeral (ECDHE) key exchange algorithms.

Step 1: Client Hello

plaintext🌐 Browser β†’ 🏦 Server

ClientHello:
  - TLS Version: 1.3
  - Supported Cipher Suites:
      β€’ TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 ← Uses ECDHE (Forward Secrecy!)
      β€’ TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 ← Uses ECDHE (Forward Secrecy!)
  - Supported Curves: X25519, secp256r1
  - Client Random: [random bytes]

Step 2: Server Response

plaintext🏦 Server β†’ 🌐 Browser

ServerHello:
  - Selected Cipher: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  - Server Random: [random bytes]

Certificate:
  - Server's certificate with long-term RSA/ECDSA public key
  - Used ONLY for authentication, NOT encryption!

Server Key Exchange:
  - Ephemeral Public Key: [temporary DH public key] ← THIS IS THE KEY!
  - Signature: [signed with server's long-term private key]

  The ephemeral key is:
    βœ… Generated fresh for THIS session only
    βœ… Will be deleted immediately after session ends
    βœ… Cannot be derived from server's long-term private key

The Critical Difference

The ephemeral public key is what makes Forward Secrecy work. It's a temporary key that exists only for this one session and will be permanently deleted. Even if an attacker steals the server's long-term private key, they cannot recreate this ephemeral key.

Step 3: Client Key Exchange

plaintext🌐 Browser β†’ 🏦 Server

Client Key Exchange:
  - Client's Ephemeral Public Key: [temporary DH public key]

Now both sides can compute the same shared secret:
  Server: shared_secret = DH(server_ephemeral_private, client_ephemeral_public)
  Client: shared_secret = DH(client_ephemeral_private, server_ephemeral_public)

  Result: BOTH get the SAME secret, but it was never transmitted!

Step 4: Session Keys Derived

plaintextBoth Browser and Server independently compute:

Session Keys = KDF(shared_secret, client_random, server_random)

Generated keys:
  βœ… Client Write Key (for encrypting clientβ†’server traffic)
  βœ… Server Write Key (for encrypting serverβ†’client traffic)
  βœ… Client MAC Key (for message authentication)
  βœ… Server MAC Key (for message authentication)

πŸ—‘οΈ  Ephemeral private keys are IMMEDIATELY DELETED after deriving session keys!

Step 5: Secure Communication

plaintextπŸ”’ Encrypted HTTPS traffic flows using session keys

After session ends:
  πŸ—‘οΈ  Session keys are deleted
  πŸ—‘οΈ  Ephemeral private keys are already deleted
  ❓ Attacker who steals server's long-term key cannot:
      ❌ Recreate the ephemeral keys (they're gone forever)
      ❌ Derive the shared secret (requires ephemeral private keys)
      ❌ Decrypt this session's traffic

βœ… Forward Secrecy achieved!

Without Forward Secrecy (RSA Key Exchange)

Step 1: Client Hello

plaintext🌐 Browser β†’ 🏦 Server

ClientHello:
  - Cipher Suites:
      β€’ TLS_RSA_WITH_AES_256_CBC_SHA ← Plain RSA (NO Forward Secrecy!)

Step 2: Server Sends Certificate

plaintext🏦 Server β†’ 🌐 Browser

ServerHello + Certificate:
  - Server's certificate with RSA public key
  - This key will be used for BOTH authentication AND encryption

Step 3: Client Encrypts Pre-Master Secret

plaintext🌐 Browser generates pre-master secret

Pre-Master Secret: [random 48 bytes]

Encrypts it with server's RSA public key:
  Encrypted Pre-Master = RSA_Encrypt(server_public_key, pre_master_secret)

🌐 Browser β†’ 🏦 Server: [Encrypted Pre-Master Secret]

The Fatal Flaw

This encrypted pre-master secret is transmitted over the network. An attacker can record it. If they later steal the server's private RSA key, they can:

  1. Decrypt the recorded pre-master secret: RSA_Decrypt(stolen_private_key, recorded_encrypted_premaster)
  2. Derive all session keys (they're deterministic from pre-master + randoms)
  3. Decrypt ALL recorded traffic from this session

Result: No Forward Secrecy. Past communications are compromised.


Security Benefits

PROTECTION LEVELS

Protection Against Various Threats

Threat Without Forward Secrecy With Forward Secrecy
Private Key Stolen ALL past traffic decryptable TOTAL COMPROMISE Past traffic remains encrypted PROTECTED
"Record & Decrypt Later" Attackers store encrypted traffic for future decryption Stored traffic is useless even with stolen keys
Long-term Surveillance Years of communications exposed Each session isolated and protected
Quantum Computer Threat Future quantum computers can break RSA and decrypt all stored traffic Limited impact - only individual sessions at risk
Insider Threat Rogue admin with private key can decrypt ALL traffic Admin can only access current sessions
Legal Compulsion Court order forces key disclosure, ALL past communications exposed Key disclosure only affects future traffic

Quantum Computing Threat

Post-Quantum Cryptography: While Forward Secrecy limits the damage from quantum computers, it doesn't fully protect against them. A quantum computer could potentially:

  1. Break the Diffie-Hellman key exchange in real-time (if capturing live traffic)
  2. Decrypt individual sessions as they happen

However, Forward Secrecy DOES prevent quantum computers from decrypting stored historical traffic, because the ephemeral keys are gone forever.

QUANTUM THREAT PARTIAL PROTECTION

Real-World Security Incidents

Historical Examples Where Forward Secrecy Would Have Helped

Heartbleed Bug (2014) CRITICAL

  • OpenSSL vulnerability that leaked private keys
  • Affected 17% of secure web servers worldwide
  • Without PFS: All past HTTPS traffic to affected servers could be decrypted
  • With PFS: Only active sessions at time of attack were compromised

Stolen Certificate Authority Keys

  • Multiple CAs have been compromised over the years
  • Attackers gained ability to impersonate any website
  • Without PFS: All historical traffic to spoofed sites could be decrypted
  • With PFS: Historical traffic remains protected

NSA PRISM Program (Snowden Revelations 2013)

  • Mass surveillance program recording internet traffic
  • Intelligence agencies store encrypted communications hoping to decrypt later
  • Without PFS: When keys are eventually obtained, years of communications are exposed
  • With PFS: Stored traffic remains encrypted and unreadable

Cipher Suites with Forward Secrecy

CONFIGURATION

Identifying Forward Secrecy Cipher Suites

Cipher suites with Forward Secrecy use DHE (Diffie-Hellman Ephemeral) or ECDHE (Elliptic Curve Diffie-Hellman Ephemeral) in their names.

plaintextβœ… EXCELLENT (TLS 1.3 - Forward Secrecy by default):
  - TLS_AES_256_GCM_SHA384
  - TLS_AES_128_GCM_SHA256
  - TLS_CHACHA20_POLY1305_SHA256

  Note: TLS 1.3 ALWAYS uses ephemeral keys!

βœ… GOOD (TLS 1.2 with ECDHE):
  - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256

βœ… ACCEPTABLE (TLS 1.2 with DHE - slower but still secure):
  - TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

Key Indicators:

  • ECDHE = Elliptic Curve Diffie-Hellman Ephemeral ← BEST (fast, strong)
  • DHE = Diffie-Hellman Ephemeral ← GOOD (slower, but compatible)
  • TLS 1.3 ciphers = ALWAYS have Forward Secrecy built-in
plaintext❌ NO FORWARD SECRECY (RSA Key Exchange):
  - TLS_RSA_WITH_AES_256_CBC_SHA256
  - TLS_RSA_WITH_AES_128_CBC_SHA
  - TLS_RSA_WITH_AES_256_GCM_SHA384
  - TLS_RSA_WITH_3DES_EDE_CBC_SHA

❌ DEPRECATED AND INSECURE:
  - TLS_RSA_WITH_RC4_128_SHA (RC4 broken)
  - TLS_RSA_WITH_DES_CBC_SHA (DES broken)
  - SSL_RSA_WITH_* (all SSL versions broken)

Danger Signs:

  • RSA in key exchange position (e.g., TLS_RSA_WITH_...)
  • No DHE or ECDHE in the name
  • Legacy SSL ciphers

Why These Are Dangerous

Plain RSA key exchange ciphers encrypt the session key with the server's long-term RSA public key. This means:

  • Attacker records encrypted traffic
  • Years later, attacker steals server's RSA private key
  • Attacker decrypts ALL recorded sessions from the past

Result: Complete compromise of historical communications.


Server Configuration

ENABLING FORWARD SECRECY

Nginx Configuration

nginx# Optimal TLS configuration with Forward Secrecy
server {
    listen 443 ssl http2;
    server_name example.com;

    # Certificate configuration
    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;

    # Protocol versions - TLS 1.2 and 1.3 only
    ssl_protocols TLSv1.2 TLSv1.3;

    # Cipher suites - ONLY Forward Secrecy enabled ciphers
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';

    # Prefer server cipher order
    ssl_prefer_server_ciphers on;

    # DH parameters for DHE ciphers (if using DHE)
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    # Enable session resumption (doesn't break Forward Secrecy)
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_session_tickets off;  # Disable tickets to maintain PFS

    # OCSP Stapling
    ssl_stapling on;
    ssl_stapling_verify on;

    # Security headers
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    location / {
        root /var/www/html;
        index index.html;
    }
}

Key Configuration Points

  • TLS 1.3 is enabled: Automatically provides Forward Secrecy
  • Only ECDHE ciphers listed: Every cipher uses ephemeral keys
  • DHE fallback available: For clients that don't support ECDHE
  • Session tickets disabled: Prevents session ticket key reuse issues
bash# Generate strong DH parameters (takes several minutes)
openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

# Or use 2048-bit (faster generation, still secure)
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Why this matters:

  • Default DH parameters are often weak (1024-bit or shared)
  • Custom strong DH parameters prevent attacks on DHE ciphers
  • 2048-bit is minimum recommended, 4096-bit is better

Apache Configuration

apache<VirtualHost *:443>
    ServerName example.com
    DocumentRoot /var/www/html

    # Certificate configuration
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/example.com.crt
    SSLCertificateKeyFile /etc/ssl/private/example.com.key
    SSLCertificateChainFile /etc/ssl/certs/intermediate.crt

    # Protocol versions - TLS 1.2 and 1.3 only
    SSLProtocol -all +TLSv1.2 +TLSv1.3

    # Cipher suites - ONLY Forward Secrecy enabled
    SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256

    # Prefer server cipher order
    SSLHonorCipherOrder on

    # Use strong DH parameters
    SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

    # Session settings
    SSLSessionCache "shmcb:/var/run/ssl_scache(512000)"
    SSLSessionTickets off

    # OCSP Stapling
    SSLUseStapling on
    SSLStaplingCache "shmcb:/var/run/ocsp(128000)"

    # Security headers
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</VirtualHost>

Testing Forward Secrecy

VERIFICATION

Testing with Command Line Tools

bash# Test Forward Secrecy with OpenSSL
openssl s_client -connect example.com:443 -cipher ECDHE

# Check which cipher suite was negotiated
openssl s_client -connect example.com:443 2>&1 | grep "Cipher"

# Expected output (Forward Secrecy enabled):
# Cipher    : ECDHE-RSA-AES256-GCM-SHA384

# Test that RSA ciphers are NOT available
openssl s_client -connect example.com:443 -cipher RSA

# Expected output (should FAIL if PFS is properly configured):
# error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small

Interpreting Results:

plaintextβœ… GOOD - Forward Secrecy Working:
   Cipher: ECDHE-RSA-AES256-GCM-SHA384
   Cipher: ECDHE-ECDSA-CHACHA20-POLY1305
   Cipher: DHE-RSA-AES256-GCM-SHA384

❌ BAD - NO Forward Secrecy:
   Cipher: AES256-SHA
   Cipher: DES-CBC3-SHA
   Cipher: RSA-AES256-GCM-SHA384

SSL Labs Server Test (https://www.ssllabs.com/ssltest/)

plaintextTest your server and look for:

βœ… GOOD INDICATORS:
  - Forward Secrecy: Yes (with modern clients)
  - TLS 1.3 support: Yes
  - Top cipher suite uses ECDHE

❌ WARNING SIGNS:
  - Forward Secrecy: No
  - RSA key exchange available
  - Old TLS versions enabled (TLS 1.0, TLS 1.1)

What SSL Labs Shows:

Finding Meaning
Forward Secrecy: Yes GOOD Server properly configured with ECDHE/DHE
Forward Secrecy: With modern clients ACCEPTABLE Forward Secrecy available but RSA fallback exists
Forward Secrecy: No BAD Only RSA key exchange available
bash#!/bin/bash
# Test Forward Secrecy for a domain

DOMAIN=$1

echo "Testing Forward Secrecy for: $DOMAIN"
echo "=========================================="

# Test ECDHE support
echo -n "ECDHE Support: "
if openssl s_client -connect "$DOMAIN:443" -cipher ECDHE 2>&1 | grep -q "Cipher is ECDHE"; then
    echo "βœ… SUPPORTED"
else
    echo "❌ NOT SUPPORTED"
fi

# Test that RSA is disabled
echo -n "RSA Key Exchange Disabled: "
if openssl s_client -connect "$DOMAIN:443" -cipher RSA 2>&1 | grep -q "Cipher is"; then
    echo "❌ ENABLED (BAD - no Forward Secrecy)"
else
    echo "βœ… DISABLED (GOOD)"
fi

# Get actual cipher negotiated
echo "Negotiated Cipher:"
openssl s_client -connect "$DOMAIN:443" 2>&1 < /dev/null | grep "Cipher" | head -1

# Check TLS version
echo "TLS Version:"
openssl s_client -connect "$DOMAIN:443" 2>&1 < /dev/null | grep "Protocol" | head -1

Usage:

bashchmod +x test-pfs.sh
./test-pfs.sh example.com

Common Issues and Solutions

TROUBLESHOOTING

Issue 1: Performance Concerns

DHE Performance Impact

Problem: DHE (non-elliptic curve) ciphers are computationally expensive, causing CPU load and slow handshakes.

Symptoms:

  • High CPU usage on SSL/TLS connections
  • Slow initial connection times
  • Server struggles under high connection load

Solutions:

SOLUTION 1 Use ECDHE instead of DHE

nginx# Prefer ECDHE (fast) over DHE (slow)
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384';

ECDHE is 10-100x faster than DHE with equivalent security.

SOLUTION 2 Enable TLS 1.3

TLS 1.3 has optimized key exchange that's faster than TLS 1.2 DHE/ECDHE.

SOLUTION 3 Use SSL session resumption

nginxssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

Allows returning clients to skip expensive key exchange.

Issue 2: Session Tickets Breaking PFS

Session Tickets Can Undermine Forward Secrecy

Problem: TLS session tickets encrypt session data with a ticket encryption key. If this key is reused for too long, stealing it compromises Forward Secrecy.

How Session Tickets Break PFS:

plaintextNormal Forward Secrecy:
  Session 1: ephemeral keys β†’ deleted βœ…
  Session 2: ephemeral keys β†’ deleted βœ…

With Session Tickets (if key is reused):
  Session Ticket Encryption Key (STEK): [long-lived key]

  Session 1: STEK encrypts session state β†’ stored in ticket
  Session 2: STEK encrypts session state β†’ stored in ticket

  Attacker steals STEK:
    ❌ Can decrypt all session tickets
    ❌ Can resume sessions and decrypt traffic
    ❌ Forward Secrecy compromised!

Solutions:

SOLUTION 1 Disable session tickets

nginx# Nginx
ssl_session_tickets off;
apache# Apache
SSLSessionTickets off

SOLUTION 2 Rotate ticket keys frequently

nginx# Rotate session ticket keys every hour
ssl_session_ticket_key /etc/nginx/ticket_keys/current.key;
ssl_session_ticket_key /etc/nginx/ticket_keys/previous.key;

Automate key rotation:

bash# Cron job to rotate keys every hour
0 * * * * /usr/local/bin/rotate-session-ticket-keys.sh

Issue 3: Old Client Compatibility

Legacy Clients Don't Support Forward Secrecy

Problem: Very old clients (pre-2010) don't support DHE or ECDHE, causing connection failures.

Affected Clients:

  • Internet Explorer 6-8 on Windows XP
  • Android 2.x (default browser)
  • Java 6 and older
  • Old OpenSSL versions (< 1.0.0)

Solutions:

OPTION 1 Accept the risk - drop old clients

Most sites can safely ignore these ancient clients (<1% of traffic).

OPTION 2 Provide RSA fallback

nginx# Allow RSA fallback for ancient clients
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:AES256-SHA';

⚠️ This weakens security - only do this if absolutely necessary.

OPTION 3 Show upgrade message

Detect old clients and show a browser upgrade message instead of allowing insecure connections.


Forward Secrecy Best Practices

RECOMMENDATIONS

Configuration Best Practices

Enable TLS 1.3 - Forward Secrecy is mandatory and optimized

Use ECDHE ciphers - Much faster than DHE, equally secure

Disable RSA key exchange - Remove all TLS_RSA_WITH_* ciphers

Rotate session ticket keys - Every 1-24 hours depending on traffic

Use strong DH parameters - Minimum 2048-bit, prefer 4096-bit

Disable SSLv3, TLS 1.0, TLS 1.1 - All have security issues

Test regularly - Use SSL Labs and OpenSSL to verify configuration

Monitor cipher usage - Track which ciphers clients negotiate

Operational Best Practices

Private key protection - Use HSMs or secure key stores

Automate certificate renewal - Use Let's Encrypt or ACME protocol

Log and alert on cipher fallback - Detect when old RSA ciphers are used

Regular security audits - Review TLS configuration quarterly

Keep software updated - Latest OpenSSL/TLS library versions

What NOT to Do

Don't use static RSA - No Forward Secrecy protection

Don't disable ECDHE - Critical for modern Forward Secrecy

Don't reuse session ticket keys forever - Rotate them regularly

Don't use weak DH parameters - Minimum 2048-bit

Don't ignore old TLS versions - Disable TLS 1.0 and 1.1

Don't assume it's working - Always test and verify


Forward Secrecy History and Adoption

EVOLUTION

Timeline:

  • 1976 - Diffie-Hellman key exchange invented (foundation for Forward Secrecy)
  • 2008 - Forward Secrecy gains attention after increased surveillance concerns
  • 2011 - Google enables Forward Secrecy for Gmail
  • 2013 - Snowden revelations accelerate Forward Secrecy adoption
  • 2013 - CloudFlare enables Forward Secrecy by default
  • 2014 - Heartbleed bug demonstrates importance of Forward Secrecy
  • 2018 - TLS 1.3 released - Forward Secrecy mandatory
  • 2025 - Forward Secrecy nearly universal for HTTPS

Adoption Statistics (2025):

Client/Server Forward Secrecy Support
Modern Browsers 100% support ECDHE UNIVERSAL
Web Servers 95%+ configured with PFS WIDESPREAD
Top 1000 Sites 99%+ use Forward Secrecy STANDARD
Legacy Clients <1% can't do Forward Secrecy RARE
TLS 1.3 Adoption 70%+ of HTTPS traffic GROWING

Compliance and Regulations

REQUIREMENTS

Regulatory Requirements

Many compliance standards now require or strongly recommend Forward Secrecy:

PCI-DSS (Payment Card Industry)

  • Required for TLS 1.2 connections processing card data
  • Specifies use of strong cryptography with Forward Secrecy
  • Prohibits weak cipher suites (RSA key exchange)

NIST Guidelines

  • NIST SP 800-52 Rev. 2 recommends Forward Secrecy
  • Requires ephemeral key exchange for government systems
  • Mandates TLS 1.2+ with ECDHE ciphers

HIPAA (Healthcare)

  • Addressable safeguard for protecting ePHI in transit
  • Strong encryption required - Forward Secrecy recommended

GDPR (EU Data Protection)

  • "State of the art" security required
  • Forward Secrecy considered best practice for data in transit

Learn More

TLS/SSL Basics - Understanding the full TLS handshake

Cipher Suites - Deep dive into cipher suite selection

Certificate Chain - How certificates enable authentication

HSTS - Forcing HTTPS connections

SNI - Multiple HTTPS sites on one IP address


Protected by Layerd AI

Layerd AI Cloud WAF provides:

Enforced Forward Secrecy - Automatically selects PFS cipher suites

Cipher Suite Validation - Blocks connections without Forward Secrecy

Session Key Monitoring - Ensures ephemeral keys are properly deleted

Compliance Reporting - Tracks Forward Secrecy usage across infrastructure

Automatic Configuration - Deploys optimal PFS settings without manual config

Learn more about Layerd AI Protection β†’


Last updated: November 2025