PKI – přecházíme na SHA-2


Celková bezpečnost, kterou PKI IT systémům může poskytovat, je primárně závislá na schopnosti zabezpečit privátní klíč a na síle použité kryptografie. Moderní kryptografie je založena na matematických problémech, které s dnešní úrovní znalosti nejsme schopni algoritmicky řešit nebo alespoň ne v představitelném čase. Běžně používané kryptografické algoritmy jsou navíc veřejně známy a jsou obvykle důkladně prověřeny.

Přesto nám čas od času pokroky kryptoanalýzy (věda zabývající se metodami získávání obsahu šifrovaných informací bez přístupu k tajným informacím jako je např. privátní klíč) zamíchají našimi kryptografickými kartami.

Roste výpočetní kapacita, v dnešním propojeném světě je navíc snadné výpočetní kapacitu sdružovat, jindy dojde k posunu v kryptoanalýze, která najde způsob jak daný algoritmus prolomit nebo jak snížit náročnost prolomení na hodnoty, které jsou prakticky uskutečnitelné. Jednoduše to, co je bezpečné dnes, zítra už být nemusí. A jak jsme si vysvětlili hned v úvodu, se slabou kryptografií není možné prohlašovat danou konkrétní aplikaci PKI za bezpečnou.

1 - bezpecnost PKIObrázek 1 Závislost bezpečnosti PKI na kryptografii

Hashovací funkce

Kromě všeobecně známého symetrického a asymetrického šifrování, v PKI spoléháme zásadním způsobem i na tzv. hashovací funkce. Hashovací funkce je matematická funkce, která slouží pro převod vstupních dat na výstup fixní délky – hash, nazývaný také jako digitální otisk. Kvalitní hashovací funkce musí mít 2 základní vlastnosti:

  • Bezkoliznost – útočník není schopný nalézt alternativní data, která by měla stejný hash jako data původní
  • Jednosměrnost – v časově omezeném úseku není útočník schopný při znalosti hashe odvodit původní data

S hashovacími funkcemi se setkáváme ve většině praktických použití PKI např. jsou součástí zabezpečení každého digitálně podepsaného e-mailu či dokumentu. A hashe jsou použity i v samotných digitálních certifikátech, neboť každý certifikát je digitálně podepsán certifikační autoritou, která ho vydala.

Problém s SHA-1

Zdaleka nejpoužívanější hashovací funkcí dnešní doby je algoritmus SHA-1. Již delší dobu se vědělo, že návrh algoritmu není ideální a v budoucnu může dojít k jeho prolomení, a proto existuje již od roku 2001 náhradní a bezpečnější nástupce SHA-2 a od roku 2012 máme v záloze dokonce i SHA-3.

Nicméně z celé řady důvodů je realita taková, že např. 82,1% webových serverů, které používají SSL/TLS, má certifikát podepsaný stále ještě s pomocí SHA-1.

2 - SHA256  a webové serveryObrázek 2 Aktuální stav využití SHA-1 v certifikátech webových serverů

Bohužel došlo k posunu v kryptoanalýze SHA-1 a dnes již víme, že zhruba s následujícími náklady je možné SHA-1 prolomit.

  • $2.77M v roce 2012
  • $700K v roce 2015
  • $173K v roce 2018
  • $43K v roce 2021

Náklady v čase rychle klesají a předpokládá se, že již během roku 2018 bude slabá bezpečnost SHA-1 aktivně využívána organizovaným zločinem. Navíc reálně hrozí, že další posun v kryptoanalýze útok ještě více usnadní a použití v praxi významně urychlí. Proto je nejvyšší čas plánovat opuštění SHA-1 a přechod na SHA-2 (podle délky výstupního hashu rozeznáváme SHA-256, SHA-512 atp.).

Svět IT opouští SHA-1

Protože problém je to opravdu závažný, Microsoft i další významné společnosti globálního IT představily již své plány na ukončení podpory SHA-1 ve svých systémech.

Microsoft

  • Komerční certifikační autority, které jsou součástí Windows Root Certificate programu, musí s platností od 1. 1. 2016 zcela přestat vydávat SHA-1 certifikáty pro podpis kódu a SSL.
  • Windows systémy nebudou od 1. 1. 2017 akceptovat SSL certifikáty s SHA-1
  • Windows systémy nebudou akceptovat SHA-1 certifikáty pro podpis kódu bez časového razítka od 1. 1. 2016
  • SHA-1 certifikáty pro podpis kódu s časovým razítkem před 1. 1. 2016 budou zpracovávány podle chystané aktualizace politiky, která je ohlášena na červenec 2015
  • Ostatní typy certifikátů např. pro S/MIME nemají v tuto chvíli stanovené datum blokování, ale je třeba počítat s tím, že jakýkoliv SHA-1 certifikát po datu 1. 1. 2017 může být kdykoliv blokován

Google

Chrome 40 (listopad 2014)

  • Certifikáty s datem platnosti mezi 1. 6. 2016 – 31. 12. 2016, které budou kdekoliv v řetězci certifikátů používat SHA-1, budou graficky označeny jako “bezpečné, ale s minoritní chybou”
  • Certifikáty s datem platnosti po 1. 1. 2017, které budou kdekoliv v řetězci certifikátů používat SHA-1, budou graficky označeny jako “neutrální, nedostatečná bezpečnost”

Chrome 41 (1Q 2015)

  • Certifikáty s datem platnosti mezi 1. 6. 2016 – 31. 12. 2016, které budou kdekoliv v řetězci certifikátů používat SHA-1, budou graficky označeny jako “bezpečné, ale s minoritní chybou”
  • Certifikáty s datem platnosti po 1. 1. 2017, které budou kdekoliv v řetězci certifikátů používat SHA-1, budou graficky označeny jako “jednoznačně nezabezpečené”

3 - Chrome a SHA1Obrázek 3 Google Chrome – výstraha u SHA-1 certifikátu

Mozilla

  • V 1Q 2015 vyjde nová verze, která bude upozorňovat na varování pro certifikáty s SHA-1. Od 1. 1. 2017 budou blokovány
  • Od 1. 1. 2016 bude pro všechny nově vystavené certifikáty a certifikáty s platností překračující 1. 1. 2017 zobrazena chybová hláška “Nedůvěryhodné připojení”

Řešení – komerční CA

V podstatě všechny certifikační autority v dnešní době umožňují vystavit SSL digitální certifikáty s SHA-1 i SHA-256, ale SHA-256 je obvykle výchozí volba. Od 1. 1. 2016 obecně důveryhodné certifikační autority definitivně přestanou vydávat SSL certifikáty s SHA-1. Nově vystavené certifikáty tím pádem již automaticky budou používat dostatečnou kryptografii. U těch, které máme již historicky vystavené a neblíží se jejich expirace, bychom i tak měli naplánovat jejich výměnu za SHA-256 certifikáty.

Řešení – interní Microsoft CA

Pokud provozujete interní certifikační autoritu, s vysokou pravděpodobností používá v tuto chvíli výchozí hashovací algoritmus SHA-1. Pro přechod naštěstí není nutné začít budovat nové PKI, ale existuje podporovaný a poměrně snadný postup jak přejít z SHA-1 na SHA-2.

Tento postup má jen 2 kroky:

  • Pomocí příkazu certutil -setreg ca\csp\CNGHashAlgorithm SHA256 nastavíme výchozí hashovací algoritmus
  • Restartujeme certifikační autoritu net stop certsvc && net start certsvc

Od této chvíle nově vystavené certifikáty touto autoritou budou podepsány pomocí SHA-256.

4 - upgrade
Obrázek 4 Konfigurace CSP pro použití SHA-256

5 - CA before a after
Obrázek 5 Stav před a po změně na SHA256

Důležitá upozornění z praxe:

  • Tento postup je možný pokud Vaše certifikační autorita používá Microsoft Software Key Storage Provider, který zahrnuje podporu SHA-256. V případě, že certifikační autorita používá CSP, které nepodporuje SHA-256, např. Microsoft Strong Cryptographic Provider, je třeba nejprve zmigrovat z CSP na Key Storage Provider (KSP) pomocí postupu uvedeného na Technetu Migrating a Certification Authority Key from a Cryptographic Service Provider (CSP) to a Key Storage Provider (KSP)
  • Výše uvedený příkaz pouze změní hashovací algoritmus použítý pří podpisu nových certifikátů, ale certifikát samotné certifikační autority je stále SHA-1. Pokud je naším cílem, aby celý řetězec byl postaven na SHA-256, je potřeba v celém řetězci nejen přepnout hashovací algoritmus, ale také certifikačním autoritám vystavit nové certifikáty.
  • Není možné, aby jedna a ta samá certifikační autorita vydávala certifikáty s SHA-256 i SHA-1. Změna je z pohledu certifikační autority globální a platí pro všechny certifikáty, které vystavuje.

SHA-256 a kompatibilita

Při výměně certifikátů za jejich SHA-256 verze je ale potřeba velmi pečlivě plánovat a testovat, neboť ne všechny systémy podporují tento modernější hashovací algoritmus a neuvážená výměna může způsobit nedostupnost služby. Například pří výměně SSL certifikátu na Exchange Serveru je třeba dát pozor na množinu připojených mobilních zařízení pomocí protokolu ActiveSync. Pokud organizace používá třeba zařízení s Windows Mobile 5.0 musí před výměnou certifikátu naplánovat přechod na novější mobilní platformu Windows Phone 7+, neboť Windows Mobile 5.0 nepodporuje SHA-256 SSL certifikáty.

Níže je uveden seznam často používaných operačních systémů a prohlížečů, které podporou SHA-256 SSL certifikátů disponují.

Operační systémy

  • Windows klient: XP SP3+
  • Windows Phone: 7+
  • Windows Server: 2003 SP2 + MS13-095
  • Apple OS X: 10.5+
  • Apple iOS: 3.0+ 3.0+
  • Android: 2.3+
  • Blackberry: 5.0
  • ChromeOS: všechny verze

Prohlížeče

  • Chrome: 26+
  • Firefox: 1.5+
  • Internet Explorer: 6+ (na XP SP3+)
  • Konqueror: 3.5.6+
  • Mozilla: 1.4+
  • Netscape: 7.1+
  • Opera: 9.0+
  • Safari:3+ (na OS X 10.5+)

Závěr

Postupné ukončování podpory SHA-1 je z bezpečnostního pohledu jediná správná cesta a nám nezbývá než procesem výměny certifikátů včetně změn v interních PKI projít. Cílem tohoto článku bylo vysvětlit celou problematiku v kontextu PKI a poukázat na možná problematická místa spojená s přechodem na SHA-256.

Zajímavé Odkazy:

When Will We See Collisions for SHA-1?

Trustworthy Internet Movement

Microsoft: SHA1 Deprecation Policy

Google: Gradually sunsetting SHA-1

Mozilla: Phasing Out Certificates with SHA-1 based Signature Algorithms

Windows PKI blog: SHA2 and Windows

– Miroslav Knotek – KPCS CZ, s.r.o., knotek@kpcs.cz

Comments (3)

  1. Anonymous says:

    Na této stránce najdete archiv článků z Technet Flash zpravodaje, pravidelného

  2. chyba v příkazu says:

    Příkaz: "certutil -setreg cacspCNGHashAlgorithm SHA-256" je špatně, přebývá tam pomlčka. Správně to má být takto: "certutil -setreg cacspCNGHashAlgorithm SHA256"

  3. blogCZSK says:

    Díky za upozornění, opraveno.

    – Kanty

Skip to main content