„Key Management Interoperability Protocol“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
Aka (Diskussion | Beiträge) K →Beispiel Nachricht Enkodierung: doppelten Link entfernt |
Aka (Diskussion | Beiträge) K Halbgeviertstrich |
||
Zeile 7: | Zeile 7: | ||
=== Objekte === |
=== Objekte === |
||
Bei den Objekten wird zwischen ''Base Objects'' (Basisobjekten) und ''Managed Objects'' (verwalteten Objekten) unterschieden. ''Base Objects'' sind Informationen, die ein ''Managed Object'' spezifizieren. Zu den ''Base Objects'' gehören zum Beispiel Attribute, Key Value und Key Wrapping Data. |
Bei den Objekten wird zwischen ''Base Objects'' (Basisobjekten) und ''Managed Objects'' (verwalteten Objekten) unterschieden. ''Base Objects'' sind Informationen, die ein ''Managed Object'' spezifizieren. Zu den ''Base Objects'' gehören zum Beispiel Attribute, Key Value und Key Wrapping Data. |
||
Ein ''Managed Object'' ist ein Objekt mit kryptographischem Inhalt, das vom KLM-System verwaltet wird. Dazu gehören die verschiedenen [[Schlüssel (Kryptologie)|Schlüssel]] und [[Digitales Zertifikat|Zertifikate]]. Außerdem können ''Templates'' (Vorlagen) erstellt werden, die dem Administrator eines KLM-Systems ermöglichen, Attribute von oft genutzten Prozessen zusammenzufassen. Zum Beispiel kann eine Vorlage für einen [[symmetrisches Kryptosystem|symmetrischen Schlüssel]] erstellt werden, in welcher der [[Algorithmus]] und die Länge des Schlüssels definiert sind. Wenn ein Schlüssel nach diesen Spezifikationen erstellt werden soll, wird der Name der Vorlage anstelle der gewünschten Attribute übergeben. Um weitere geheimzuhaltende Objekte zu speichern, werden das ''Secret Data Objekt'' (z. B. für [[Passwort|Passwörter]]) oder das ''Opaque Object'' verwendet. Die Daten im ''Opaque Object'' müssen vom Server nicht interpretiert werden können. Es wird zum Beispiel ein Schlüssel gespeichert, obwohl der Server den verwendeten [[Verschlüsselung]]s-Algorithmus nicht unterstützt. |
Ein ''Managed Object'' ist ein Objekt mit kryptographischem Inhalt, das vom KLM-System verwaltet wird. Dazu gehören die verschiedenen [[Schlüssel (Kryptologie)|Schlüssel]] und [[Digitales Zertifikat|Zertifikate]]. Außerdem können ''Templates'' (Vorlagen) erstellt werden, die dem Administrator eines KLM-Systems ermöglichen, Attribute von oft genutzten Prozessen zusammenzufassen. Zum Beispiel kann eine Vorlage für einen [[symmetrisches Kryptosystem|symmetrischen Schlüssel]] erstellt werden, in welcher der [[Algorithmus]] und die Länge des Schlüssels definiert sind. Wenn ein Schlüssel nach diesen Spezifikationen erstellt werden soll, wird der Name der Vorlage anstelle der gewünschten Attribute übergeben. Um weitere geheimzuhaltende Objekte zu speichern, werden das ''Secret Data Objekt'' (z. B. für [[Passwort|Passwörter]]) oder das ''Opaque Object'' verwendet. Die Daten im ''Opaque Object'' müssen vom Server nicht interpretiert werden können. Es wird zum Beispiel ein Schlüssel gespeichert, obwohl der Server den verwendeten [[Verschlüsselung]]s-Algorithmus nicht unterstützt. |
||
=== Attribute === |
=== Attribute === |
||
Um die ''Managed Objects'' zu spezifizieren, gibt es verschiedene Attribute. In der Tabelle sind alle Attribute mit ihren wichtigsten Eigenschaften aufgelistet. Es gibt Attribute, die für jedes Objekt oder für bestimmte Objekte zwingend sind, andere sind optional. Von einigen Attributen können pro Objekt mehrere Instanzen vorhanden sein. Wichtig ist dies zum Beispiel beim Link. Ein ''[[Schlüssel (Kryptologie)|Public Key]]'' hat einen Link zum zugehörigen ''Private Key'' und zusätzlich zum Zertifikat, das den Schlüssel mit einer Identität verknüpft. In der KMIP-Spezifikation wird zudem für jedes Attribut beschrieben, wer es erstellen, ändern, löschen darf und bei welchen Operationen das Attribut implizit gesetzt wird. |
Um die ''Managed Objects'' zu spezifizieren, gibt es verschiedene Attribute. In der Tabelle sind alle Attribute mit ihren wichtigsten Eigenschaften aufgelistet. Es gibt Attribute, die für jedes Objekt oder für bestimmte Objekte zwingend sind, andere sind optional. Von einigen Attributen können pro Objekt mehrere Instanzen vorhanden sein. Wichtig ist dies zum Beispiel beim Link. Ein ''[[Schlüssel (Kryptologie)|Public Key]]'' hat einen Link zum zugehörigen ''Private Key'' und zusätzlich zum Zertifikat, das den Schlüssel mit einer Identität verknüpft. In der KMIP-Spezifikation wird zudem für jedes Attribut beschrieben, wer es erstellen, ändern, löschen darf und bei welchen Operationen das Attribut implizit gesetzt wird. |
||
{| class="wikitable" |
{| class="wikitable" |
||
Zeile 18: | Zeile 18: | ||
! Attribut !! Beschreibung |
! Attribut !! Beschreibung |
||
|- |
|- |
||
| ''Unique Identifier'' || |
| ''Unique Identifier'' || |
||
* Eindeutige Bezeichnung eines Objekts innerhalb eines KLMS |
* Eindeutige Bezeichnung eines Objekts innerhalb eines KLMS |
||
* Wird vom Server bei der Erstellung gesetzt und kann nicht verändert werden |
* Wird vom Server bei der Erstellung gesetzt und kann nicht verändert werden |
||
|- |
|- |
||
| ''Name'' || |
| ''Name'' || |
||
* Name des Objekts |
* Name des Objekts |
||
* Vom Client gesetzt |
* Vom Client gesetzt |
||
* Vom Client benötigt, um das Objekt zu referenzieren |
* Vom Client benötigt, um das Objekt zu referenzieren |
||
|- |
|- |
||
| ''Object Type'' || |
| ''Object Type'' || |
||
* Typ des Objekts (''Public Key, Private Key,'' etc.) |
* Typ des Objekts (''Public Key, Private Key,'' etc.) |
||
|- |
|- |
||
| ''Cryptographic Algorithm'' || |
| ''Cryptographic Algorithm'' || |
||
* Algorithmus, der vom Objekt verwendet wird ([[RSA-Kryptosystem|RSA]], [[Data Encryption Standard|DES]], [[Advanced Encryption Standard|AES]], etc.) |
* Algorithmus, der vom Objekt verwendet wird ([[RSA-Kryptosystem|RSA]], [[Data Encryption Standard|DES]], [[Advanced Encryption Standard|AES]], etc.) |
||
|- |
|- |
||
| ''Cryptographic Length'' || |
| ''Cryptographic Length'' || |
||
* Länge des Schlüssels in [[Bit]]s |
* Länge des Schlüssels in [[Bit]]s |
||
|- |
|- |
||
| ''Cryptographic Parameters'' || |
| ''Cryptographic Parameters'' || |
||
* [[Parameter (Informatik)|Parameter]] für bestimmte Anwendungen (z. B. [[ Kryptologische Hashfunktion|Hash-Algorithmus]]) |
* [[Parameter (Informatik)|Parameter]] für bestimmte Anwendungen (z. B. [[ Kryptologische Hashfunktion|Hash-Algorithmus]]) |
||
|- |
|- |
||
| ''Cryptographic Domain Parameters'' || |
| ''Cryptographic Domain Parameters'' || |
||
* Parameter zur Erstellung eines Schlüsselpaares |
* Parameter zur Erstellung eines Schlüsselpaares |
||
|- |
|- |
||
| ''Certificate Type'' || |
| ''Certificate Type'' || |
||
* Typ des Zertifikats ([[X.509]], [[Pretty Good Privacy|PGP]], etc.) |
* Typ des Zertifikats ([[X.509]], [[Pretty Good Privacy|PGP]], etc.) |
||
|- |
|- |
||
| ''Certificate Identifier'' || |
| ''Certificate Identifier'' || |
||
* Identifikation eines Zertifikats (Aussteller des Zertifikats und, wenn vorhanden, Seriennummer) |
* Identifikation eines Zertifikats (Aussteller des Zertifikats und, wenn vorhanden, Seriennummer) |
||
|- |
|- |
||
| ''Certificate Subject'' || |
| ''Certificate Subject'' || |
||
* Identifikation des Subjekts (Person oder Gerät) eines Zertifikats |
* Identifikation des Subjekts (Person oder Gerät) eines Zertifikats |
||
* Kann mehrere Beschreibungen beinhalten (Name, E-Mail-Adresse, [[IP-Adresse]], etc.) |
* Kann mehrere Beschreibungen beinhalten (Name, E-Mail-Adresse, [[IP-Adresse]], etc.) |
||
|- |
|- |
||
| ''Certificate Issuer'' || |
| ''Certificate Issuer'' || |
||
* Identifikation des Ausstellers eines Zertifikats |
* Identifikation des Ausstellers eines Zertifikats |
||
* Kann mehrere Beschreibungen beinhalten (Name, E-Mail-Adresse, IP-Adresse, etc.) |
* Kann mehrere Beschreibungen beinhalten (Name, E-Mail-Adresse, IP-Adresse, etc.) |
||
|- |
|- |
||
| ''Digest'' || |
| ''Digest'' || |
||
* Hash-Wert von Schlüssel, Zertifikat, ''Secret Data'' oder ''Opaque Object'' |
* Hash-Wert von Schlüssel, Zertifikat, ''Secret Data'' oder ''Opaque Object'' |
||
* Mehrere Hash-Werte möglich (mit verschiedenen Algorithmen) |
* Mehrere Hash-Werte möglich (mit verschiedenen Algorithmen) |
||
|- |
|- |
||
| ''Operation Policy Name'' || |
| ''Operation Policy Name'' || |
||
* Beschreibung, welche Clients welche Operationen auf dem Objekt ausführen dürfen |
* Beschreibung, welche Clients welche Operationen auf dem Objekt ausführen dürfen |
||
* Server hat mindestens eine Standard-Einstellung ''(default policy)'' |
* Server hat mindestens eine Standard-Einstellung ''(default policy)'' |
||
|- |
|- |
||
| ''Cryptographic Usage Mask'' || |
| ''Cryptographic Usage Mask'' || |
||
* Bit-Maske |
* Bit-Maske |
||
* Beschreibt die erlaubten Anwendungen eines Schlüssels |
* Beschreibt die erlaubten Anwendungen eines Schlüssels |
||
|- |
|- |
||
| ''Lease Time'' || |
| ''Lease Time'' || |
||
* [[Zeitintervall|Intervall]], währenddessen das Objekt genutzt werden darf |
* [[Zeitintervall|Intervall]], währenddessen das Objekt genutzt werden darf |
||
|- |
|- |
||
| ''Usage Limits'' || |
| ''Usage Limits'' || |
||
* Beschreibt die limitierte Nutzung eines Objekts |
* Beschreibt die limitierte Nutzung eines Objekts |
||
* Nutzung begrenzt nur Operationen zum Schutz von Informationen (z. B. [[Verschlüsselung]]), Operationen zur Verarbeitung geschützter Informationen (z. B. [[Entschlüsselung]]) sind unbegrenzt nutzbar |
* Nutzung begrenzt nur Operationen zum Schutz von Informationen (z. B. [[Verschlüsselung]]), Operationen zur Verarbeitung geschützter Informationen (z. B. [[Entschlüsselung]]) sind unbegrenzt nutzbar |
||
* Enthält Einheit (z. B. zu verschlüsselnde [[Byte]]s), aktuellen Zähler und total erlaubte Anzahl Einheiten |
* Enthält Einheit (z. B. zu verschlüsselnde [[Byte]]s), aktuellen Zähler und total erlaubte Anzahl Einheiten |
||
|- |
|- |
||
| ''State'' || |
| ''State'' || |
||
* Aktueller Status des Objekts |
* Aktueller Status des Objekts |
||
* Kann nur vom Server verändert werden |
* Kann nur vom Server verändert werden |
||
|- |
|- |
||
| ''Initial Date'' || |
| ''Initial Date'' || |
||
* Zeit und Datum der Erstellung/Registrierung des Objekts |
* Zeit und Datum der Erstellung/Registrierung des Objekts |
||
|- |
|- |
||
| ''Activation Date'' || |
| ''Activation Date'' || |
||
* Zeit und Datum der Aktivierung |
* Zeit und Datum der Aktivierung |
||
* Objekt darf ab dem Aktivierungsdatum für schützende Operationen ([[Entschlüsseln]] oder unwrapping) genutzt werden |
* Objekt darf ab dem Aktivierungsdatum für schützende Operationen ([[Entschlüsseln]] oder unwrapping) genutzt werden |
||
|- |
|- |
||
| ''Process Start Date'' || |
| ''Process Start Date'' || |
||
* Zeit und Datum, ab wann das Objekt für die Bearbeitung von verschlüsselten Informationen genutzt werden darf |
* Zeit und Datum, ab wann das Objekt für die Bearbeitung von verschlüsselten Informationen genutzt werden darf |
||
* Darf nicht früher sein als die Aktivierungszeit |
* Darf nicht früher sein als die Aktivierungszeit |
||
|- |
|- |
||
| ''Protect Stop Date'' || |
| ''Protect Stop Date'' || |
||
* Zeit und Datum, ab wann ein Objekt nicht mehr für schützende Operationen ([[Verschlüsseln]] oder wrapping) eingesetzt werden darf |
* Zeit und Datum, ab wann ein Objekt nicht mehr für schützende Operationen ([[Verschlüsseln]] oder wrapping) eingesetzt werden darf |
||
* Darf nicht später sein als Deaktivierungszeit |
* Darf nicht später sein als Deaktivierungszeit |
||
|- |
|- |
||
| ''Deactivation Date'' || |
| ''Deactivation Date'' || |
||
* Zeit und Datum der Deaktivierung |
* Zeit und Datum der Deaktivierung |
||
|- |
|- |
||
| ''Destroy Date'' || |
| ''Destroy Date'' || |
||
* Zeit und Datum des Löschens des Objekts |
* Zeit und Datum des Löschens des Objekts |
||
|- |
|- |
||
| ''Compromise Occurrence Date'' || |
| ''Compromise Occurrence Date'' || |
||
* Zeit und Datum, ab wann das Objekt als [[Technische Kompromittierung|kompromittiert]] gilt |
* Zeit und Datum, ab wann das Objekt als [[Technische Kompromittierung|kompromittiert]] gilt |
||
|- |
|- |
||
| ''Compromise Date'' || |
| ''Compromise Date'' || |
||
* Zeit und Datum der Zustandsänderung in den ''Compromised State'' |
* Zeit und Datum der Zustandsänderung in den ''Compromised State'' |
||
|- |
|- |
||
| ''Revocation Reason'' || |
| ''Revocation Reason'' || |
||
* Grund, warum ein Objekt annulliert wird |
* Grund, warum ein Objekt annulliert wird |
||
|- |
|- |
||
| ''Archive Date'' || |
| ''Archive Date'' || |
||
* Zeit und Datum, wann das Objekt archiviert wurde |
* Zeit und Datum, wann das Objekt archiviert wurde |
||
|- |
|- |
||
| ''Object Group'' || |
| ''Object Group'' || |
||
* Name einer Objekt-Gruppe |
* Name einer Objekt-Gruppe |
||
|- |
|- |
||
| ''Link'' || |
| ''Link'' || |
||
* Zusammenhänge zwischen den Objekten (''Private Key – Public Key, Public Key – [[Digitales Zertifikat|Certificate]],'' etc.) |
* Zusammenhänge zwischen den Objekten (''Private Key – Public Key, Public Key – [[Digitales Zertifikat|Certificate]],'' etc.) |
||
* Mehrere Links pro Objekt möglich |
* Mehrere Links pro Objekt möglich |
||
|- |
|- |
||
| ''Application Specific Information'' || |
| ''Application Specific Information'' || |
||
* Zusätzliche, applikationsspezifische Informationen zu einem Objekt |
* Zusätzliche, applikationsspezifische Informationen zu einem Objekt |
||
|- |
|- |
||
| ''Contact Information'' || |
| ''Contact Information'' || |
||
* Kontaktinformationen (Personen/Geräte, die für ein Objekt verantwortlich sind) |
* Kontaktinformationen (Personen/Geräte, die für ein Objekt verantwortlich sind) |
||
|- |
|- |
||
| ''Last Change Date'' || |
| ''Last Change Date'' || |
||
* Zeit und Datum der letzten Änderung |
* Zeit und Datum der letzten Änderung |
||
|- |
|- |
||
| ''Custom Attribute'' || |
| ''Custom Attribute'' || |
||
* Anbieterspezifisches Attribut |
* Anbieterspezifisches Attribut |
||
* Client- oder serverseitig |
* Client- oder serverseitig |
||
Zeile 138: | Zeile 138: | ||
==== ''Client-to-Server''-Operationen ==== |
==== ''Client-to-Server''-Operationen ==== |
||
Ein Client kann eine Teilmenge oder alle Operationen unterstützen. Möchte er mehrere Operationen gleichzeitig an den Server senden, können diese in einer Nachricht zu einem [[Stapelverarbeitung | Batch]] zusammengefasst werden. |
Ein Client kann eine Teilmenge oder alle Operationen unterstützen. Möchte er mehrere Operationen gleichzeitig an den Server senden, können diese in einer Nachricht zu einem [[Stapelverarbeitung | Batch]] zusammengefasst werden. |
||
Untenstehende Tabelle enthält die Operationen, die ein neues Objekt erzeugen oder Inhalte eines bestehenden Objekts erneuern. Das KLMS kann selbst Zertifikate ausstellen, oder die Zertifizierung von einem externen Dienst ''([[Zertifizierungsstelle |certification authority]])'' anfordern. |
Untenstehende Tabelle enthält die Operationen, die ein neues Objekt erzeugen oder Inhalte eines bestehenden Objekts erneuern. Das KLMS kann selbst Zertifikate ausstellen, oder die Zertifizierung von einem externen Dienst ''([[Zertifizierungsstelle |certification authority]])'' anfordern. |
||
Zeile 146: | Zeile 146: | ||
! Operation !! Beschreibung |
! Operation !! Beschreibung |
||
|- |
|- |
||
| ''Create'' || |
| ''Create'' || |
||
* Erstellen eines symmetrischen Schlüssel |
* Erstellen eines symmetrischen Schlüssel |
||
* Anfrage enthält spezifizierende Attribute und/oder Vorlagen |
* Anfrage enthält spezifizierende Attribute und/oder Vorlagen |
||
|- |
|- |
||
| ''Create Key Pair'' || |
| ''Create Key Pair'' || |
||
* Erstellen eines Schlüsselpaares mit privatem und öffentlichem Schlüssel |
* Erstellen eines Schlüsselpaares mit privatem und öffentlichem Schlüssel |
||
* Anfrage enthält spezifizierende Attribute und/oder Vorlagen |
* Anfrage enthält spezifizierende Attribute und/oder Vorlagen |
||
Zeile 164: | Zeile 164: | ||
* Automatisches Erstellen eines Link-Attributs, das den alten mit dem neuen Schlüssel verbindet |
* Automatisches Erstellen eines Link-Attributs, das den alten mit dem neuen Schlüssel verbindet |
||
|- |
|- |
||
| ''Derive Key'' || |
| ''Derive Key'' || |
||
* Symmetrischen Schlüssel/Secret Data ableiten aus Schlüssel / ''Secret Data'' |
* Symmetrischen Schlüssel/Secret Data ableiten aus Schlüssel / ''Secret Data'' |
||
* Abzuleitendes Objekt muss dem KLMS bekannt sein |
* Abzuleitendes Objekt muss dem KLMS bekannt sein |
||
Zeile 170: | Zeile 170: | ||
* Automatisches Erstellen eines Link-Attributs, welches das Ursprungsobjekt mit dem abgeleiteten Objekt verbindet |
* Automatisches Erstellen eines Link-Attributs, welches das Ursprungsobjekt mit dem abgeleiteten Objekt verbindet |
||
|- |
|- |
||
| ''Certify'' || |
| ''Certify'' || |
||
* Erstellen eines Zertifikats für einen öffentlichen Schlüssel |
* Erstellen eines Zertifikats für einen öffentlichen Schlüssel |
||
* Automatisches Erstellen eines Link-Attributs, welches das Zertifikat mit dem ''Public Key'' verbindet |
* Automatisches Erstellen eines Link-Attributs, welches das Zertifikat mit dem ''Public Key'' verbindet |
||
Zeile 185: | Zeile 185: | ||
! Operation !! Beschreibung |
! Operation !! Beschreibung |
||
|- |
|- |
||
| ''Locate'' || |
| ''Locate'' || |
||
* Suchen eines Objekts, das durch ein oder mehrere Attribute beschrieben wird |
* Suchen eines Objekts, das durch ein oder mehrere Attribute beschrieben wird |
||
* Erfolglose Suche resultiert in leerer Antwort |
* Erfolglose Suche resultiert in leerer Antwort |
||
* Erfolgreiche Suche resultiert in Antwort mit einem oder mehreren ''Unique Identifiers'' |
* Erfolgreiche Suche resultiert in Antwort mit einem oder mehreren ''Unique Identifiers'' |
||
|- |
|- |
||
| ''Check'' || |
| ''Check'' || |
||
* Verwendung des Objekts für eine bestimmte Anwendung überprüfen |
* Verwendung des Objekts für eine bestimmte Anwendung überprüfen |
||
* Bei erlaubter Anwendung wird mit dem ''Unique Identifier'' geantwortet |
* Bei erlaubter Anwendung wird mit dem ''Unique Identifier'' geantwortet |
||
* Bei unerlaubter Anwendung werden die für das Scheitern der Anfrage verantwortlichen Attribute zurückgesendet |
* Bei unerlaubter Anwendung werden die für das Scheitern der Anfrage verantwortlichen Attribute zurückgesendet |
||
|- |
|- |
||
| ''Get'' || |
| ''Get'' || |
||
* Abrufen eines Objekts |
* Abrufen eines Objekts |
||
* Auswahl des Objekts mit dem ''Unique Identifier'' |
* Auswahl des Objekts mit dem ''Unique Identifier'' |
||
|} |
|} |
||
In der folgenden Tabelle werden die Operationen angegeben, die sich auf die Attribute von Objekten beziehen. Die Auswahl des gewünschten Objekts erfolgt jeweils mit dem ''Unique Identifier,'' die Auswahl des Attributs mit dem Attributnamen. |
In der folgenden Tabelle werden die Operationen angegeben, die sich auf die Attribute von Objekten beziehen. Die Auswahl des gewünschten Objekts erfolgt jeweils mit dem ''Unique Identifier,'' die Auswahl des Attributs mit dem Attributnamen. |
||
{| class="wikitable" |
{| class="wikitable" |
||
Zeile 206: | Zeile 206: | ||
! Operation !! Beschreibung |
! Operation !! Beschreibung |
||
|- |
|- |
||
| ''Get Attributes'' || |
| ''Get Attributes'' || |
||
* Abfrage von bestimmten Attributen eines Objekts |
* Abfrage von bestimmten Attributen eines Objekts |
||
|- |
|- |
||
| ''Get Attribute List'' || |
| ''Get Attribute List'' || |
||
* Abfrage aller Attribute eines Objekts |
* Abfrage aller Attribute eines Objekts |
||
|- |
|- |
||
| ''Add Attribute'' || |
| ''Add Attribute'' || |
||
* Erstellen eines neuen Attributs zu einem bestehenden Objekt |
* Erstellen eines neuen Attributs zu einem bestehenden Objekt |
||
* Mehrere neue Attribute können zu einem Batch zusammengefasst werden. |
* Mehrere neue Attribute können zu einem Batch zusammengefasst werden. |
||
Zeile 227: | Zeile 227: | ||
! Operation !! Beschreibung |
! Operation !! Beschreibung |
||
|- |
|- |
||
| ''Obtain Lease'' || |
| ''Obtain Lease'' || |
||
* Verlängerung der Nutzungsdauer |
* Verlängerung der Nutzungsdauer |
||
|- |
|- |
||
| ''Get Usage Allocation'' || |
| ''Get Usage Allocation'' || |
||
* Zuteilung von nutzbaren Einheiten für Schutzfunktionen (vgl. ''Usage Limits'') |
* Zuteilung von nutzbaren Einheiten für Schutzfunktionen (vgl. ''Usage Limits'') |
||
|- |
|- |
||
| ''Activate'' || |
| ''Activate'' || |
||
* Aktivierung eines Objekts |
* Aktivierung eines Objekts |
||
* Zustandswechsel von ''Pre-Active'' zu ''Active'' |
* Zustandswechsel von ''Pre-Active'' zu ''Active'' |
||
|- |
|- |
||
| ''Revoke'' || |
| ''Revoke'' || |
||
* Annullierung eines Objekts |
* Annullierung eines Objekts |
||
* ''Revocation Reason'' enthält den Grund der Annullierung |
* ''Revocation Reason'' enthält den Grund der Annullierung |
||
* Je nach Grund Zustandswechsel zu ''Compromised'' oder ''Deactivated'' |
* Je nach Grund Zustandswechsel zu ''Compromised'' oder ''Deactivated'' |
||
|- |
|- |
||
| ''Destroy'' || |
| ''Destroy'' || |
||
* Löschen eines Schlüssels oder einer Vorlage |
* Löschen eines Schlüssels oder einer Vorlage |
||
* Objekte im Zustand ''Pre-Active'' oder ''Deactivated'' werden sofort gelöscht |
* Objekte im Zustand ''Pre-Active'' oder ''Deactivated'' werden sofort gelöscht |
||
* Objekte im Zustand ''Active'' werden zuerst deaktiviert |
* Objekte im Zustand ''Active'' werden zuerst deaktiviert |
||
|- |
|- |
||
| ''Archive'' || |
| ''Archive'' || |
||
* Archivierung eines Objekts |
* Archivierung eines Objekts |
||
|- |
|- |
||
| Recover || |
| Recover || |
||
* Wiederherstellen eines archivierten Objekts |
* Wiederherstellen eines archivierten Objekts |
||
|- |
|- |
||
| Validate || |
| Validate || |
||
* Bestätigung der Gültigkeit einer Zertifikats -Kette ''(certificate chain)'' |
* Bestätigung der Gültigkeit einer Zertifikats -Kette ''(certificate chain)'' |
||
* Anfrage kann Zertifikate und ''Unique Identifiers'' enthalten |
* Anfrage kann Zertifikate und ''Unique Identifiers'' enthalten |
||
|} |
|} |
||
Die nächste Tabelle beschreibt die [[Asynchrone Kommunikation | asynchronen Operationen]] sowie eine Operation zur Befragung des Servers. Operationen werden als asynchron bezeichnet, wenn der Server nicht sofort antwortet. Der Client kann zu einem späteren Zeitpunkt die Poll-Operation ausführen, um die Antwort zu erhalten. Dieses Vorgehen wird gewählt, wenn Operationen eine gewisse Bearbeitungszeit benötigen (z. B. Wiederherstellen eines Objekts). |
Die nächste Tabelle beschreibt die [[Asynchrone Kommunikation | asynchronen Operationen]] sowie eine Operation zur Befragung des Servers. Operationen werden als asynchron bezeichnet, wenn der Server nicht sofort antwortet. Der Client kann zu einem späteren Zeitpunkt die Poll-Operation ausführen, um die Antwort zu erhalten. Dieses Vorgehen wird gewählt, wenn Operationen eine gewisse Bearbeitungszeit benötigen (z. B. Wiederherstellen eines Objekts). |
||
{| class="wikitable" |
{| class="wikitable" |
||
Zeile 269: | Zeile 269: | ||
* Option „Query Objects“ listet die vom Server unterstützten Objekttypen auf |
* Option „Query Objects“ listet die vom Server unterstützten Objekttypen auf |
||
|- |
|- |
||
| ''Cancel'' || |
| ''Cancel'' || |
||
* Abbrechen einer asynchronen Operation |
* Abbrechen einer asynchronen Operation |
||
* Antwort des Servers enthält das Resultat (abgebrochen, Abbruch nicht möglich, Operation vor dem Abbruch fertiggestellt, fehlgeschlagen, nicht verfügbar) |
* Antwort des Servers enthält das Resultat (abgebrochen, Abbruch nicht möglich, Operation vor dem Abbruch fertiggestellt, fehlgeschlagen, nicht verfügbar) |
||
|- |
|- |
||
| ''Poll'' || |
| ''Poll'' || |
||
* Abfrage einer asynchronen Operation |
* Abfrage einer asynchronen Operation |
||
* Bei laufender Operation wird der Status ''pending'' (ausstehend) zurückgegeben |
* Bei laufender Operation wird der Status ''pending'' (ausstehend) zurückgegeben |
||
* Bei abgeschlossener Operation wird das Resultat der Operation zurückgegeben |
* Bei abgeschlossener Operation wird das Resultat der Operation zurückgegeben |
||
|} |
|} |
||
==== ''Server-to-Client''-Operationen ==== |
==== ''Server-to-Client''-Operationen ==== |
||
Für gewisse Abläufe ist es sinnvoll, dass ein KLM-Server eine Kommunikation initiiert. Dabei sendet der Server dem Client eine Anfrage ''(Request Message).'' Der Client antwortet mit einer ''Response Message.'' |
Für gewisse Abläufe ist es sinnvoll, dass ein KLM-Server eine Kommunikation initiiert. Dabei sendet der Server dem Client eine Anfrage ''(Request Message).'' Der Client antwortet mit einer ''Response Message.'' |
||
Bei Anwendung dieser Operationen müssen sich die Clients beim Server anmelden. Die Art der Anmeldung wird nicht im [[Kommunikationsprotokoll|Protokoll]] spezifiziert. Es wird jedoch erwartet, dass eine Authentifizierung stattfindet, die einen [[Man-in-the-middle-Angriff]]<ref>Kurose und Ross: ''Computernetzwerke – Der Top-Down-Ansatz.'' Pearson Deutschland GmbH, München 2012. </ref> verhindert. |
Bei Anwendung dieser Operationen müssen sich die Clients beim Server anmelden. Die Art der Anmeldung wird nicht im [[Kommunikationsprotokoll|Protokoll]] spezifiziert. Es wird jedoch erwartet, dass eine Authentifizierung stattfindet, die einen [[Man-in-the-middle-Angriff]]<ref>Kurose und Ross: ''Computernetzwerke – Der Top-Down-Ansatz.'' Pearson Deutschland GmbH, München 2012. </ref> verhindert. |
||
{| class="wikitable" |
{| class="wikitable" |
||
Zeile 314: | Zeile 314: | ||
* '''Value''': Der eigentliche Wert bzw. Kern des TTLV-Segments (je nach Datentyp verschieden codiert) |
* '''Value''': Der eigentliche Wert bzw. Kern des TTLV-Segments (je nach Datentyp verschieden codiert) |
||
Mit Strukturen werden verschachtelte Inhalte erstellt. Im Value-Teil einer Struktur können weitere TTLV-Segmente vorkommen. Als Länge der Struktur wird dann die Anzahl der [[Byte |Bytes]] aller in der Struktur enthaltenen Elemente angegeben. |
Mit Strukturen werden verschachtelte Inhalte erstellt. Im Value-Teil einer Struktur können weitere TTLV-Segmente vorkommen. Als Länge der Struktur wird dann die Anzahl der [[Byte |Bytes]] aller in der Struktur enthaltenen Elemente angegeben. |
||
== Beispiel Nachricht Enkodierung == |
== Beispiel Nachricht Enkodierung == |
||
Eine Nachricht vom KMIP Client an den KLMS Server zur Erstellung eines symmetrischen [[Schlüssel (Kryptologie)|Schlüssels]] kann folgendermaßen aussehen, als Byte-Strom in [[Hexadezimalsystem|hexadezimaler Form]] dargestellt. |
Eine Nachricht vom KMIP Client an den KLMS Server zur Erstellung eines symmetrischen [[Schlüssel (Kryptologie)|Schlüssels]] kann folgendermaßen aussehen, als Byte-Strom in [[Hexadezimalsystem|hexadezimaler Form]] dargestellt. |
||
Aufgeschlüsselt nach dem TTLV Schema und gemäß KMIP Spezifikation interpretiert, ist diese Nachricht eine Anfrage des [[Client]]s an den [[Server]]. Der Client verlangt einen symmetrischen Schlüssel zur [[Verschlüsselung|Ver- und Entschlüsselung]] mit dem [[Advanced Encryption Standard|AES]]-Algorithmus. Der Schlüssel soll eine Länge von 128 [[Bit]] haben. |
Aufgeschlüsselt nach dem TTLV Schema und gemäß KMIP Spezifikation interpretiert, ist diese Nachricht eine Anfrage des [[Client]]s an den [[Server]]. Der Client verlangt einen symmetrischen Schlüssel zur [[Verschlüsselung|Ver- und Entschlüsselung]] mit dem [[Advanced Encryption Standard|AES]]-Algorithmus. Der Schlüssel soll eine Länge von 128 [[Bit]] haben. |
||
Zeile 325: | Zeile 325: | ||
== Use Cases == |
== Use Cases == |
||
Zusätzlich zur Spezifikation wurden [[Anwendungsfall|Use Cases]] entwickelt<ref>http://docs.oasis-open.org/kmip/usecases/v1.0/cs01/kmip-usecases-1.0-cs-01.doc</ref>. Dabei wurden die Abläufe von verschiedenen Szenarien und die auszutauschenden Nachrichten beschrieben. Die Use Cases können einerseits dazu verwendet werden, den Ablauf einer Kommunikation nachzuvollziehen. Andererseits kann damit eine [[Implementierung|Implementationen]] des KMIP, die auf einem KLMS läuft, getestet werden. Die Use Cases enthalten nur realistische Anwendungen, sie eignen sich nicht dazu, mögliche Angriffe auf das System zu testen. |
Zusätzlich zur Spezifikation wurden [[Anwendungsfall|Use Cases]] entwickelt<ref>http://docs.oasis-open.org/kmip/usecases/v1.0/cs01/kmip-usecases-1.0-cs-01.doc</ref>. Dabei wurden die Abläufe von verschiedenen Szenarien und die auszutauschenden Nachrichten beschrieben. Die Use Cases können einerseits dazu verwendet werden, den Ablauf einer Kommunikation nachzuvollziehen. Andererseits kann damit eine [[Implementierung|Implementationen]] des KMIP, die auf einem KLMS läuft, getestet werden. Die Use Cases enthalten nur realistische Anwendungen, sie eignen sich nicht dazu, mögliche Angriffe auf das System zu testen. |
||
== Open Source Implementation KMIP4J == |
== Open Source Implementation KMIP4J == |
||
Zeile 331: | Zeile 331: | ||
== Weblinks == |
== Weblinks == |
||
* [http://www.oasis-open.org/committees/kmip oasis-open.org/...] |
* [http://www.oasis-open.org/committees/kmip oasis-open.org/...] – Offizielle Webseite der Gremium zum Standard KMIP |
||
* [https://wiki.oasis-open.org/kmip/KnownKMIPImplementations wiki.oasis-open.org/...] – Referenz-Implementierungen |
* [https://wiki.oasis-open.org/kmip/KnownKMIPImplementations wiki.oasis-open.org/...] – Referenz-Implementierungen |
||
* [http://docs.oasis-open.org/kmip/spec/v1.0/cs01/kmip-spec-1.0-cs-01.pdf Key Management Interoperability Protocol Specification Version 1.0] (PDF; 2,0 MB) |
* [http://docs.oasis-open.org/kmip/spec/v1.0/cs01/kmip-spec-1.0-cs-01.pdf Key Management Interoperability Protocol Specification Version 1.0] (PDF; 2,0 MB) |
||
* [http://docs.oasis-open.org/kmip/usecases/v1.0/cs01/kmip-usecases-1.0-cs-01.doc Key Management Interoperability Protocol Use Cases Version 1.0] ([[Microsoft Word|MS Word]]; 1,0 MB) |
* [http://docs.oasis-open.org/kmip/usecases/v1.0/cs01/kmip-usecases-1.0-cs-01.doc Key Management Interoperability Protocol Use Cases Version 1.0] ([[Microsoft Word|MS Word]]; 1,0 MB) |
Version vom 5. Oktober 2018, 13:08 Uhr
Das Key Management Interoperability Protocol (KMIP) bietet einen einheitlichen Standard für die Kommunikation zwischen einem Key Lifecycle Management System (KLMS) und dessen Clients. Dadurch kann eine zentrale Schlüsselverwaltung eingesetzt werden und die Datensicherheit erhöht werden. Das Protokoll wird von der OASIS standardisiert.[1]
Protokolldefinition
In der KMIP-Spezifikation wird definiert, wie eine Nachricht aussehen muss und welche Informationen ausgetauscht werden können.[2] Einige Funktionalitäten von Client und Server, zum Beispiel die Fehlerbehandlung, werden vorgegeben. Andere können wie gewünscht umgesetzt werden. Ein Client oder Server muss nicht die vollständige, im Protokoll definierte Funktionalität umsetzen, sondern nur die tatsächlich benötigte.[3] Die Protokoll-Spezifikation gibt nicht vor, wie die Authentifizierung zwischen Client und Server abläuft. Allerdings werden in einem zugehörigen Dokument zwei Authentifizierungs-Profile beschrieben. Bei beiden Profilen werden Versionen des TLS verwendet. TLS dient nicht nur der Authentifizierung, es stellt auch die Integrität der Daten sicher.[4]
Objekte
Bei den Objekten wird zwischen Base Objects (Basisobjekten) und Managed Objects (verwalteten Objekten) unterschieden. Base Objects sind Informationen, die ein Managed Object spezifizieren. Zu den Base Objects gehören zum Beispiel Attribute, Key Value und Key Wrapping Data.
Ein Managed Object ist ein Objekt mit kryptographischem Inhalt, das vom KLM-System verwaltet wird. Dazu gehören die verschiedenen Schlüssel und Zertifikate. Außerdem können Templates (Vorlagen) erstellt werden, die dem Administrator eines KLM-Systems ermöglichen, Attribute von oft genutzten Prozessen zusammenzufassen. Zum Beispiel kann eine Vorlage für einen symmetrischen Schlüssel erstellt werden, in welcher der Algorithmus und die Länge des Schlüssels definiert sind. Wenn ein Schlüssel nach diesen Spezifikationen erstellt werden soll, wird der Name der Vorlage anstelle der gewünschten Attribute übergeben. Um weitere geheimzuhaltende Objekte zu speichern, werden das Secret Data Objekt (z. B. für Passwörter) oder das Opaque Object verwendet. Die Daten im Opaque Object müssen vom Server nicht interpretiert werden können. Es wird zum Beispiel ein Schlüssel gespeichert, obwohl der Server den verwendeten Verschlüsselungs-Algorithmus nicht unterstützt.
Attribute
Um die Managed Objects zu spezifizieren, gibt es verschiedene Attribute. In der Tabelle sind alle Attribute mit ihren wichtigsten Eigenschaften aufgelistet. Es gibt Attribute, die für jedes Objekt oder für bestimmte Objekte zwingend sind, andere sind optional. Von einigen Attributen können pro Objekt mehrere Instanzen vorhanden sein. Wichtig ist dies zum Beispiel beim Link. Ein Public Key hat einen Link zum zugehörigen Private Key und zusätzlich zum Zertifikat, das den Schlüssel mit einer Identität verknüpft. In der KMIP-Spezifikation wird zudem für jedes Attribut beschrieben, wer es erstellen, ändern, löschen darf und bei welchen Operationen das Attribut implizit gesetzt wird.
Attribut | Beschreibung |
---|---|
Unique Identifier |
|
Name |
|
Object Type |
|
Cryptographic Algorithm | |
Cryptographic Length |
|
Cryptographic Parameters |
|
Cryptographic Domain Parameters |
|
Certificate Type | |
Certificate Identifier |
|
Certificate Subject |
|
Certificate Issuer |
|
Digest |
|
Operation Policy Name |
|
Cryptographic Usage Mask |
|
Lease Time |
|
Usage Limits |
|
State |
|
Initial Date |
|
Activation Date |
|
Process Start Date |
|
Protect Stop Date |
|
Deactivation Date |
|
Destroy Date |
|
Compromise Occurrence Date |
|
Compromise Date |
|
Revocation Reason |
|
Archive Date |
|
Object Group |
|
Link |
|
Application Specific Information |
|
Contact Information |
|
Last Change Date |
|
Custom Attribute |
|
Operationen
Bei den Operationen wird unterschieden, von wem sie initiiert werden. Die meisten davon sind Client-to-Server-Operationen. Zusätzlich gibt es wenige Server-to-Client-Operationen. In der KMIP-Spezifikation wird jeweils beschrieben, welche Informationen eine Anfrage und die dazugehörige Antwort beinhalten. In den folgenden Unterkapiteln werden die Operationen und ihre wichtigsten Eigenschaften aufgelistet. Die Aufteilung erfolgt gemäß Verwendungszweck.
Client-to-Server-Operationen
Ein Client kann eine Teilmenge oder alle Operationen unterstützen. Möchte er mehrere Operationen gleichzeitig an den Server senden, können diese in einer Nachricht zu einem Batch zusammengefasst werden.
Untenstehende Tabelle enthält die Operationen, die ein neues Objekt erzeugen oder Inhalte eines bestehenden Objekts erneuern. Das KLMS kann selbst Zertifikate ausstellen, oder die Zertifizierung von einem externen Dienst (certification authority) anfordern.
Operation | Beschreibung |
---|---|
Create |
|
Create Key Pair |
|
Register |
|
Re-key |
|
Derive Key |
|
Certify |
|
Re-Certify |
|
Operationen, die benötigt werden, um Objekte aufzufinden und abzurufen und um deren Verwendung zu prüfen, werden in der nächsten Tabelle aufgelistet.
Operation | Beschreibung |
---|---|
Locate |
|
Check |
|
Get |
|
In der folgenden Tabelle werden die Operationen angegeben, die sich auf die Attribute von Objekten beziehen. Die Auswahl des gewünschten Objekts erfolgt jeweils mit dem Unique Identifier, die Auswahl des Attributs mit dem Attributnamen.
Operation | Beschreibung |
---|---|
Get Attributes |
|
Get Attribute List |
|
Add Attribute |
|
Modify Attribute | Änderung eines Attributs |
Delete Attribute | Löschen eines Attributs |
Operationen, die in der nächsten Tabelle aufgelistet werden, beschäftigen sich mit der Nutzung von Objekten. Die Objektauswahl erfolgt wie schon oben erwähnt mit der Angabe des Unique Identifiers. Einige der folgenden Operationen dürfen nur von bestimmten Clients beantragt werden (zum Beispiel vom Administrator oder vom Ersteller eines Objekts). Die Identität dieser Clients muss mittels Authentifizierung überprüft werden.
Operation | Beschreibung |
---|---|
Obtain Lease |
|
Get Usage Allocation |
|
Activate |
|
Revoke |
|
Destroy |
|
Archive |
|
Recover |
|
Validate |
|
Die nächste Tabelle beschreibt die asynchronen Operationen sowie eine Operation zur Befragung des Servers. Operationen werden als asynchron bezeichnet, wenn der Server nicht sofort antwortet. Der Client kann zu einem späteren Zeitpunkt die Poll-Operation ausführen, um die Antwort zu erhalten. Dieses Vorgehen wird gewählt, wenn Operationen eine gewisse Bearbeitungszeit benötigen (z. B. Wiederherstellen eines Objekts).
Operation | Beschreibung |
---|---|
Query |
|
Cancel |
|
Poll |
|
Server-to-Client-Operationen
Für gewisse Abläufe ist es sinnvoll, dass ein KLM-Server eine Kommunikation initiiert. Dabei sendet der Server dem Client eine Anfrage (Request Message). Der Client antwortet mit einer Response Message. Bei Anwendung dieser Operationen müssen sich die Clients beim Server anmelden. Die Art der Anmeldung wird nicht im Protokoll spezifiziert. Es wird jedoch erwartet, dass eine Authentifizierung stattfindet, die einen Man-in-the-middle-Angriff[5] verhindert.
Operation | Beschreibung |
---|---|
Notify |
|
Put |
|
Nachrichten-Format
Eine Nachricht besteht immer aus einem Header, gefolgt von einem oder mehreren gestapelten Batch-Objekten und optionalen Nachrichten-Erweiterungen.


Im Header wird zwischen zwei Nachrichtentypen unterschieden: Request und Response. In beiden Headern ist jeweils die Protokoll-Version und der Batch Count angegeben. Der Batch Count gibt an, wie viele Operationen mit dieser Nachricht angefordert werden. Dazu kommen weitere Daten, abhängig vom Typ. Ein Batch Objekt spezifiziert die gewünschte Operation und beinhaltet alle dafür benötigten Attribute. Die gepunkteten Attribute in den folgenden Abbildungen sind optional.
Um eine einfache Verarbeitung zu garantieren, wird eine Tag-Type-Length-Value (TTLV) Codierung verwendet (siehe Abbildung).
- Tag: Kennzeichnung der nachfolgenden Informationen des TTLV-Segments, codiert als sechsstellige Hexadezimalzahl, wobei diese immer mit 42 beginnt („42XXXX“)
- Type: Typ der nachfolgenden Informationen (Structure, Integer, Long Integer, Big Integer, Enumeration, Boolean, Text String, Byte String, Date-Time, Interval)
- Length: Länge der nachfolgenden Informationen in Bytes
- Value: Der eigentliche Wert bzw. Kern des TTLV-Segments (je nach Datentyp verschieden codiert)
Mit Strukturen werden verschachtelte Inhalte erstellt. Im Value-Teil einer Struktur können weitere TTLV-Segmente vorkommen. Als Länge der Struktur wird dann die Anzahl der Bytes aller in der Struktur enthaltenen Elemente angegeben.
Beispiel Nachricht Enkodierung
Eine Nachricht vom KMIP Client an den KLMS Server zur Erstellung eines symmetrischen Schlüssels kann folgendermaßen aussehen, als Byte-Strom in hexadezimaler Form dargestellt. Aufgeschlüsselt nach dem TTLV Schema und gemäß KMIP Spezifikation interpretiert, ist diese Nachricht eine Anfrage des Clients an den Server. Der Client verlangt einen symmetrischen Schlüssel zur Ver- und Entschlüsselung mit dem AES-Algorithmus. Der Schlüssel soll eine Länge von 128 Bit haben.
Use Cases
Zusätzlich zur Spezifikation wurden Use Cases entwickelt[6]. Dabei wurden die Abläufe von verschiedenen Szenarien und die auszutauschenden Nachrichten beschrieben. Die Use Cases können einerseits dazu verwendet werden, den Ablauf einer Kommunikation nachzuvollziehen. Andererseits kann damit eine Implementationen des KMIP, die auf einem KLMS läuft, getestet werden. Die Use Cases enthalten nur realistische Anwendungen, sie eignen sich nicht dazu, mögliche Angriffe auf das System zu testen.
Open Source Implementation KMIP4J
Während einige Software-Unternehmen schon eine Weile mit proprietären Implementationen von KMIP arbeiten, gab es bisher noch keine frei verfügbare Software. Mit KMIP4J gibt es nun eine Open-Source-Implementation von KMIP 1.0. Diese ist auf SourceForge verfügbar.
Weblinks
- oasis-open.org/... – Offizielle Webseite der Gremium zum Standard KMIP
- wiki.oasis-open.org/... – Referenz-Implementierungen
- Key Management Interoperability Protocol Specification Version 1.0 (PDF; 2,0 MB)
- Key Management Interoperability Protocol Use Cases Version 1.0 (MS Word; 1,0 MB)
- Key Management Interoperability Protocol Usage Guide Version 1.0 (MS Word; 453 kB)
- Key Management Interoperability Protocol Profiles Version 1.0 (PDF; 197 kB)
- White Paper: Key Management Interoperability Protocol (PDF; 1,1 MB)
- KMIP4J on Sourceforge
Einzelnachweise
- ↑ http://xml.coverpages.org/KMIP/KMIP-WhitePaper.pdf
- ↑ Key Management Interoperability Protocol Specification Version 1.0 - OASIS Standard
- ↑ http://docs.oasis-open.org/kmip/spec/v1.0/cs01/kmip-spec-1.0-cs-01.pdf
- ↑ Key Management Interoperability Protocol Profiles Version 1.0 Committee Specification, 15. Juni 2010, (PDF)
- ↑ Kurose und Ross: Computernetzwerke – Der Top-Down-Ansatz. Pearson Deutschland GmbH, München 2012.
- ↑ http://docs.oasis-open.org/kmip/usecases/v1.0/cs01/kmip-usecases-1.0-cs-01.doc