This site is an archive and is no longer updated.
    FundamentalsAdvanced

    Perfect Forward Secrecy

    Learn how PFS protects past sessions even if the server's private key is compromised. See ECDHE in action.

    Interactive Demo
    LinkedInX
    Forward Secrecy

    Forward Secrecy Deep Dive

    Why losing your private key shouldn't mean losing all your past communications

    Step 0 of 8
    Introduction: Why Forward Secrecy matters
    NOW VIEWING

    The Problem Forward Secrecy Solves

    Key Insight

    Forward secrecy means your secrets today stay secret even if your keys are compromised tomorrow. The "forward" refers to time — past sessions are protected going forward.

    Without Forward Secrecy
    January 2023
    Alice
    ══ Encrypted ══▶
    Bank
    Uses bank's public key to encrypt
    Attacker records all traffic
    December 2024
    PRIVATE KEY STOLEN!
    Attacker now decrypts:
    • Every transaction
    • Every password
    • Everything. Forever.
    With Forward Secrecy
    January 2023
    Alice
    ══ Encrypted ══▶
    Bank
    Ephemeral key exchange - new keys each session!
    Attacker records all traffic
    December 2024
    PRIVATE KEY STOLEN!
    Past traffic STILL encrypted!
    • Session keys were ephemeral
    • Keys never stored anywhere
    • Only current sessions at risk

    RSA Key Exchange (No Forward Secrecy)

    Step 1: Server has long-term RSA key pair
    Private Key (same for years)
    Public Key (in certificate)
    Step 2: Client generates pre-master secret (PMS)
    PMS = random_bytes(48)
    Step 3-4: Client encrypts PMS with public key, Server decrypts
    Client
    ─── Encrypt(PMS) ───▶
    Server
    THE PROBLEM

    The encrypted PMS is in the recorded traffic!

    If attacker gets the private key later, they can:

    1. Find encrypted PMS in recorded traffic
    2. Decrypt PMS using stolen private key
    3. Derive session key
    4. Decrypt EVERYTHING

    ECDHE Key Exchange (With Forward Secrecy)

    Step 1: Both sides generate EPHEMERAL key pairs
    Client
    Private: a
    Public: A = aG
    (temporary!)
    Server
    Private: b
    Public: B = bG
    (temporary!)
    Step 2: Exchange public ephemeral keys
    Client (A)
    ◄─── Exchange ───▶
    Server (B)
    Step 3: Each computes SAME shared secret
    Client computes:
    a × B = a × bG = abG
    Server computes:
    b × A = b × aG = abG
    ↑ SAME SECRET! ↑
    Step 5: DISCARD ephemeral private keys
    Keys 'a' and 'b' are deleted immediately. Gone forever. Never stored.
    THE PROTECTION

    Attacker records A and B from traffic, but:

    • Computing 'abG' from 'aG' and 'bG' requires knowing 'a' or 'b'
    • Even with server's long-term private key: can't compute ephemeral secrets
    • Each session = unique keys = unique secret

    Key Exchange Methods Comparison

    MethodForward SecrecyHow It WorksRating
    ECDHEElliptic curve ephemeral DHBest
    DHEClassic DH ephemeral (2048+ bit)Good
    ECDHStatic EC keys (reused)Avoid
    DHStatic DH keys (reused)Avoid
    RSAEncrypt with server's public keyBad
    The "E" is Everything!
    ECDH=Static keys
    ECDHE=Ephemeral keys
    DH=Static keys
    DHE=Ephemeral keys
    ↑ This letter means forward secrecy!

    Who Wants Your Past Traffic?

    Governments / Intelligence
    "Collect now, decrypt later" — Store encrypted traffic for years, wait for key compromise or quantum computers
    Corporate Espionage
    Record competitor communications, hope for breach that reveals keys
    Malicious Insiders
    Copy traffic while employed, steal keys when leaving
    Legal Discovery
    Subpoena for private keys, retroactively read communications
    "Collect Now, Decrypt Later" Strategy
    1. Tap internet backbone
    2. Store ALL encrypted traffic (storage is cheap)
    3. Wait for: key theft, legal compulsion, or quantum computers
    4. Decrypt historical communications
    Forward Secrecy Response
    • Ephemeral keys were never stored
    • Session secrets can't be reconstructed
    • Past traffic remains encrypted forever

    Check Forward Secrecy Status

    OpenSSL Check
    # Check if server supports ECDHE
    openssl s_client -connect yoursite.com:443 2>/dev/null | grep -E "Server Temp Key|Cipher"
    
    # Good output (forward secrecy):
    Server Temp Key: ECDH, P-256, 256 bits  ← Ephemeral!
    Cipher: ECDHE-RSA-AES256-GCM-SHA384     ← ECDHE = good
    
    # Bad output (no forward secrecy):
    Cipher: AES256-SHA256                   ← No ECDHE = bad
    SSL Labs Test

    Go to: https://www.ssllabs.com/ssltest/

    "Forward Secrecy: Yes (with most browsers)"
    TLS_ECDHE_* ciphers listed first
    TLS_RSA_* ciphers = no forward secrecy

    Enable Forward Secrecy

    Nginx Configuration
    # Prioritize ECDHE ciphers
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_cipher_order on;
    Apache Configuration
    SSLProtocol -all +TLSv1.2 +TLSv1.3
    SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
    SSLHonorCipherOrder on

    TLS 1.3: Forward Secrecy by Default

    Good News!
    • TLS 1.3 REQUIRES forward secrecy
    • No RSA key exchange in TLS 1.3
    • You can't turn it off
    Simple Config
    ssl_protocols TLSv1.3;
    # Done! Forward secrecy guaranteed.
    Adoption Timeline
    2011
    Firesheep attack → Google enables FS
    2013
    Snowden revelations → "Collect now, decrypt later" confirmed
    2015
    Major browsers prefer ECDHE
    2018
    TLS 1.3 published → FS mandatory
    2024
    ~95% of HTTPS uses forward secrecy
    Forward Secrecy Checklist
    Server supports TLS 1.3 (FS automatic)
    Server prioritizes ECDHE/DHE cipher suites
    RSA key exchange disabled or lowest priority
    SSL Labs shows "Forward Secrecy: Yes"
    If all checked: Your past traffic is protected!
    RSA = No Forward Secrecy
    ECDHE = Forward Secrecy
    E = Ephemeral = Protected
    Read the Complete Forward Secrecy Guide
    Learn how ephemeral keys protect your past communications even if keys are compromised