Generieren Sie einen AWS CloudHSM symmetrischen Schlüssel mit KMU - AWS CloudHSM

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Generieren Sie einen AWS CloudHSM symmetrischen Schlüssel mit KMU

Verwenden Sie den genSymKey Befehl im Tool AWS CloudHSM key_mgmt_util, um einen symmetrischen Schlüssel in Ihren Hardware-Sicherheitsmodulen () zu generieren. HSM Sie können den Schlüsseltyp und die Größe angeben, eine ID und ein Label zuweisen und den Schlüssel mit anderen Benutzern teilen. HSM Sie können auch nicht extrahierbare Schlüssel erstellen sowie Schlüssel, die ablaufen, wenn die Sitzung endet. Wenn der Befehl erfolgreich ist, gibt er ein Tastenkürzel zurück, das der Taste HSM zugewiesen wird. Sie können das Schlüssel-Handle nutzen, damit der Schlüssel für andere Befehle identifizierbar ist.

Bevor Sie einen key_mgmt_util-Befehl ausführen, müssen Sie key_mgmt_util starten und sich als Crypto-Benutzer (CU) anmelden. HSM

Syntax

genSymKey -h genSymKey -t <key-type> -s <key-size> -l <label> [-id <key-ID>] [-min_srv <minimum-number-of-servers>] [-m_value <0..8>] [-nex] [-sess] [-timeout <number-of-seconds> ] [-u <user-ids>] [-attest]

Beispiele

Diese Beispiele zeigen, wie Sie symmetrische Schlüssel in Ihrem erstellen können. genSymKey HSMs

Tipp

Um die Schlüssel, die Sie mit diesen Beispielen erstellen, für HMAC Operationen zu verwenden, müssen Sie OBJ_ATTR_VERIFY TRUE nach dem Generieren des Schlüssels festlegen OBJ_ATTR_SIGN und auf. Verwenden setAttribute Sie das Cloud HSM Management Utility (CMU), um diese Werte festzulegen. Weitere Informationen finden Sie unter setAttribute.

Beispiel : Generieren Sie einen AES Schlüssel

Dieser Befehl erstellt einen AES 256-Bit-Schlüssel mit einer aes256 Bezeichnung. Die Ausgabe zeigt, dass das Schlüssel-Handle des neuen Schlüssels 6 ist.

Command: genSymKey -t 31 -s 32 -l aes256 Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Created. Key Handle: 6 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Beispiel : Erstellen eines Sitzungsschlüssels

Dieser Befehl erstellt einen nicht extrahierbaren AES 192-Bit-Schlüssel, der nur in der aktuellen Sitzung gültig ist. Sie können einen solchen Schlüssel erstellen, um einen Schlüssel, der exportiert wird, zu verpacken (und dann sofort zu entpacken).

Command: genSymKey -t 31 -s 24 -l tmpAES -id wrap01 -nex -sess
Beispiel : Schnelles Zurückgeben

Mit diesem Befehl wird ein generischer 512-Byte-Schlüssel mit der Bezeichnung IT_test_key erstellt. Der Befehl wartet nicht darauf, dass der Schlüssel mit allen HSMs im Cluster synchronisiert wird. Stattdessen kehrt er zurück, sobald der Schlüssel auf einem beliebigen Schlüssel HSM (-min_srv 1) oder innerhalb von 1 Sekunde (-timeout 1) erstellt wurde, je nachdem, welcher Wert kürzer ist. Wenn der Schlüssel HSMs vor Ablauf des Timeouts nicht mit der angegebenen Mindestanzahl synchronisiert wird, wird er nicht generiert. Sie können einen solchen Befehl in einem Skript verwenden, das zahlreiche Schlüssel erstellt, wie die for-Schleife im folgenden Beispiel.

Command: genSymKey -t 16 -s 512 -l IT_test_key -min_srv 1 -timeout 1 $ for i in {1..30}; do /opt/cloudhsm/bin/key_mgmt_util singlecmd loginHSM -u CU -s example_user -p example_pwd genSymKey -l aes -t 31 -s 32 -min_srv 1 -timeout 1; done;
Beispiel : Erstellen eines allgemeinen Schlüssels mit Quorum-Autorisierung

Mit diesem Befehl wird ein allgemeiner geheimer 2048-Bit-Schlüssel mit der Bezeichnung generic-mV2 erstellt. Der Befehl verwendet den -u-Parameter, um den Schlüssel mit einem anderen CU, Benutzer 6, zu teilen. Er verwendet den -m_value-Parameter, damit für alle kryptografischen Vorgänge, die den Schlüssel verwenden, ein Quorum aus mindestens zwei Genehmigungen erforderlich ist. Der Befehl verwendet auch den -attest-Parameter, um die Integrität der Firmware zu überprüfen, auf der der Schlüssel generiert wird.

Die Ausgabe zeigt, dass der Befehl einen Schlüssel mit dem Schlüssel-Handle 9 generiert hat und dass die Bescheinigungsprüfung auf der Cluster-Firmware erfolgreich bestanden wurde.

Command: genSymKey -t 16 -s 2048 -l generic-mV2 -m_value 2 -u 6 -attest Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Created. Key Handle: 9 Attestation Check : [PASS] Cluster Error Status Node id 1 and err state 0x00000000 : HSM Return: SUCCESS Node id 0 and err state 0x00000000 : HSM Return: SUCCESS
Beispiel : Erstellen und Untersuchen eines Schlüssels

Dieser Befehl erstellt einen DES Dreifachschlüssel mit einer 3DES_shared Bezeichnung und der IT-02 ID. Der Schlüssel kann von dem aktuellen Benutzer und den Benutzern 4 und 5 verwendet werden. Der Befehl schlägt fehl, wenn die ID im Cluster nicht eindeutig ist oder wenn der aktuelle Benutzer der Benutzer 4 oder 5 ist.

Die Ausgabe zeigt, dass der neue Schlüssel das Schlüssel-Handle 7 aufweist.

Command: genSymKey -t 21 -s 24 -l 3DES_shared -id IT-02 -u 4,5 Cfm3GenerateSymmetricKey returned: 0x00 : HSM Return: SUCCESS Symmetric Key Created. Key Handle: 7 Cluster Error Status Node id 0 and err state 0x00000000 : HSM Return: SUCCESS

Um zu überprüfen, ob der neue DES 3-Schlüssel dem aktuellen Benutzer gehört und mit den Benutzern 4 und 5 geteilt wird, verwenden SiegetKeyInfo. Der Befehl verwendet das Handle, das dem neuen Schlüssel zugewiesen wurde (Key Handle: 7).

Die Ausgabe bestätigt, dass der Schlüssel im Besitz des Benutzers 3 ist und gemeinsam mit den Benutzern 4 und 5 verwendet wird.

Command: getKeyInfo -k 7 Cfm3GetKey returned: 0x00 : HSM Return: SUCCESS Owned by user 3 also, shared to following 2 user(s): 4, 5

Um die anderen Eigenschaften des Schlüssels zu bestätigen, verwenden Sie getAttribute. Der erste Befehl verwendet getAttribute, um alle Attribute (-a 512) von Schlüssel-Handle 7 (-o 7) abzurufen. Sie werden in die Datei attr_7 geschrieben. Der zweite Befehl verwendet cat, um den Inhalt der attr_7-Datei abzurufen.

Dieser Befehl bestätigt, dass es sich bei Schlüssel 7 um einen symmetrischen Schlüssel (3) mit 192 Bit DES (OBJ_ATTR_VALUE_LEN 0x00000018OBJ_ATTR_KEY_TYPE 0x15oder 24 ByteOBJ_ATTR_CLASS 0x04) mit der Bezeichnung () und der ID 3DES_shared (OBJ_ATTR_LABEL 3DES_shared) handelt. IT_02 OBJ_ATTR_ID IT-02 Der Schlüssel ist persistent (OBJ_ATTR_TOKEN 0x01) und extrahierbar (OBJ_ATTR_EXTRACTABLE 0x01) und kann für das Verschlüsseln, Entschlüsseln und Verpacken verwendet werden.

Tipp

Um die Attribute eines von Ihnen erstellten Schlüssels wie Typ, Länge, Bezeichnung und ID zu ermitteln, verwenden Sie. getAttribute Um die Schlüssel für einen bestimmten Benutzer zu finden, verwenden Sie getKeyInfo. Um Schlüssel anhand ihrer Attributwerte zu finden, verwenden Sie findKey.

Hilfe zur Interpretation der Schlüsselattribute finden Sie unter AWS CloudHSM Referenz zu einem Schlüsselattribut für KMU.

Command: getAttribute -o 7 -a 512 -out attr_7 got all attributes of size 444 attr cnt 17 Attributes dumped into attr_7 file Cfm3GetAttribute returned: 0x00 : HSM Return: SUCCESS $ cat attr_7 OBJ_ATTR_CLASS 0x04 OBJ_ATTR_KEY_TYPE 0x15 OBJ_ATTR_TOKEN 0x01 OBJ_ATTR_PRIVATE 0x01 OBJ_ATTR_ENCRYPT 0x01 OBJ_ATTR_DECRYPT 0x01 OBJ_ATTR_WRAP 0x00 OBJ_ATTR_UNWRAP 0x00 OBJ_ATTR_SIGN 0x00 OBJ_ATTR_VERIFY 0x00 OBJ_ATTR_LOCAL 0x01 OBJ_ATTR_SENSITIVE 0x01 OBJ_ATTR_EXTRACTABLE 0x01 OBJ_ATTR_LABEL 3DES_shared OBJ_ATTR_ID IT-02 OBJ_ATTR_VALUE_LEN 0x00000018 OBJ_ATTR_KCV 0x59a46e
Tipp

Um die Schlüssel, die Sie mit diesen Beispielen erstellen, für HMAC Operationen zu verwenden, müssen Sie OBJ_ATTR_VERIFY TRUE nach dem Generieren des Schlüssels festlegen OBJ_ATTR_SIGN und zu. Um diese Werte festzulegen, verwenden Sie setAttribute inCMU. Weitere Informationen finden Sie unter setAttribute.

Parameter

-h

Zeigt Hilfe für den Befehl an.

Erforderlich: Ja

-t

Gibt den Typ des symmetrischen Schlüssels an. Geben Sie die Konstante ein, die den Schlüsseltyp darstellt. Um beispielsweise einen AES Schlüssel zu erstellen, geben Sie ein-t 31.

Zulässige Werte:

  • 16: GENERIC_ SECRET. Ein generischer geheimer Schlüssel ist ein Byte-Array, das keinem bestimmten Standard entspricht, z. B. den Anforderungen für einen AES Schlüssel.

  • 18: RC4. RC4Schlüssel sind im FIPS -Mode nicht gültig HSMs

  • 21: Dreifach DES (3DES). Gemäß den NIST Leitlinien ist dies für Cluster, die sich nach 2023 im FIPS Modus befinden, nicht zulässig. Für Cluster, die sich nicht im FIPS Modus befinden, ist dies auch nach 2023 zulässig. Details dazu finden Sie unter FIPS140-Konformität: Der Mechanismus wird 2024 nicht mehr unterstützt.

  • 31: AES

Erforderlich: Ja

-s

Gibt die Schlüsselgröße in Byte an. Um beispielsweise einen 192-Bit-Schlüssel zu erstellen, geben Sie 24 ein.

Gültige Werte für jeden Schlüsseltyp:

  • AES: 16 (128 Bit), 24 (192 Bit), 32 (256 Bit)

  • 3DES: 24 (192 Bit)

  • Allgemeiner geheimer Schlüssel: <3584 (28672 Bit)

Erforderlich: Ja

-l

Gibt eine benutzerdefinierte Bezeichnung für den Schlüssel an. Geben Sie eine Zeichenfolge ein.

Sie können eine beliebige Phrase verwenden, die Ihnen bei der Identifizierung des Schlüssels hilft. Da die Bezeichnung nicht eindeutig sein muss, können Sie sie verwenden, um Schlüssel zu gruppieren und zu kategorisieren.

Erforderlich: Ja

-attest

Führt eine Integritätsprüfung durch, die sicherstellt, dass die Firmware, auf der der Cluster läuft, nicht manipuliert wurde.

Standard: Keine Bescheinigungsprüfung.

Erforderlich: Nein

-id

Gibt einen benutzerdefinierten Bezeichner für den Schlüssel an. Geben Sie eine Zeichenfolge ein, die im Cluster eindeutig ist. Der Standardwert ist eine leere Zeichenfolge.

Standard : Kein ID-Wert.

Erforderlich: Nein

-min_srv

Gibt die Mindestanzahl HSMs an, für die der Schlüssel synchronisiert wird, bevor der Wert des -timeout Parameters abläuft. Falls der Schlüssel nicht in der zulässigen vorgegebenen Zeit mit der angegebenen Anzahl von Servern synchronisiert wird, wird er nicht erstellt.

AWS CloudHSM synchronisiert automatisch jeden Schlüssel mit jedem Schlüssel HSM im Cluster. Um Ihren Prozess zu beschleunigen, setzen Sie den Wert von min_srv auf weniger als die Anzahl von HSMs im Cluster und legen Sie einen niedrigen Timeout-Wert fest. Beachten Sie jedoch, dass einige Anfragen möglicherweise keinen Schlüssel generieren.

Standard: 1

Erforderlich: Nein

-m_value

Gibt die Anzahl der Benutzer an, die einen kryptografischen Vorgang genehmigen müssen, der den Schlüssel verwendet. Geben Sie einen Wert von 0 bis 8 ein.

Dieser Parameter legt eine Quorum-Authentifizierungsanforderung für den Schlüssel fest. Der Standardwert, 0, deaktiviert die Quorum-Authentifizierungsfunktion für den Schlüssel. Wenn die Quorumauthentifizierung aktiviert ist, muss die angegebene Anzahl von Benutzern ein Token signieren, um kryptografische Operationen, bei denen der Schlüssel verwendet wird, sowie Operationen, bei denen der Schlüssel gemeinsam genutzt oder die gemeinsame Nutzung aufgehoben wird, zu genehmigen.

Um den Wert m_value eines Schlüssels zu ermitteln, verwenden Sie getKeyInfo.

Dieser Parameter ist nur gültig, wenn der -u-Parameter im Befehl den Schlüssel für ausreichend Benutzer freigibt, um die m_value-Anforderung zu erfüllen.

Standard: 0

Erforderlich: Nein

-nex

Macht den Schlüssel nicht extrahierbar. Der generierte Schlüssel kann nicht aus dem exportiert werdenHSM.

Standard: Der Schlüssel ist extrahierbar.

Erforderlich: Nein

-sess

Erstellt einen Schlüssel, der nur in der aktuellen Sitzung existiert. Der Schlüssel kann nach Ende der Sitzung nicht wiederhergestellt werden.

Verwenden Sie diesen Parameter, wenn Sie einen Schlüssel zum Packen nur für kurze Zeit benötigen, z. B. einen Schlüssel, der einen anderen Schlüssel verschlüsselt und dann schnell entschlüsselt. Verwenden Sie keinen Sitzungsschlüssel, um Daten zu verschlüsseln, die Sie nach dem Ende der Sitzung möglicherweise entschlüsseln müssen.

Um einen Sitzungsschlüssel in einen persistenten (Token-) Schlüssel zu ändern, verwenden Sie setAttribute.

Standard: Der Schlüssel ist persistent.

Erforderlich: Nein

-timeout

Gibt an, wie lange (in Sekunden) der Befehl darauf wartet, dass ein Schlüssel mit der im min_srv Parameter HSMs angegebenen Anzahl von synchronisiert wird.

Dieser Parameter ist nur gültig, wenn der min_srv-Parameter auch im Befehl verwendet wird.

Voreinstellung: Keine Zeitüberschreitung. Der Befehl wartet auf unbestimmte Zeit und kehrt erst zurück, wenn der Schlüssel mit der Mindestanzahl von Servern synchronisiert ist.

Erforderlich: Nein

-u

Gibt den Schlüssel für die angegebenen Benutzer frei. Dieser Parameter gibt anderen HSM Krypto-Benutzern (CUs) die Erlaubnis, diesen Schlüssel für kryptografische Operationen zu verwenden.

Geben Sie eine durch Kommas getrennte HSM Benutzerliste einIDs, z. B. -. u 5,6 Geben Sie nicht die HSM Benutzer-ID des aktuellen Benutzers an. Um den HSM Benutzer IDs von CUs on the zu findenHSM, verwenden Sie listUsers. Verwenden Sie in der Datei cloudhsm_mgmt_util, um bestehende Schlüssel zu teilen oder shareKeyderen Freigabe aufzuheben.

Standard: Nur der aktuelle Benutzer kann den Schlüssel verwenden.

Erforderlich: Nein

Verwandte Themen