Bei der Planung einer Public Key Infrastruktur kommt die Frage auf, welche kryptographischen Algorithmen diese verwenden sollte.
Die wichtigsten Grundlagen werden nachfolgend erläutert.
Die Betrachtung von kryptographischen Verfahren und deren Bewertung hinsichtlich ihrer Verwendbarkeit kann immer nur eine Momentaufnahme zum Zeitpunkt der Veröffentlichung des Beitrags sein. Die Bewertung kann zukünftig z.B. aufgrund von Sicherheitsvorfällen oder technischem Fortschritt durchaus überholt sein.
Schlüsselalgorithmus
Der Schlüsselagorithmus bezeichnet den Algorithmus, mit welchem das kryptographische Schlüsselpaar des Zertifikats erzeugt wurde.
Die Active Directory Zertifikatdienste unterstützen seit Windows Server 2008 folgende Algorithmen und Bitlängen:
Schlüsselalgorithmus | Anmerkungen |
---|---|
RSA | Frei wählbare Bitlänge (in 64 Bit Schritten). Schlüssellängen unter 3000 Bit sollten jedoch heuzutage nicht mehr eingesetzt werden. Siehe hierzu auch Artikel "Welche Schlüssellängen sollten für Zertifizierungsstellen und Zertifikate verwendet werden?". |
ECDSA_P256 / ECDH_P256 | 256 Bit Schlüssellänge (nistp256). Teil der NSA Suite B. |
ECDSA_P384 / ECDH_P384 | 384 Bit Schlüssellänge (nistp384). Teil der NSA Suite B. |
ECDSA_P521 / ECDH_P521 | 521 Bit Schlüssellänge (nistp521). Nicht Teil der NSA Suite B. (im Übrigen handelt es sich bei 521 Bit nicht um einen Tippfehler) |
Die Verwendung elliptische Kurven für Zertifikate macht diese gegenüber RSA nicht "besser" oder "sicherer". Der entscheidende Faktor in Hinsicht auf die kryptographische Stärke ist in beiden Fällen die Bitlänge bzw. die im Vergleich zur Bitlänge symmetrischer Schlüssel enstrpechende Resilienz gegen Brute-Force-Angriffe.
Für die Verwendung von RSA spricht weiterhin die sehr gute Kompatibilität im Bereich der Endgeräte.
Kryptographie mit elliptische Kurven bieten den Vorteil, dass sie (insbesondere bei größeren Schlüsselgrößen) sehr effizent in Hinsicht auf die benötigte Rechenleistung ist. Sie bietet sich also insbesondere im Bereich von Embedded Systemen an, die über keine große Rechenkapazität verfügen.
Die National Security Agency (NSA) empfiehlt mittlerweile aufgrund der nahenden Standardisierung für quantenresistente Algorithmen, auf größere Investitionen zur Umstellung vorhandener PKIen hin zu elliptischen Kurven zu verzichten. Siehe hierzu Artikel "Grundlagen: Elliptische Kurven in Hinsicht auf ihre Verwendung in der Public Key Infrastruktur".
Signaturhashalgorithmus
Kennen Sie TameMyCerts? TameMyCerts ist ein Add-On für die Microsoft Zertifizierungsstelle (Active Directory Certificate Services). Es erweitert die Funktion der Zertifizierungsstelle und ermöglicht die Anwendung von Regelwerken, um die sichere Automatisierung von Zertifikat-Ausstellungen zu realisieren. TameMyCerts ist einzigartig im Microsoft-Ökosystem, hat sich bereits in unzähligen Unternehmen auf der ganzen Welt bewährt und steht unter einer freien Lizenz. Es kann über GitHub heruntergeladen und kostenlos verwendet werden. Professionelle Wartung wird ebenfalls angeboten.
Der Signaturhashalgorithmus bezeichnet den Algorithmus, mit welchem die Prüfsumme des Zertifikats erzeugt wird, um dessen Authentizität festzustellen. Sie wird dann mit dem privaten Schlüssel der Zertifizierungsstelle unter verwendung des Signaturalgorithmus verschlüsselt.
Teilnehmer, die das Zertifikat überprüfen, verwenden den gleichen Algorithmus, um die Prüfsumme nachzubilden und mit der Signatur der Zertifizierungsstelle abzugleichen (siehe auch Artikel "Grundlagen Kryptographie").
Signatur- hashalgorithmus | Beschreibung |
---|---|
MD5 | Als unsicher eingestuft, sollte nicht mehr verwendet werden. Funktionierende Angriffe auf PKI sind bekannt. |
SHA1 | Als unsicher eingestuft, sollte nicht mehr verwendet werden. Funktionierende Angriffe auf PKI sind derzeit aber noch keine bekannt. Standardeinstellung bis Windows Server 2012 für CA-Neuinstallationen |
SHA256 | Standardeinstellung seit Windows Server 2016 für CA-Neuinstallationen Teil der NSA Suite B. |
SHA384 | Teil der NSA Suite B. |
SHA512 | Nicht Teil der NSA Suite B. |
Signaturalgorithmus
Der Signaturalgorithmus beschreibt die Methode, mit welcher die durch den Signaturhashalgorithmus errechnete Prüfsumme durch die Zertifizierungsstelle unter Verwendung ihres privaten Schlüssels signiert wurde. Die überprüfende Seite muss den gleichen Algorithmus verwenden, um die Prüfsumme mittels des öffentlichen Schlüssels entschlüsseln und überprüfen zu können.
Hierbei ist insbesondere das verwendete "Padding Schema" interessant. Hierfür wird der PKCS#1 Standard verwendet, welcher in zwei Versionen implementiert ist:
- PKCS#1 Version 1.5 (RFC 2313) ist die Standardeinstellung für die Active Directory Zertifikatdienste.
- PKCS#1 Version 2.1 (RFC 3447) wurde 2003 u.A. aufgrund einer 1998 gefundenen Sicherheitslücke (Bleichenbacher) verabschiedet und wird seit Windows Server 2008 mit der Direktive AlternateSignatureAlgorithm unterstützt.
Auch wenn die vorige Beschreibung eindeutig für die Verwendung von PKCS#1 2.1 spricht, gibt es ein entscheidendes Argument dagegen: Die Kompatibilität. Einige Hersteller wie z.B. Cisco haben Version 2.1 in ihren Produkten nicht oder nicht durchgehend implementiert, sodass Zertifikate, die mit PKCS#1 2.1 signiert sind, nicht mit deren Produkten verwendet werden können. In der Praxis läuft es meistens darauf hinaus, dass aus Kompatibilitätsgründen weiterhin Version 1.5 verwendet wird.
Nach aktuellem Kenntnisstand funktioniert der von Bleichenbacher beschriebene Angriff jedoch ohnehin nicht gegen Zertifikate, sondern zielt eher auf TLS-Verbindungen ab, sodass hier kein Nachteil entstehen sollte.
Die AlternateSignatureAlgorithm Direktive wird wie folgt konfiguriert:
- AlternateSignatureAlgorithm = 0 (oder weglassen der Direktive) bewirkt die Verwendung von PKCS#1 1.5
- AlternateSignatureAlgorithm = 1 bewirkt die Verwendung von PKCS#1 2.1
Im letzten "offiziellen" Buch über die Microsoft Active Directory Certificate Services, "Microsoft Windows Server 2008 PKI- und Zertifikat-Sicherheit" von Brian Komar wird fälschlicherweise von DiscreteSignatureAlgorithm gesprochen, und die Werte waren exakt umgekehrt. Zur Drucklegung des Buches war dies auch korrekt, jedoch wurde die Direktive mit dem Übergang von der Betaversion von Windows Server 2008 zur finalen Version in "AlternateSignatureAlgorithm" umbenannt, inkl. umgekehrter Funktionsweise. Somit wurde PKCS#1 in Version 1.5 weiterhin als Standardeinstellung verwendet, wenn die Direktive nicht explizit konfiguriert wurde.
Beispiele für verschiedene Kombinationen
Der im Eigenschaften-Dialog eines Zertifikats angezeigte Signaturalgorithmus bestimmt sich aufgrund der Kombination aus allen drei Faktoren:
- Schlüsselalgorithmus
- Signaturhashalgorithmus
- Signaturalgorithmus (PKCS#1 Version)
PKCS#1 Version | Hash- algorithmus | Schlüssel- algorithmus | Angezeigter Signatur- algorithmus |
---|---|---|---|
1.5 | SHA256 | RSA | sha256RSA |
2.1 | SHA256 | RSA | RSASSA-PSS |
1.5 | SHA256 | ECDSA_P256 | sha256ECDSA |
2.1 | SHA256 | ECDSA_P256 | specifiedECDSA |
Fazit
Eine gängige Zertifizierungsstellen-Hierarchie im Unternehmen verwendet üblicherweise folgende Parameter, um maximale Kompatibilität bei gleichzeitig hohem Sicherheitsstandard zu gewährleisten:
Parameter | Wert |
---|---|
Schlüsselalgorithmus und Bitlänge | RSA mit 4096 Bit für Zertifizierungsstellen-Zertifikate RSA mit 2048 bis 4096 Bit für End-Entitäts-Zertifikate |
Signaturhashalgorithmus | SHA256 |
Signaturalgorithmus (PKCS#1 Version) | PKCS#1 Version 1.5 |
Weiterführende Links
- Grundlagen Public Key Infrastrukturen (PKI)
- Grundlagen Kryptographie
- Grundlagen: Elliptische Kurven in Hinsicht auf ihre Verwendung in der Public Key Infrastruktur
- Welche Schlüssellängen sollten für Zertifizierungsstellen und Zertifikate verwendet werden?
Externe Quellen
- Chosen Ciphertext Attacks Against Protocols Based on the RSA Encryption Standard PKCS #1 (Daniel Bleichbacher, Archivlink)
- MD5 considered harmful today – Creating a rogue CA certificate
- Cryptographic Algorithm Validation Program (National Institute of Standards and Technology)
- Raising the Standard for RSA Signatures: RSA-PSS (Burt Kaliski, RSA Laboratories, Archivlink)
- PKCS #1: RSA Encryption Version 1.5 (Internet Engineering Task Force)
- Public-Key Cryptography Standards (PKCS) #1: RSA Cryptography Specifications Version 2.1 (Internet Engineering Task Force)
- Standard and alternate signature algorithms (Vadims Podans)
- RSASSA-PSS – Why Your Certificate Can’t Be Validated (PKI Solutions, Inc.)
- NDES – Fails to Issue Certificates (Signature Algorithm) (Pete Long)
11 Gedanken zu „Grundlagen: Schlüsselalgorithmen, Signaturalgorithmen und Signaturhashalgorithmen“
Kommentare sind geschlossen.