Verschlüsselungskontext - AWS Key Management Service

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.

Verschlüsselungskontext

Alle AWS KMS kryptografischen Operationen mit symmetrischen KMS Verschlüsselungsschlüsseln akzeptieren einen Verschlüsselungskontext, einen optionalen Satz nicht geheimer Schlüssel-Wert-Paare, die zusätzliche kontextbezogene Informationen zu den Daten enthalten können. Sie können Verschlüsselungskontext in Encrypt Operationen einfügen, um die Autorisierung und Überprüfbarkeit Ihrer Entschlüsselungsaufrufe AWS KMS zu verbessern. AWS KMS API AWS KMS verwendet den Verschlüsselungskontext als zusätzliche authentifizierte Daten (AAD), um die authentifizierte Verschlüsselung zu unterstützen. Der Verschlüsselungskontext ist kryptografisch an den Chiffretext gebunden, sodass derselbe Verschlüsselungskontext zum Entschlüsseln der Daten erforderlich ist.

Der Verschlüsselungskontext ist nicht geheim und nicht verschlüsselt. Er erscheint als Klartext in AWS CloudTrail -Protokollen, kann also zum Identifizieren und Kategorisieren der kryptografischen Operationen herangezogen werden. Ihr Verschlüsselungskontext sollte keine sensiblen Informationen enthalten. Wir empfehlen, dass Ihr Verschlüsselungskontext die zu verschlüsselnden oder zu entschlüsselnden Daten beschreibt. Wenn Sie z. B. eine Datei verschlüsseln, können Sie einen Teil des Dateipfads als Verschlüsselungskontext verwenden.

"encryptionContext": { "department": "10103.0" }

Bei der Verschlüsselung von Volumes und Snapshots, die mit dem Amazon Elastic Block Store (AmazonEBS) CreateSnapshot-Vorgang erstellt wurden, EBS verwendet Amazon beispielsweise die Volume-ID als Wert für den Verschlüsselungskontext.

"encryptionContext": { "aws:ebs:id": "vol-abcde12345abc1234" }

Sie können den Verschlüsselungskontext auch verwenden, um den Zugriff auf Ihr Konto zu AWS KMS keys verfeinern oder einzuschränken. Sie können den Verschlüsselungskontext als Einschränkung in Erteilungen und als Bedingung in Richtlinien verwenden.

Informationen zur Verwendung des Verschlüsselungskontextes zum Schutz der Integrität verschlüsselter Daten finden Sie im Beitrag So schützen Sie die Integrität Ihrer verschlüsselten Daten durch Verwendung AWS Key Management Service und EncryptionContext im AWS Sicherheitsblog.

Weitere Informationen zum Verschlüsselungskontext.

Regeln für den Verschlüsselungskontext

AWS KMS erzwingt die folgenden Regeln für Schlüssel und Werte im Verschlüsselungskontext.

  • Der Schlüssel und der Wert in einem Verschlüsselungskontextpaar müssen einfache Literalzeichenfolgen sein. Wenn Sie einen anderen Typ verwenden, z. B. eine Ganzzahl oder Gleitkommazahl, interpretiert AWS KMS ihn als Zeichenfolge.

  • Die Schlüssel und Werte in einem Verschlüsselungskontext können Unicode-Zeichen enthalten. Wenn ein Verschlüsselungskontext Zeichen enthält, die in wichtigen Richtlinien oder IAM Richtlinien nicht zulässig sind, können Sie den Verschlüsselungskontext nicht in Richtlinienbedingungsschlüsseln wie kms:EncryptionContext:context-keyund kms:EncryptionContextKeysangeben. Weitere Informationen zu Dokumentenregeln für Schlüsselrichtlinien finden Sie unter Schlüsselrichtlinienformat. Einzelheiten zu den Regeln für IAM Richtliniendokumente finden Sie unter IAMNamensanforderungen im IAMBenutzerhandbuch.

Verschlüsselungskontext in Richtlinien

Der Verschlüsselungskontext wird hauptsächlich verwendet, um Integrität und Authentizität zu überprüfen. Sie können den Verschlüsselungskontext aber auch verwenden, um den Zugriff auf symmetrische Verschlüsselung AWS KMS keys in wichtigen Richtlinien und IAM Richtlinien zu kontrollieren.

Die EncryptionContextKeys Bedingungsschlüssel kmsEncryptionContext:: und kms: erlauben (oder verweigern) eine Berechtigung nur, wenn die Anforderung bestimmte Verschlüsselungskontextschlüssel oder Schlüssel-Wert-Paare enthält.

Die folgende wichtige Richtlinienanweisung ermöglicht es der RoleForExampleApp Rolle beispielsweise, den KMS Schlüssel in Decrypt Vorgängen zu verwenden. Sie verwendet den kms:EncryptionContext:context-key-Bedingungsschlüssel, um diese Berechtigung nur zu erlauben, wenn der Verschlüsselungskontext in der Anforderung ein AppName:ExampleApp-Verschlüsselungskontextpaar enthält.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

Weitere Informationen zu diesen Bedingungskontextschlüsseln finden Sie unter Zustandstasten für AWS KMS.

Verschlüsselungskontext in Erteilungen

Wenn Sie einen Zuschuss erstellen, können Sie Zuschussbeschränkungen einbeziehen, die Bedingungen für die Gewährungsberechtigungen festlegen. AWS KMS unterstützt zwei ErteilungsbeschränkungenEncryptionContextSubset, EncryptionContextEquals und beide beziehen den Verschlüsselungskontext in einer Anforderung für einen kryptografischen Vorgang mit ein. Wenn Sie diese Erteilungseinschränkungen verwenden, sind die Berechtigungen in der Erteilung nur dann wirksam, wenn der Verschlüsselungskontext in der Anforderung für die kryptografische Operation die Anforderungen der Erteilungseinschränkungen erfüllt.

Sie können beispielsweise einer EncryptionContextEquals Grant, die den GenerateDataKeyVorgang ermöglicht, eine Grant-Beschränkung hinzufügen. Bei dieser Einschränkung erlaubt die Erteilung die Operation nur dann, wenn der Verschlüsselungskontext in der Anforderung mit dem Verschlüsselungskontext in der Erteilungseinschränkung übereinstimmen (inkl. Groß-/Kleinschreibung).

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/exampleUser \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --operations GenerateDataKey \ --constraints EncryptionContextEquals={Purpose=Test}

Eine Anforderung wie die folgende vom Empfänger-Prinzipal würde die EncryptionContextEquals-Einschränkung zulassen.

$ aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-spec AES_256 \ --encryption-context Purpose=Test

Weitere Informationen über die Erteilungseinschränkungen finden Sie unter Verwenden von Erteilungs-Einschränkungen. Ausführliche Informationen zu Erteilungen finden Sie unter Zuschüsse in AWS KMS.

Protokollieren des Verschlüsselungskontexts

AWS KMS verwendet AWS CloudTrail , um den Verschlüsselungskontext zu protokollieren, sodass Sie feststellen können, auf welche KMS Schlüssel und Daten zugegriffen wurde. Der Protokolleintrag zeigt genau, welche KMS Schlüssel zum Verschlüsseln oder Entschlüsseln bestimmter Daten verwendet wurden, auf die im Verschlüsselungskontext im Protokolleintrag verwiesen wird.

Wichtig

Da der Verschlüsselungskontext protokolliert wird, sollte er keine vertraulichen Informationen enthalten.

Speichern des Verschlüsselungskontexts

Um die Verwendung eines beliebigen Verschlüsselungskontextes beim Aufruf der Operationen Decrypt oder ReEncrypt zu vereinfachen, können Sie den Verschlüsselungskontext neben den verschlüsselten Daten speichern. Wir empfehlen, dass Sie nur so viel vom Verschlüsselungskontext speichern, dass Sie den vollständigen Verschlüsselungskontext erstellen können, wenn Sie ihn für die Ver- oder Entschlüsselung benötigen.

Wenn der Verschlüsselungskontext beispielsweise der vollständig qualifizierte Pfad zu einer Datei ist, speichern Sie nur einen Teil dieses Pfades mit dem verschlüsselten Dateiinhalt. Wenn Sie dann den vollständigen Verschlüsselungstext benötigen, können Sie ihn aus dem gespeicherten Fragment rekonstruieren. Wenn jemand die Datei verändert (sie beispielsweise umbenennt oder an einen anderen Ort verschiebt), ändert sich der Wert des Verschlüsselungskontextes und die Entschlüsselungsanforderung schlägt fehl.