Grundlagen: Schlüsselalgorithmen, Signaturalgorithmen und Signaturhashalgorithmen

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üsselalgorithmusAnmerkungen
RSAFrei 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_P256256 Bit Schlüssellänge. Teil der NSA Suite B.
ECDSA_P384 / ECDH_P384 384 Bit Schlüssellänge. Teil der NSA Suite B.
ECDSA_P521 / ECDH_P521521 Bit Schlüssellänge. 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.

Signaturhashalgorithmus

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
MD5Als unsicher eingestuft, sollte nicht mehr verwendet werden. Funktionierende Angriffe auf PKI sind bekannt.
SHA1Als 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
SHA256Standardeinstellung seit Windows Server 2016 für CA-Neuinstallationen
SHA384
SHA512

Signaturalgorithmus

Der Signaturalgorithmus beschreibt die Methode, mit welcher die durch den Signaturalgorithmus 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.

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.5SHA256RSAsha256RSA
2.1SHA256RSARSASSA-PSS
1.5SHA256ECDSA_P256sha256ECDSA
2.1SHA256ECDSA_P256specifiedECDSA
Beispiel: SHA256 mit RSA-Schlüssel und PKCS#1 Version 1.5
Beispiel: SHA256 mit RSA-Schlüssel und PKCS#1 Version 2.1
Beispiel: SHA256 mit ECC-Schlüssel und PKCS#1 Version 1.5
Beispiel: SHA256 mit ECC-Schlüssel und PKCS#1 Version 2.1

Fazit

Eine gängige Zertifizierungsstellen-Hierarchie im Unternehmen verwendet üblicherweise folgende Parameter, um maximale Kompatibilität bei gleichzeitig hohem Sicherheitsstandard zu gewährleisten:

ParameterWert
Schlüsselalgorithmus und BitlängeRSA mit 4096 Bit für Zertifizierungsstellen-Zertifikate
RSA mit 2048 bis 4096 Bit für End-Entitäts-Zertifikate
SignaturhashalgorithmusSHA256
Signaturalgorithmus (PKCS#1 Version)PKCS#1 Version 1.5
Beispiel für verwendete Algorithmen in einer gängigen Unternehmens-PKI

Weiterführende Links

Externe Quellen