Die Welt nach SHA1
Aktuell sorgen zahlreiche Artikel, Blogposts und Sicherheitswarnungen für Verunsicherung bezüglich der notwendigen Ablöse von SHA1-signierten Zertifikaten. Aus diesem Grund möchte ich die wichtigsten Fakten hier nochmals zusammenfassen.
Hash Algorithmen und digitale Signaturen
Eine Hashfunktion ist eine Funktion, die eine Information beliebiger Länge auf eine feste Länge abbildet. Kryptographische Hash Funktionen sind die Grundlage für digitale Signaturen, wie sie von einer Zertifizierungsstelle auf ausgestellte Zertifikate aufgebracht werden. Die digitale Signatur auf dem Zertifikat stellt sicher, dass
- ein Zertifikat tatsächlich von der Zertifizierungsstelle ausgestellt wurde
- der Inhalt des Zertifikats nicht verändert worden ist[1]
Unten stehende Empfehlung des NIST (National Institute for Standards and Technology) legt nahe ab dem Jahr 2014 mit dem kryptographischen Hashalgorithmus SHA1 signierte Zertifikate nicht mehr einzusetzen.
NIST recommendation SP 800-131A, January 2011: “ …SHA-1 is acceptable for digital signature generation through December 31, 2010. From January 1, 2011 through December 31, 2013, the use of SHA-1 is deprecated for digital signature generation. The user must accept risk when SHA-1 is used, particularly when approaching the December 31, 2013 upper limit. This is especially critical for digital signatures on data for which the signature is required to be valid beyond this date…
Microsoft, aber auch viele andere Software-Hersteller, folgen dieser Empfehlung. Die Details finden Sie unter folgenden Links:
Windows Root Certificate Program - Technical Requirements version 2.0 - https://social.technet.microsoft.com/wiki/contents/articles/1760.windows-root-certificate-program-technical-requirements-version-2-0.aspx
Common Questions about SHA2 and Windows - https://blogs.technet.com/b/pki/archive/2011/02/08/common-questions-about-sha2-and-windows.aspx
Kollissionsresistenz
Ein wichtiges Qualitätsmerkmal für Hash Algorithmen ist die Resistenz gegen „Pre-Image-„ und Kollisionsangriffe, und eben diese Resistenz wird für SHA1 voraussichtlich in näherer Zukunft nicht mehr gegeben sein.
„Die Welt“ befand sich bereits im Jahr 2008 in einer ähnlichen Situation. Damals gelang es einem Forscherteam, die Kollisionsresistenz des damals sehr häufig verwendeten MD5 Hash Algorithmus auszuhebeln und ein Webserver-Zertifikat zu manipulieren[2]. In der Folge wurde versucht alle MD5 Zertifikat auszutauschen, was aufgrund mangelnder Vorbereitungszeit meist nicht sofort möglich war. Diesmal gibt es aber Vorbereitungszeit, die es zu nützen gilt.
Alternativen zu SHA1
SHA-2 ist der Oberbegriff für die vier kryptographischen Hashfunktionen SHA-224, SHA-256, SHA-384 und SHA-512, die 2001 vom US-amerikanischen NIST als Nachfolger von SHA-1 standardisiert wurden. Darüber hinaus stehend basierend auf FIPS 180-4 noch SHA-512/224 und SHA-512/256 als Alternativen zur Verfügung.
Obwohl SHA-512 als der sicherste der von Windows unterstützten Algorithmen angesehen wird, ist die Implementierung von SHA-256 heute die Regel. Der Grund dafür ist die ungewisse Unterstützung seitens PKI-Anwendungen für die Algorithmen jenseits von SHA-256. Die klassischen Desktop- und Serverbetriebssysteme sind davon weniger betroffen. Problemkinder sind in vielen Fällen „exotische“ Produkte oder Netzwerkkomponenten älterer Bauart. In Windows ist die Unterstützung für SHA2 (d.h. SHA-256, SHA-384, SHA-512) ab Windows Vista bzw. Server 2008 implementiert. Details finden Sie auf https://blogs.technet.com/b/pki/archive/2010/09/30/sha2-and-windows.aspx
Was bedeutet das für die Praxis?
Das “Windows Root Certificate Program” sorgt dafür, dass die “Trusted Root CA Stores” von Windows Rechnern ausschließlich mit vertrauenswürdigen Root CA Zertifikaten befüllt werden. Root CAs, die den hohen Anforderungen des Root Certificate Programs nicht mehr entsprechen, werden entfernt.
Die Microsoft „SHA1 Depreciation Policy“ legt fest, dass Windows am 1.1.2017 aufhören wird, SHA1 signierte Server- bzw. SSL-Zertifikate zu akzeptieren, deren Vertrauensketten in Root Zertifikaten enden, die dem “Windows Root Certificate Program” angehören. Für Codesigning-Zertifikate gibt es bereits Anfang 2016 Handlungsbedarf: Windows 7 und höher wird am 1. Jänner 2016 aufhören mit einem SHA1 Zertifikat signierten Code als vertrauenswürdig zu akzeptieren, sofern der Timestamp nach dem 1. Jänner 2016 datiert sind. Hierbei gilt ebenfalls, dass ausschließlich Zertifikate betroffen sind, deren Vertrauensketten in Root Zertifikaten enden, die dem “Windows Root Certificate Program” angehören.
Eine Zusammenfassung der „SHA Deprecation Policy“ finden Sie auf https://blogs.technet.com/b/pki/archive/2013/11/12/sha1-deprecation-policy.aspx#pi47623=5
Die genauen Anforderungen des „Windows Root Certificate Program“ kann man auf https://aka.ms/rootcert nachlesen.
Wichtig hierbei ist zu verstehen, dass diese Maßnahmen aktuell keinen Einfluss auf Zertifikate von Internen/Hauseigenen Zertifizierungsstellen haben. Microsoft behält sich allerdings vor, dies notfalls auch kurzfristig zu ändern, sobald sich SHA1 erwiesenermaßen als angreifbar herausstellt.
Kann ich meine bestehende PKI SHA2-tauglich werden?
Die Antwort auf diese Frage lautet eindeutig „ja, aber…“
Voraussetzung ist, dass der für das Erstellen des CA Zertifikats verwendete CSP oder KSP[3] SHA2-tauglich ist. Es kann daher möglich sein, dass vor der Umstellung der CA zuerst noch von CSP auf KSP migriert werden muss. Da die Vorgehensweise sehr detailliert auf https://technet.microsoft.com/en-us/library/dn771627.aspxbeschrieben ist, möchte ich hier nicht weiter darauf eingehen.
Die Konsequenzen der Umstellung der CA auf SHA2 sind:
- die Zertifizierungsstellenzertifikate der gesamten Kette müssen neu ausgestellt werden
- alle zukünftig ausgestellten Zertifikate werden mit SHA2 signiert
- alle zukünftig ausgestellten CRLs werden mit SHA2 signiert
Gibt es eine PKI-Anwendung, die nicht mit SHA2 Zertifikaten zurechtkommt, muss eine harte Entscheidung getroffen werden und nur wenige Optionen stehen zur Auswahl: die betreffende Anwendung muss aktualisiert oder ersetzt oder es muss parallel zur bestehenden eine zweite SHA2-PKI implementiert werden. Auch Smart Cards oder HSMs müssen in die Überlegungen miteinbezogen werden.
Einen ausführlichen Artikel zum Thema SHA2 in Active Directory Certificate Services finden Sie hier: https://social.technet.microsoft.com/wiki/contents/articles/31296.implementing-sha-2-in-active-directory-certificate-services.aspx#Where_Can_SHA2_Be_Implemented_in_ADCS
Zusammenfassung
Wie lange SHA1 noch als sicher betrachtet werden kann ist ungewiss. Da der SHA1 Algorithmus aber jederzeit das Schicksal von MD5 drohen kann, empfiehlt sich eine baldige Umstellung auf SHA2. In der Praxis erweist sich die technische Umstellung einer CA auf SHA2 als die kleinere Herausforderung. Das Überprüfen aller Anwendungen auf SHA2-Tauglichkeit ist jedoch oft eine aufwändige Angelegenheit.
[1] Würde man den Inhalt doch verändern, wäre die Signatur „gebrochen“ und das Zertifikat ungültig
[2] https://media.ccc.de/browse/congress/2008/25c3-3023-en-making_the_theoretical_possible.html#video