Logjam: jak vyřešit nově objevenou zranitelnost

17. 6. 2015 | Jindřich Zechmeister

Od objevu a popsání zranitelnosti Hertbleed se pravidelně objevují další a další koncepty útoků na SSL/TLS protokol a související šífry. Tento článek se zabývá poslední popsanou zranitelností Logjam, která souvisí se slabými klíči v Diffieho-Hellmanově výměně klíčů (dále jen DHE a DH).

Diffie-Hellman protokol pro výměnu klíčů

Protokol DH se vůbec nepoužívá k asymetrickém šifrování, jako třeba RSA, ale používá se pro bezpečné ustavení tajných klíčů či sdíleného tajemství. Tomu odpovídá i anglický název Diffie–Hellman key exchange algorithm. Byl vymyšlen už v roce 1976 Whitfieldem Diffiem a Martinem Hellmanem. Opírá se o složitost řešení výpočtu diskrétního logaritmu.

Princip zranitelnosti Logjam

Logjam je v principu tzv. downgrade útok, který se snaží oslabit bezpečnost serveru na takovou úroveň, která je prolomitelná. S tímto principem jsme se setkali zejména u zranitelnosti FREAK, která využívala podporu slabých exportních šifer na serveru. Logjam je podobnou reminiscencí omezování kryptografie v 90. letech. Vědecký článek popisující zranitelnost Logjam a tzv. proof of concept se nazývá Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice. Stejně jako u zranitelnosti FREAK jsou problémem exportní 512b DH šifry pojmenované jako DHE_EXPORT, na které může útočník downgradovat a s patřičným vybavením dopočítat šifrovací klíče.

Možná si říkáte, že exportní šifry už žádný slušně zabezpečený server nepoužívá a tudíž se není čeho bát. Podle odborníků upozorňujících na tuto zranitelnost má ještě jeden rozměr, kterým je časté opakování stejných prvočísel a možnost odposlechu 1024b DH šifer. Akademici nebyli schopni "prolomit" 768b prvočísla, ale domnívají se, že pro NSA není díky jejímu vybavení problém dopočítat 1024b prvočísla (jejich vlastní zjednodušení závěrů výzkumu).

Dále tvrdí, že 18 % webů ze seznamu Alexa "Top One Million" používá stejné 1024b nejčastější prvočíslo pro DH operace. NSA by za předpokladu dostatečné silného výpočetního výkonu mohla tyto weby pasivně odposlouchávat. Z tohoto důvodu doporučují okamžitě přejít na delší 2048b klíče a vygenerovat nové, silnější DH parametry (grupu prvočísel).

Otestování zranitelnosti

Stejně jako v případě jiných zranitelností je vhodné otestovat svůj server, zdali se ho zranitelnost týká, nebo v druhém případě otestovat správnost nasazené bezpečnostní opravy.

Svůj server si můžete vůči zranitelnosti Logjam otestovat na Logjamu věnovaném webu a Server test vám prozradí, zdali je vašeho serveru zranitelnost týká, či (už) nikoliv.

Test našeho referenčního serveru Nejlepsissl.eu. Klikněte pro zvětšení.

Svou metodiku bleskově upravil i nejznámější test SSLlabs; nové kvůli zranitelnosti Logjam snižuje známku na B. Prohlížeč Google Chrome podle všeho také umí správně detekovat možnost zneužití Logjamu a hlásí návštěvníkovi zastaralou kryptografii.

Prevence Logjam(u) na serveru

Postup pro zabezpečení serveru je podobný, jako u zranitelnosti FREAK.

  1. V prvním kroku zakažte slabé exportní šifry, pokud se tak ještě nestalo kvůli zranitelnosti FREAK (návod v odkazu).
  2. Nasaďte ECDHE (Diffieho-Hellmanův protokol s využitím eliptických křivek). Moderní prohlížeče ho upřednostní před starším DH protokolem.
  3. Vygenerujte novou, silnou DH grupu (množina prvočísel). Mnoho serverů na současném internetu používá předchystanou grupu prvočísel, což z nich dělá ideální cíle pro potencionální odposlech. Administrátor by měl proto vygenerovat nová a bezpečná (2048b+) prvočísla pro každý server či website

Na serveru s OpenSSL stačí  zadat tento příkaz, který vygeneruje unikátní 2048b DH grupu:

openssl dhparam -out dhparams.pem 2048

Na serveru poté aktivujte použití vygenerovaných parametrů.

Pro Apache doplňte do konfigurace (/mods-available/ssl.conf) a proveďte reload:

SSLOpenSSLConfCmd DHParameters "{path to dhparams.pem}"

Parametr SSLOpenSSLConfCmd je podporován ve verzi Apache 2.4.8 (a novější) za použití OpenSSL 1.0.2 (a novější).

Pro Nginx vložte toto do konfigurace a restartujte server:

ssl_dhparam {path to dhparams.pem}

Návod pro další servery jako IIS, Lighttpd, Tomcat, Sendmail, Dovecot, OpenSSH najdete zde.

Po opravě svůj server znovu otestuje a přesvěčte se, že server slabé DH šifry nepoužívá.

Závěr

Nová zranitelnost Logjam zřejmě nebude tak fatální, jako například rok starý Heartbleed. Pokud chcete svým návštěvníkům nabídnout maximální bezpečnost, doporučujeme provést zmíněný  test zranitelnosti a v pozitivním případě upravit nastavení serveru dle našeho návodu. Problém můžete mít vyřešen do několika minut.

Zdroje a další informace:

  1. Diffieho-Hellmanova výměna klíčů a její princip na Wikipedii
  2. Web věnovaný zranitelnosti - The Logjam Attack
  3. Diffieho-Hellmanův protokol s využitím eliptických křivek na Wikipedii

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