Perfect Forward Secrecy - zamezte odposlechu svého serveru

12.4.2016 | Jindřich Zechmeister

Pod pojmem Perfect Forward Secrecy se skrývá bezpečnostní funkce SSL protokolu. Jejím cílem je zamezit zpětnému dešifrování komunikace se serverem, například při analýze odposlechu. V návodu se dozvíte, jak Perfect Forward Secrecy na svém serveru začít používat.

Protokoly pro výměnu klíčů

Před samotným ustavením šifrované komunikace mezi serverem a prohlížečem se musí obě strany domluvit, jak budou šifrovat. Součástí této domluvy je i výběr protokolů, které obě strany podporují. Jedním z vybíraných protokolů je i protokol pro výměnu klíče.

Při šifrování můžete využít tří protokolů na výměnu klíčů - RSA, DHE a ECDHE (eliptické křivky - Elliptic Curve Diffie–Hellman Exchange). První z nich nepodporuje Forward Secrecy, kterým se budeme v článku zabývat, a z bezpečnostních důvodů je lepší ho nepoužívat. Další dva jsou bezpečnější, a doporučuji jejich použití na vašem serveru.

K čemu Perfect Forward Secrecy slouží?

Jak anglický název napovídá, jedná se o zabezpečení "dopředu"; pro případ, že by někdo získal záznam zašifrované komunikace. Takový scénář si lze představit například při odposlechu - v první fázi dojde ke sběru a zaznamenání dat, a následně je odposlouchávající dešifruje a zpracuje.

SSL sezení jsou šifrovány párem dočasných klíčů. Zašifrovaná komunikace může být uložena, ale útočník potřebuje šifrovací klíče, aby zjistil její obsah. Pokud by se dostal k privátnímu RSA klíči, odemkne si s ním i původní klíče sezení, a může zaznamenanou komunikaci zpětně dešifrovat. To není tak neobvyklý scénář, protože majitelé certifikátů často privátní klíče certifikátů nemění.

Aby toto nebylo možné provést, je potřeba pro výměnu klíčů použít jiný Key-exchange algoritmus než RSA.

Diffie-Hellmanův algoritmus na výměnu klíčů tento problém řeší a klíče pro sezení s privátním klíčem nesouvisí, a jsou po ukončení komunikace smazány. Tento algoritmus je tedy jedním ze dvou, které se při Forward Secrecy používají. Oproti ECDHE algoritmu je však v praxi výrazně pomalejší, v pohledu výkonu je tedy lepší použít ECDHE algoritmus. DH algoritmus má navíc slabou podporu Internet Exploreru 9 a 10; podporuje protokol pouze v kombinaci s DSA klíči, které se běžně nepoužívají.

Jak Forward Secrecy začít používat

Následující řádky vám pomohou s nastavením Perfect Forward Secrecy na nejpoužívanějších webových serverech Apache a IIS.

Apache a OpenSSL

Používáte-li webový server Apache (a OpenSSL), je nastavení jednoduché. Potřebujete však verze softwaru, který podporuje kryptografii eliptických křivek. Tím je Apache ve verzi 2.4.x a OpenSSL 1.0.1c+.

Apache své nastavení uchovává v globálním konfiguračním souboru, a jednotlivé položky nastavení se nazývají direktivy.

Direktiva ovlivňující nastavení šifrovacích algoritmů se nazývá SSLCipherSuite. V ní jsou nastaveny preferované šifry, které má server používat. Odborníci ze SSLlabs doporučují používat tyto kombinace:

  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384

Jejich posunutím nahoru v konfiguraci zároveň zvyšujete jejich preferenci. Všechny 3 SSL direktivy potom vypadají například takto:

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder off
SSLCipherSuite "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
SSLSessionTickets off

Více informací o nastavení (včetně postupu pro nginx) najdete v článku Configuring Apache, Nginx, and OpenSSL for Forward Secrecy.

IIS (Internet Information Services)

Nastavení Perfect Forward Secrecy na IIS je složitější, ale například článek Setup your IIS for SSL Perfect Forward Secrecy and TLS 1.2 poskytuje PowerShell skript, pomocí kterého Perfect Forward Secrecy nastavíte za použití TLS 1.2. Skript můžete použít jak na IIS 7.5, tak na poslední IIS 8. Jiný způsob najdete v článku Perfect Secrecy in an imperfect world - pro nastavení používá nástroj IIS Crypto.

Pokud byste instalaci chtěli provést tradičním manuálním způsobem, můžete tak učinit v programu gpedit.msc (Local Group Policy Editor) a v menu se k volbám dostanete přes Computer Configuration > Administrative Templates > Network > SSL Configuration Settings. Pak klikněte na SSL Cipher Suite Order a upravujte pořadí šifer (ECDHE podporující Forward Secrecy doporučuji umístit na nejvyšší místo).

editor mistnich zasad skupiny

Test nastavení serveru

Nové nastavení, funkčnost Forward Secrecy a celkovou úroveň bezpečnosti si můžete ověřit v SSL Server Testu Qualysu. Pokud na serveru nebude něco nastaveno špatně, nebo nějaké bezpečnostní riziko, budete v testu odměněni pěknou známkou A.

ssllabs server test

Bezpečný a správně nastavený server dostane od SSLlabs známku A.

Výhodou SSLLabs je fakt, že pokud vám vytknou některý z aspektů zabezpečení serveru, poskytnou současně i návod na správné nastavení.


Ing. Jindřich Zechmeister
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz