Besuchen Sie Keyfactor auf der RSA Conference™ 2024 | 6. bis 9. Mai | Erfahren Sie mehr

PKI-Fibel für Software Techniker

PKI

Als VP of Software Development bei Keyfactor ist es meine Aufgabe, mit Bewerbern und neu eingestellten Ingenieuren zu sprechen, wenn sie sich unserem wachsenden Team anschließen (ein kleiner Tipp: Sie können auf unserer Website immer nach offenen Stellen suchen). Aber ich bin nicht hier, um Ihnen Keyfactor zu verkaufen, sondern um über den schwierigsten Teil der Arbeit zu sprechen - und das ist nicht die Entwicklung von software . Die größte Herausforderung besteht darin, die grundlegenden Konzepte der Public Key Infrastructure (PKI) zu verstehen.

Kryptographie und insbesondere PKI sind ein weites Feld und von Natur aus unglaublich komplex. Einige Technologen beschäftigen sich ihr ganzes Berufsleben lang mit diesem Thema. Es wird daher nicht erwartet (und es ist auch nicht möglich), dass jeder software Ingenieur mit diesen Konzepten vertraut ist, aber ein Grundverständnis kann sehr hilfreich sein.

Unabhängig davon, ob Sie direkt mit PKI arbeiten oder nicht, ist jeder software Ingenieur während des gesamten Erstellungs- und Freigabeprozesses auf Kryptografie angewiesen. Wenn Sie mit PKI arbeiten oder kryptografische Lösungen entwickeln, ist es besonders wichtig, dass Sie nicht nur die Tools und Anwendungen verstehen, die Sie zum Erstellen und Ausführen von software verwenden, sondern auch die Technologien, mit denen Sie wahrscheinlich weniger vertraut sind.

Ich habe den folgenden Leitfaden erstellt, um software Ingenieuren eine Vorstellung von den wichtigen Themen zu geben, die im Entwicklungsprozess häufig auftreten. Diese Liste und ihre Beschreibungen sind kurz, und das ist beabsichtigt. Sie sind als "Schnellstart"-Anleitung gedacht, die Ihnen helfen soll, sich in der komplexen, aber spannenden und schnell wachsenden Welt der PKI und Kryptografie zurechtzufinden.

Kryptographie

Was sind die Hauptziele der Kryptografie?

  • Vertraulichkeit: schützt die Vertraulichkeit (oder Geheimhaltung) von Daten
  • Integrität: stellt sicher, dass Daten oder Code nicht verfälscht wurden
  • Authentifizierung: Verifizierung der Identität/Authentizität eines Benutzers, eines Geräts oder einer Anwendung

 

Was sind die verschiedenen Arten der Kryptographie?

  • Symmetrische Verschlüsselung: Verwendet denselben kryptografischen Schlüssel zur Ver- und Entschlüsselung von Daten. Der Vorteil ist, dass Prozesse große Datenmengen effizient ver- und entschlüsseln können, da ein einziger Schlüssel und relativ einfache Algorithmen (z. B. DES, 3DES, AES) verwendet werden. Das Problem besteht darin, dass alle beteiligten Parteien den zur Ver- und Entschlüsselung von Daten verwendeten Schlüssel austauschen müssen, was zu offensichtlichen Unsicherheiten führen kann.
  • Asymmetrische Verschlüsselung: Verwendet nicht einen Schlüssel, sondern ein Paar unterschiedlicher, aber mathematisch verwandter Schlüssel: einen privaten und einen öffentlichen. Der öffentliche Schlüssel, der zur Verschlüsselung von Daten verwendet wird, ist für jedermann zugänglich, während der private Schlüssel nur von dem Benutzer oder dem Rechner aufbewahrt wird, der das Schlüsselpaar erzeugt hat, und zur Entschlüsselung verwendet wird. Das bedeutet, dass Sie sich keine Gedanken über die gemeinsame Nutzung öffentlicher Schlüssel im Internet machen müssen.
    Asymmetrische Algorithmen sind viel komplexer und daher sicherer (z. B. RSA, ECC, Diffie-Hellman). Das bedeutet aber auch, dass sie langsamer sind als die symmetrische Verschlüsselung und mehr Rechenleistung erfordern.

 

Wie werden symmetrische und asymmetrische Kryptographie zusammen verwendet?

Ein gängiges Szenario ist TLS, ein Protokoll, das zur Verschlüsselung der Kommunikation über ein Netz verwendet wird. Bei einem TLS Handshake authentifizieren asymmetrische Schlüssel zunächst die Verbindung zwischen dem Client (öffentlicher Schlüssel) und dem Server (privater Schlüssel). Danach werden symmetrische Schlüssel, so genannte "Sitzungsschlüssel", zur Verschlüsselung der Kommunikation verwendet. Jede neue Sitzung beginnt mit einem neuen TLS Handshake und Sitzungsschlüsseln.

Was ist ein Hash?

Ein Hash ist ein Einweg-Algorithmus, der einen Wert in einen anderen umwandelt und dabei die Originaldaten mit einer mathematischen Ausgabe - einem so genannten "Digest" - maskiert. Hashing wird üblicherweise verwendet, um sicherzustellen, dass Daten seit der Erstellung des Hashwerts nicht manipuliert wurden. Zu den gängigen Algorithmen gehören MD5, SHA-1 und SHA-2.

Was ist eine digitale Signatur?

Eine digitale Signatur verifiziert die Authentizität einer Nachricht, Datei oder ausführbaren Datei mit einer eindeutigen digitalen ID (und einem Signaturschlüssel). So kann beispielsweise der private Schlüssel eines Benutzers verwendet werden, um ein Dokument digital zu signieren und die Identität des Absenders zu überprüfen. Der Benutzer kann dann nicht leugnen, dass er das Dokument unterzeichnet hat, was als Nichtabstreitbarkeit bezeichnet wird.

Infrastruktur für öffentliche Schlüssel

Was ist eine Public Key Infrastructure (PKI)?

Die Public-Key-Infrastruktur (PKI) besteht aus einer Reihe von Personen, Systemen, Richtlinien und Verfahren, die die Verteilung und Verwendung von öffentlichen Schlüsseln und digitalen Zertifikaten unterstützen. Organisationen implementieren eine PKI, um die Verwendung von Verschlüsselung, Authentifizierung und digitalen Signaturen für verschiedene Anwendungen zu ermöglichen.

Was ist ein digitales Zertifikat?

Ein digitales Zertifikat, auch bekannt als Public-Key-Zertifikat, ist ein elektronisches Dokument, das verwendet wird, um einen öffentlichen Schlüssel an seinen Besitzer zu binden. Ein Zertifikat ist eine eindeutige ID für Benutzer, Geräte, Anwendungen und Dienste, die Informationen über die Identität und die Berechtigungen ihres Besitzers enthält, wie z. B.:

  • Seriennummer des Zertifikats
  • Name des Zertifikatsausstellers
  • Öffentlicher Schlüssel
  • Unterstützte Algorithmen
  • Gültigkeitsdauer des Zertifikats

 

Was sind die Eigenschaften eines digitalen Zertifikats?

Wichtige/Gebräuchliche Eigenschaften

  • Thumbprint: Ein Hash des Zertifikats - der Thumbprint wird als eindeutiger Bezeichner für das Zertifikat verwendet.
  • Betreff: Distinguished Name (DN) des Zertifikats (enthält Felder wie CN, O, OU, etc.)
  • Aussteller: Die Stelle, von der das Zertifikat ausgestellt wurde.
  • Alternativer Name des Betreffs (SAN): Erweiterung mit zusätzlichen Informationen über den Betreff (jetzt erforderlich für Google Chrome).
  • Schlüsselverwendung: Legt fest, wofür das Zertifikat verwendet werden kann, einschließlich digitaler Signatur, Schlüsselverschlüsselung, Zertifikatsignierung, CRL-Signierung und Unleugbarkeit.
  • Verbesserte Schlüsselverwendung: Zusätzliche Erweiterung zur weiteren Definition der Schlüsselverwendung, einschließlich IPSec, TLS Webserver-Authentifizierung, TLS Webclient-Authentifizierung und digitale Signatur.
  • Version: Die Version des X.509-Zertifikats (derzeit gibt es 3 Versionen)
  • Gültig von/bis: Datumsbereich, in dem das Zertifikat als gültig angesehen wird
  • CRL-Verteilungspunkte: Der Ort der Zertifikatswiderrufsliste (CRL), die mit dem Zertifikat verbunden ist

 

Andere gemeinsame Eigenschaften

  • Seriennummer: Ganzzahl, die dem Zertifikat von der CA zugewiesen wurde
  • Signatur-Algorithmus: Der kryptografische Algorithmus, der von der Zertifizierungsstelle zum Signieren des Zertifikats verwendet wird.
  • Öffentlicher Schlüssel: Öffentlicher Schlüssel, den das Zertifikat für den vorgesehenen Zweck verwendet
  • Subject Key Identifier: Ermöglicht die Identifizierung von Zertifikaten, die einen bestimmten öffentlichen Schlüssel (aus der CSR) enthalten.

 

Was ist eine Zertifizierungsstelle (CA)?

Eine Zertifizierungsstelle (CA) ist eine vertrauenswürdige Einrichtung, die digitale Zertifikate ausstellt.

Was ist ein Stammzertifikat?

Das Herzstück der PKI ist ein Stammzertifikat und der dazugehörige private Schlüssel. Es wird verwendet, um alle Zertifikate zu signieren, die von der obersten (Stamm-)Zertifizierungsstelle ausgestellt werden. Ein vertrauenswürdiges Stammzertifikat ist ein Zertifikat, dem implizit vertraut wird.

Was ist ein Endorsement-Zertifikat?

Jedes Zertifikat, das nicht zum Signieren anderer Zertifikate verwendet werden kann. So sind z. B. SSL/TLS Server- und Client-Zertifikate, Code Signing-Zertifikate und qualifizierte Zertifikate allesamt Endteilnehmer-Zertifikate.

Was ist eine Zertifikatswiderrufsliste (CRL)?

Eine Zertifikatswiderrufsliste (CRL) ist eine Liste digitaler Zertifikate, die von der ausstellenden Zertifizierungsstelle vor ihrem geplanten Ablaufdatum widerrufen wurden. Es handelt sich im Wesentlichen um eine schwarze Liste, mit der Benutzer, Geräte oder Anwendungen überprüfen können, ob ein Zertifikat gültig und vertrauenswürdig ist. Die CRL wird an einem Ort veröffentlicht, dem so genannten CRL Distribution Point (CDP), der allen Einrichtungen zur Verfügung steht, die den Widerrufsstatus überprüfen müssen.

Was ist das Online Certificate Status Protocol (OCSP)?

Das Problem besteht darin, dass die CRL den Overhead erfordert, eine Liste aller Zertifikate herunterzuladen und den Widerrufsstatus zu überprüfen. OCSP ist eine Alternative zur Verwendung von CRLs. Anstatt die komplette Liste der gesperrten Zertifikate herunterzuladen, wird einfach eine Anfrage an den CA-Server gesendet, um den aktuellen Status des Zertifikats zu erhalten.

Wie unterscheidet sich OCSP von CRL?

Eine OCSP-Antwort enthält weniger Daten als eine typische CRL und belastet damit die Netzwerk- und Client-Ressourcen weniger. Es sind auch weniger Daten zu analysieren, so dass clientseitige Bibliotheken weniger komplex sein können.

Was sind einige Mängel von OCSP?

Eines der Probleme mit OCSP besteht darin, dass es für eine CA in Umgebungen mit hohem Datenaufkommen ressourcenintensiv ist, die Privatsphäre der Benutzer gefährdet und die Leistung beim Browsen beeinträchtigen kann. Problematisch ist es auch, wenn der OCSP-Responder aus irgendeinem Grund nicht mit der zugehörigen CA kommunizieren kann.

Was ist OCSP Stapling?

OCSP Stapling löst einige dieser Probleme. Der HTTPS-Server fragt den OCSP-Server regelmäßig nach dem Widerrufsstatus seiner Zertifikate ab und sendet die Antwort zusammen mit dem Zertifikat während des TLS Handshakes an den Client. Die Antworten können nicht gefälscht werden, da sie von der zugehörigen Zertifizierungsstelle signiert werden müssen.

Was ist ein Kryptodienstanbieter (CSP)?

Ein CSP ist eine CryptoAPI, die zum Erstellen, Speichern und Zugreifen auf kryptografische Schlüssel verwendet wird, die entweder symmetrisch oder asymmetrisch sein können. CSPs sind von zentraler Bedeutung für die sichere Implementierung von kryptografischen Funktionen für viele Anwendungen, einschließlich Active Directory Certificate Services (ADCS) und der Certificate Enrollment API.

Was ist ein Schlüsselspeicheranbieter (KSP)?

Ein KSP ist die nächste Generation von CSP, basierend auf Cryptography API: Next Generation (CNG). Es kann zum Erstellen, Löschen, Exportieren und Speichern von Schlüsseln für Anwendungsfälle wie asymmetrische Verschlüsselung und Signierung verwendet werden.

Was sind Public Key Cryptography Standards (PKCS)?

In der Kryptographie ist PKCS eine Reihe von allgemein akzeptierten Standards, die von RSA Security LLC definiert und veröffentlicht wurden, um die Verwendung von Standardkryptographietechniken zu fördern. Einige dieser Standards umfassen:

  • PKCS 7: Cryptographic Message Syntax (CMS) ist der spezifische Standard, der für die Erzeugung digitaler Zertifikate durch eine PKI verwendet wird. Er dient auch als Grundlage für den S/MIME-Standard.
  • PKCS 10: Der CSR-Standard (Cryptographic Signing Request) ist das Format der Nachrichten, die an die Zertifizierungsstelle (CA) gesendet werden, um ein digitales Zertifikat zu beantragen.
  • PKCS 11: Das Cryptographic Token Interface, auch bekannt als Cryptoki, ist eine API zur Erstellung und Bearbeitung von kryptografischen Token, hardware Sicherheitsmodulen (HSMs) und Smartcards.
  • PKCS 12: Definiert ein Dateiformat zur Speicherung von privaten Schlüsseln zusammen mit ihren öffentlichen Schlüsselzertifikaten. PFX ist die Implementierung dieses Standards durch Microsoft.

 

Erfahren Sie mehr darüber, wie PKI in DevOps passt, in unserem neuesten eBook: Wie Sie DevSecOps mit Zertifikatslebenszyklus-Automatisierung aktivieren können.