Verwendung vertrauenswürdiger Schlüssel in AWS CloudHSM - 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.

Verwendung vertrauenswürdiger Schlüssel in AWS CloudHSM

AWS CloudHSM unterstützt Trusted Key Wrapping, um Datenschlüssel vor Insider-Bedrohungen zu schützen. In diesem Thema wird beschrieben, wie Vertrauenswürdige Schlüssel zum Schutz von Daten erstellt werden.

Grundlegendes zu vertrauenswürdigen Schlüsseln

Ein vertrauenswürdiger Schlüssel ist ein Schlüssel, der zum Umschließen anderer Schlüssel verwendet wird und den Administratoren und Cryptographic Officers (COs) anhand dieses Attributs CKA_TRUSTED ausdrücklich als vertrauenswürdig identifizieren. Darüber hinaus geben Administratoren und Cryptographic Officers (COs) anhand von CKA_UNWRAP_TEMPLATE und verwandter Attribute an, welche Aktionen Datenschlüssel ausführen können, wenn sie durch einen vertrauenswürdigen Schlüssel entpackt wurden. Datenschlüssel, die durch den vertrauenswürdigen Schlüssel entpackt wurden, müssen auch diese Attribute enthalten, damit der Entpackvorgang erfolgreich ist. Dadurch wird sichergestellt, dass entpackte Datenschlüssel nur für die von Ihnen beabsichtigte Verwendung zulässig sind.

Verwenden Sie das Attribut CKA_WRAP_WITH_TRUSTED, um alle Datenschlüssel zu identifizieren, die Sie mit vertrauenswürdigen Schlüsseln umschließen möchten. Auf diese Weise können Sie Datenschlüssel einschränken, sodass Anwendungen nur vertrauenswürdige Schlüssel verwenden können, um sie zu entpacken. Sobald Sie dieses Attribut für die Datenschlüssel festgelegt haben, ist das Attribut schreibgeschützt und kann nicht mehr geändert werden. Wenn diese Attribute vorhanden sind, können Anwendungen Ihre Datenschlüssel nur mit den Schlüsseln entpacken, denen Sie vertrauen, und Entpackungen führen immer zu Datenschlüsseln mit Attributen, die einschränken, wie diese Schlüssel verwendet werden können.

Vertrauenswürdige Schlüsselattribute

Mit den folgenden Attributen können Sie einen Schlüssel als vertrauenswürdig markieren, angeben, dass ein Datenschlüssel nur mit einem vertrauenswürdigen Schlüssel ein- und ausgepackt werden kann, und steuern, was ein Datenschlüssel nach dem Entpacken tun kann:

  • CKA_TRUSTED: Wenden Sie dieses Attribut (zusätzlich zu CKA_UNWRAP_TEMPLATE) auf den Schlüssel an, der Datenschlüssel umhüllt, um anzugeben, dass ein Administrator oder Crypto Officer (CO) die erforderliche Sorgfalt walten lässt und diesem Schlüssel vertraut. Nur ein Administrator oder CO kann CKA_TRUSTED einstellen. Der Crypto-Benutzer (CU) besitzt den Schlüssel, aber nur ein CO kann sein CKA_TRUSTED-Attribut festlegen.

  • CKA_WRAP_WITH_TRUSTED: Wenden Sie dieses Attribut auf einen exportierbaren Datenschlüssel an, um anzugeben, dass Sie diesen Schlüssel nur mit Schlüsseln umschließen können, die als CKA_TRUSTED markiert sind. Sobald Sie CKA_WRAP_WITH_TRUSTED auf „true“ setzen, wird das Attribut schreibgeschützt und Sie können das Attribut nicht mehr ändern oder entfernen.

  • CKA_UNWRAP_TEMPLATE: Wenden Sie dieses Attribut (zusätzlich zu CKA_TRUSTED) auf den Wrapping-Schlüssel an, um anzugeben, welche Attributnamen und -werte der Service automatisch auf Datenschlüssel anwenden muss, die der Dienst entpackt. Wenn eine Anwendung einen Schlüssel zum Entpacken einreicht, kann sie auch ihre eigene Entpackungsvorlage bereitstellen. Wenn Sie eine Unwrap-Vorlage angeben und die Anwendung eine eigene Unwrap-Vorlage bereitstellt, verwendet das HSM beide Vorlagen, um Attributnamen und -werte auf den Schlüssel anzuwenden. Wenn jedoch ein Wert in der CKA_UNWRAP_TEMPLATE für den Wrapping-Schlüssel mit einem Attribut kollidiert, das von der Anwendung während der Unwrap-Anfrage bereitgestellt wird, schlägt die Unwrap-Anfrage fehl.

Weitere Informationen über Attribute finden Sie in den folgenden Themen:

Wie verwendet man vertrauenswürdige Schlüssel, um Datenschlüssel zu umschließen

Um einen vertrauenswürdigen Schlüssel zum Umschließen eines Datenschlüssels zu verwenden, müssen Sie drei grundlegende Schritte ausführen:

  1. Für den Datenschlüssel, den Sie mit einem vertrauenswürdigen Schlüssel umschließen möchten, setzen Sie dessen CKA_WRAP_WITH_TRUSTED-Attribut auf „true“.

  2. Setzen Sie für den vertrauenswürdigen Schlüssel, mit dem Sie den Datenschlüssel umschließen möchten, dessen CKA_TRUSTED-Attribut auf „true“.

  3. Verwenden Sie den vertrauenswürdigen Schlüssel, um den Datenschlüssel zu umschließen.

Schritt 1: Das Datenschlüsselattribut CKA_WRAP_WITH_TRUSTED auf „true“ setzen

Wählen Sie für den Datenschlüssel, den Sie umschließen möchten, eine der folgenden Optionen, um das CKA_WRAP_WITH_TRUSTED-Schlüsselattribut auf „true“ zu setzen. Dadurch wird der Datenschlüssel eingeschränkt, so dass Anwendungen nur vertrauenswürdige Schlüssel verwenden können, um ihn zu verschlüsseln.

Option 1: Wenn Sie einen neuen Schlüssel generieren, setzen Sie CKA_WRAP_WITH_TRUSTED auf „true“

Generieren Sie einen Schlüssel mit PKCS #11, JCE oder CloudHSM-CLI. Weitere Einzelheiten finden Sie in den folgenden Beispielen.

PKCS #11

Um einen Schlüssel mit PKCS #11 zu generieren, müssen Sie das CKA_WRAP_WITH_TRUSTED-Attribut des Schlüssels auf „true“ setzen. Wie im folgenden Beispiel gezeigt, tun Sie dies, indem Sie dieses Attribut in die CK_ATTRIBUTE template des Schlüssels aufnehmen und das Attribut dann auf „true“ setzen:

CK_BYTE_PTR label = "test_key"; CK_ATTRIBUTE template[] = { {CKA_WRAP_WITH_TRUSTED, &true_val, sizeof(CK_BBOOL)}, {CKA_LABEL, label, strlen(label)}, ... };

Weitere Informationen finden Sie in unseren öffentlichen Beispielen, die die Schlüsselgenerierung mit PKCS #11 demonstrieren.

JCE

Um einen Schlüssel mit JCE zu generieren, müssen Sie das WRAP_WITH_TRUSTED-Attribut des Schlüssels auf „true“ setzen. Wie im folgenden Beispiel gezeigt, tun Sie dies, indem Sie dieses Attribut in die KeyAttributesMap des Schlüssels aufnehmen und das Attribut dann auf „true“ setzen:

final String label = "test_key"; final KeyAttributesMap keySpec = new KeyAttributesMap(); keySpec.put(KeyAttribute.WRAP_WITH_TRUSTED, true); keySpec.put(KeyAttribute.LABEL, label); ...

Weitere Informationen finden Sie in unseren öffentlichen Beispielen, die die Schlüsselgenerierung mit JCE demonstrieren.

CloudHSM CLI

Um einen Schlüssel mit CloudHSM CLI zu generieren, müssen Sie das wrap-with-trusted-Attribut des Schlüssels auf „true“ setzen. Fügen Sie dazu wrap-with-trusted=true in das entsprechende Argument für den Befehl zur Schlüsselgenerierung ein:

  • Bei symmetrischen Schlüsseln fügen Sie wrap-with-trusted zum attributes-Argument hinzu.

  • Bei öffentlichen Schlüsseln fügen Sie wrap-with-trusted zum public-attributes-Argument hinzu.

  • Bei privaten Schlüsseln fügen Sie wrap-with-trusted zum private-attributes-Argument hinzu.

Weitere Informationen zur Generierung von Schlüsselpaaren finden Sie unter Schlüssel generate-asymmetric-pair .

Weitere Informationen zur Generierung von symmetrischen Schlüsseln finden Sie unter key generate-symmetric .

Option 2: Wenn Sie einen vorhandenen Schlüssel verwenden, verwenden Sie die CloudHSM CLI, um CKA_WRAP_WITH_TRUSTED auf „true“ zu setzen

Gehen Sie wie folgt vor, um das CKA_WRAP_WITH_TRUSTED-Attribut eines vorhandenen Schlüssels auf „true“ zu setzen:

  1. Verwenden Sie den login-Befehl, um sich als Crypto-Benutzer (CU) anzumelden.

  2. Verwenden Sie den key set-attribute-Befehl, um das wrap-with-trusted-Schlüsselattribut auf „true“ zu setzen.

    aws-cloudhsm > key set-attribute --filter attr.label=test_key --name wrap-with-trusted --value true { "error_code": 0, "data": { "message": "Attribute set successfully" } }

Schritt 2: Festlegen von CKA_TRUSTED des vertrauenswürdigen Schlüssels auf „true“

Um einen Schlüssel zu einem vertrauenswürdigen Schlüssel zu machen, muss sein CKA_TRUSTED-Attribut auf „true“ gesetzt werden. Sie können dazu entweder CloudHSM-CLI oder das CloudHSM Management Utility (CMU) verwenden.

Schritt 3. Verwenden Sie den vertrauenswürdigen Schlüssel, um den Datenschlüssel zu umschließen

Codebeispiele finden Sie unter den folgenden Links, um den in Schritt 1 referenzierten Datenschlüssel mit dem vertrauenswürdigen Schlüssel zu verbinden, den Sie in Schritt 2 festgelegt haben. In jedem Beispiel wird gezeigt, wie Schlüssel umgebrochen werden.

Wie entpacke ich einen Datenschlüssel mit einem vertrauenswürdigen Schlüssel

Um einen Datenschlüssel zu entpacken, benötigen Sie einen vertrauenswürdigen Schlüssel, für den CKA_UNWRAP auf „true“ gesetzt ist. Um ein solcher Schlüssel zu sein, muss er auch folgende Kriterien erfüllen:

  • Das CKA_TRUSTED-Attribut des Schlüssels muss auf „true“ gesetzt werden.

  • Der Schlüssel muss anhand von CKA_UNWRAP_TEMPLATE und verwandter Attribute angeben, welche Aktionen Datenschlüssel ausführen können, wenn sie entpackt wurden. Wenn Sie beispielsweise möchten, dass ein entpackter Schlüssel nicht exportierbar ist, legen Sie CKA_EXPORTABLE = FALSE als Teil von CKA_UNWRAP_TEMPLATE fest.

Anmerkung

CKA_UNWRAP_TEMPLATE ist nur mit PKCS #11 verfügbar.

Wenn eine Anwendung einen Schlüssel zum Entpacken einreicht, kann die Anwendung auch ihre eigene Unwrap-Vorlage bereitstellen. Wenn Sie eine Unwrap-Vorlage angeben und die Anwendung eine eigene Unwrap-Vorlage bereitstellt, verwendet das HSM beide Vorlagen, um Attributnamen und -werte auf den Schlüssel anzuwenden. Wenn jedoch während der Entpackungsanforderung ein Wert in CKA_UNWRAP_TEMPLATE des vertrauenswürdigen Schlüssels mit einem von der Anwendung bereitgestellten Attribut in Konflikt gerät, schlägt die Entpackungsanforderung fehl.

Ein Beispiel für das Entpacken eines Datenschlüssels mit einem vertrauenswürdigen Schlüssel finden Sie in diesem PKCS-#11-Beispiel.