Zum Hauptinhalt springen

6.6. Public Key Algorithms (Public-Key-Algorithmen)

6.6. Public Key Algorithms (Public-Key-Algorithmen)

Dieses Protokoll wurde entwickelt, um mit fast jedem Public-Key-Format, jeder Kodierung und jedem Algorithmus (Signatur und/oder Verschlüsselung) zu funktionieren.

Es gibt mehrere Aspekte, die einen Public-Key-Typ definieren:

  • Schlüsselformat: wie der Schlüssel kodiert ist und wie Zertifikate dargestellt werden. Die Schlüssel-Blobs in diesem Protokoll KÖNNEN zusätzlich zu Schlüsseln auch Zertifikate enthalten.

  • Signatur- und/oder Verschlüsselungsalgorithmen: Einige Schlüsseltypen unterstützen möglicherweise nicht sowohl Signierung als auch Verschlüsselung. Die Schlüsselverwendung kann auch durch Richtlinienaussagen (z. B. in Zertifikaten) eingeschränkt werden. In diesem Fall SOLLTEN für die verschiedenen Richtlinienalternativen unterschiedliche Schlüsseltypen definiert werden.

  • Kodierung von Signaturen und/oder verschlüsselten Daten: Dies umfasst, ist aber nicht beschränkt auf Padding, Byte-Reihenfolge und Datenformate.

Die derzeit definierten Public-Key- und/oder Zertifikatformate sind:

ssh-dss           REQUIRED     sign   Raw-DSS-Schlüssel
ssh-rsa RECOMMENDED sign Raw-RSA-Schlüssel
pgp-sign-rsa OPTIONAL sign OpenPGP-Zertifikate (RSA-Schlüssel)
pgp-sign-dss OPTIONAL sign OpenPGP-Zertifikate (DSS-Schlüssel)

Zusätzliche Schlüsseltypen können definiert werden, wie in [SSH-ARCH] und in [SSH-NUMBERS] spezifiziert.

Der Schlüsseltyp MUSS immer explizit bekannt sein (aus der Algorithmaushandlung oder einer anderen Quelle). Er ist normalerweise nicht im Schlüssel-Blob enthalten.

Zertifikate und öffentliche Schlüssel werden wie folgt kodiert:

string    Zertifikat- oder Public-Key-Format-Identifikator
byte[n] Schlüssel-/Zertifikatdaten

Der Zertifikatsteil kann eine Zeichenfolge der Länge null sein, aber ein öffentlicher Schlüssel ist erforderlich. Dies ist der öffentliche Schlüssel, der für die Authentifizierung verwendet wird. Die im Zertifikat-Blob enthaltene Zertifikatsequenz kann zur Bereitstellung von Autorisierung verwendet werden.

Public-Key-/Zertifikatformate, die keinen Signaturformat-Identifikator explizit angeben, MÜSSEN den Public-Key-/Zertifikatformat-Identifikator als Signaturidentifikator verwenden.

Signaturen werden wie folgt kodiert:

string    Signaturformat-Identifikator (wie durch das Public-Key-/Zertifikatformat spezifiziert)
byte[n] Signatur-Blob in formatspezifischer Kodierung

Detaillierte Kodierungsspezifikationen für die Schlüsselformate "ssh-dss" und "ssh-rsa" finden sich in den vollständigen Spezifikationsdokumenten.