View a markdown version of this page

Bewährte Verfahren für die AWS Encryption SDK - AWS Encryption SDK

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.

Bewährte Verfahren für die AWS Encryption SDK

Das AWS Encryption SDK wurde entwickelt, um es Ihnen zu erleichtern, Ihre Daten mithilfe von Industriestandards und bewährten Verfahren zu schützen. Während viele bewährte Methoden in Standardwerten für Sie ausgewählt wurden, sind einige Methoden optional, werden aber empfohlen, wann immer dies praktikabel ist.

Verwenden Sie die neueste Version

Wenn Sie beginnen AWS Encryption SDK, die zu verwenden, verwenden Sie die neueste Version, die in Ihrer bevorzugten Programmiersprache angeboten wird. Wenn Sie die verwendet haben AWS Encryption SDK, aktualisieren Sie so schnell wie möglich auf die jeweils neueste Version. Dadurch wird sichergestellt, dass Sie die empfohlene Konfiguration verwenden und die neuen Sicherheitseigenschaften zum Schutz Ihrer Daten nutzen. Einzelheiten zu den unterstützten Versionen, einschließlich Anleitungen zur Migration und Bereitstellung, finden Sie unter Support und Wartung undVersionen von AWS Encryption SDK.

Wenn eine neue Version Elemente in Ihrem Code als veraltet markiert, ersetzen Sie sie so schnell wie möglich. Veraltete Warnungen und Codekommentare empfehlen in der Regel eine gute Alternative.

Um wichtige Upgrades einfacher und weniger fehleranfällig zu machen, bieten wir gelegentlich eine temporäre oder vorübergehende Version an. Verwenden Sie diese Versionen und die dazugehörige Dokumentation, um sicherzustellen, dass Sie Ihre Anwendung aktualisieren können, ohne Ihren Produktionsablauf zu unterbrechen.

Verwenden Sie Standardwerte

Die Standardwerte des AWS Encryption SDK Entwurfs werden anhand der Best Practices übernommen. Verwenden Sie sie, wann immer möglich. Für Fälle, in denen die Standardeinstellung nicht praktikabel ist, bieten wir Alternativen an, z. B. Algorithmus-Suites ohne Signierung. Wir bieten auch fortgeschrittenen Benutzern die Möglichkeit, Anpassungen vorzunehmen, z. B. benutzerdefinierte Schlüsselringe, Master-Key-Anbieter und Kryptographiematerialmanager (CMMs). Verwenden Sie diese fortschrittlichen Alternativen mit Vorsicht und lassen Sie Ihre Auswahl nach Möglichkeit von einem Sicherheitsingenieur überprüfen.

Verwenden Sie einen Verschlüsselungskontext

Um die Sicherheit Ihrer kryptografischen Operationen zu verbessern, fügen Sie allen Anfragen zur Datenverschlüsselung einen Verschlüsselungskontext mit einem aussagekräftigen Wert hinzu. Die Verwendung eines Verschlüsselungskontexts ist optional, aber wir empfehlen dies als bewährte Methode für die Kryptografie. Ein Verschlüsselungskontext stellt zusätzliche authentifizierte Daten (AAD) für die authentifizierte Verschlüsselung in der bereit. AWS Encryption SDK Obwohl der Verschlüsselungskontext nicht geheim ist, kann er Ihnen helfen, die Integrität und Authentizität Ihrer verschlüsselten Daten zu schützen.

In der AWS Encryption SDK geben Sie nur beim Verschlüsseln einen Verschlüsselungskontext an. Beim Entschlüsseln AWS Encryption SDK verwendet der den Verschlüsselungskontext im Header der verschlüsselten Nachricht, die AWS Encryption SDK zurückgegeben wird. Bevor Ihre Anwendung Klartextdaten zurückgibt, stellen Sie sicher, dass der Verschlüsselungskontext, den Sie zum Verschlüsseln der Nachricht verwendet haben, in dem Verschlüsselungskontext enthalten ist, der zum Entschlüsseln der Nachricht verwendet wurde. Einzelheiten finden Sie in den Beispielen in Ihrer Programmiersprache.

Wenn Sie die Befehlszeilenschnittstelle verwenden, AWS Encryption SDK überprüft das den Verschlüsselungskontext für Sie.

Erforderlicher Verschlüsselungskontext mit der Material Providers Library

Beginnend mit Versionen von AWS Encryption SDK , die die AWS Cryptographic Material Providers Library (MPL) integrieren (z. B. Version 3. x und höher der AWS-Verschlüsselungs-SDK for Java und Version 4. x und höher von AWS-Verschlüsselungs-SDK for Python), können Sie ein CMM für den erforderlichen Verschlüsselungskontext konfigurieren, das ausgewählte Schlüssel für den Verschlüsselungskontext als erforderlich markiert. Die erforderlichen Schlüssel für den Verschlüsselungskontext und ihre Werte sind weiterhin als zusätzliche authentifizierte Daten (AAD) an den Chiffretext gebunden, aber die Schlüssel werden nicht im verschlüsselten Nachrichtenheader gespeichert. Der Aufrufer muss beim Entschlüsseln dieselben erforderlichen Schlüssel und Werte für den Verschlüsselungskontext angeben. Andernfalls schlägt die Entschlüsselung fehl. Dadurch wird die Chiffretextgröße für den Verschlüsselungskontext reduziert, über den der Anrufer bereits verfügt, während die Authentifizierungs- und Integritätseigenschaften des Verschlüsselungskontextes erhalten bleiben.

Cross-version und sprachübergreifende Kompatibilität

Nachrichten, die den gesamten Verschlüsselungskontext im Header enthalten (erzeugt von AWS Encryption SDK Versionen, die keinen erforderlichen Verschlüsselungskontext CMM konfigurieren), können von jeder kompatiblen AWS Encryption SDK Version entschlüsselt werden, einschließlich Versionen, die älter als die MPL-Integration sind. Nachrichten, die mit einem erforderlichen Verschlüsselungskontext (CMM) erstellt wurden, können nur von AWS Encryption SDK Versionen entschlüsselt werden, die das MPL integrieren, und der Aufrufer muss bei der Entschlüsselung die erforderlichen Schlüssel und Werte für den Verschlüsselungskontext angeben. Weitere Hinweise dazu, welche Sprachversionen die MPL integrieren, finden Sie unter. AWS Encryption SDK Programmiersprachen Einzelheiten zur versionsübergreifenden Kompatibilität finden Sie unter. Versionen von AWS Encryption SDK

Schützen Sie Ihre Verpackungsschlüssel

Der AWS Encryption SDK generiert einen eindeutigen Datenschlüssel zum Verschlüsseln jeder Klartextnachricht. Anschließend wird der Datenschlüssel mit den von Ihnen angegebenen Schlüsseln verschlüsselt. Wenn Ihre Wrapping-Schlüssel verloren gehen oder gelöscht werden, können Ihre verschlüsselten Daten nicht wiederhergestellt werden. Wenn Ihre Schlüssel nicht gesichert sind, sind Ihre Daten möglicherweise anfällig.

Verwenden Sie Umschließungsschlüssel, die durch eine sichere Schlüsselinfrastruktur wie AWS Key Management Service (AWS KMS) geschützt sind. Wenn Sie unformatierte AES- oder RSA-Schlüssel verwenden, verwenden Sie eine zufällige Quelle und einen dauerhaften Speicher, der Ihren Sicherheitsanforderungen entspricht. Das Generieren und Speichern von Wrapping-Schlüsseln in einem Hardware-Sicherheitsmodul (HSM) oder einem Dienst, der beispielsweise HSMs bereitstellt AWS CloudHSM, ist eine bewährte Methode.

Verwenden Sie die Autorisierungsmechanismen Ihrer Schlüsselinfrastruktur, um den Zugriff auf Ihre Wrapping-Schlüssel auf die Benutzer zu beschränken, die ihn benötigen. Implementieren Sie Best-Practice-Prinzipien, wie z. B. das Prinzip der geringsten Zugriffsrechte. Verwenden Sie bei der Verwendung wichtige Richtlinien und IAM-Richtlinien, die Best-Practice-Prinzipien umsetzen. AWS KMS keys

Geben Sie Ihre Wrapping-Schlüssel an

Es empfiehlt sich immer, Ihre Wrapping-Schlüssel sowohl beim Entschlüsseln als auch beim Verschlüsseln explizit anzugeben. Wenn Sie dies tun, AWS Encryption SDK verwendet das nur die Schlüssel, die Sie angeben. Diese Vorgehensweise stellt sicher, dass Sie nur die Verschlüsselungsschlüssel verwenden, die Sie beabsichtigen. Beim AWS KMS Umschließen von Schlüsseln verbessert es auch die Leistung, indem verhindert wird, dass Sie versehentlich Schlüssel in einer anderen Region oder in einer anderen Region verwenden AWS-Konto oder versuchen, sie mit Schlüsseln zu entschlüsseln, zu deren Verwendung Sie nicht berechtigt sind.

Bei der Verschlüsselung müssen Sie für die Schlüsselringe und Masterkey-Anbieter, die im Lieferumfang enthalten sind, das Umschließen von Schlüsseln AWS Encryption SDK angeben. Sie verwenden alle und nur die von Ihnen angegebenen Wrapping-Schlüssel. Beim Verschlüsseln und Entschlüsseln mit unformatierten AES-Schlüsselbändern, RSA-Schlüsselbändern usw. müssen Sie außerdem das Umschließen von Schlüsseln angeben. JCEMasterKeys

Bei der Entschlüsselung mit AWS KMS Schlüsselbändern und Masterkey-Providern müssen Sie jedoch nicht angeben, dass Schlüssel umschlossen werden. Die AWS Encryption SDK können den Schlüsselbezeichner aus den Metadaten des verschlüsselten Datenschlüssels abrufen. Die Angabe von Wrapping-Schlüsseln ist jedoch eine bewährte Methode, die wir empfehlen.

Um diese bewährte Methode bei der Arbeit mit dem AWS KMS Umbrechen von Schlüsseln zu unterstützen, empfehlen wir Folgendes:

  • Verwenden Sie AWS KMS Schlüsselringe, die das Umschließen von Schlüsseln angeben. Beim Verschlüsseln und Entschlüsseln verwenden diese Schlüsselringe nur die angegebenen Umfassungsschlüssel, die Sie angeben.

  • Verwenden Sie bei der Verwendung von AWS KMS Masterschlüsseln und Masterkey-Providern die in Version 1.7 eingeführten Konstruktoren für den strikten Modus. x der AWS Encryption SDK. Sie erstellen Anbieter, die nur mit den von Ihnen angegebenen Wrapping-Schlüsseln ver- und entschlüsseln. Konstruktoren für Masterkey-Anbieter, die immer mit einem beliebigen Wrapping-Schlüssel entschlüsseln, sind in Version 1.7 veraltet. x und in Version 2.0 gelöscht. x.

Wenn es nicht praktikabel ist, AWS KMS Wrapping-Schlüssel für die Entschlüsselung anzugeben, können Sie Discovery-Anbieter verwenden. Die AWS Encryption SDK in C und C JavaScript unterstützten AWS KMS Discovery-Schlüsselringe. Masterkey-Anbieter mit einem Discovery-Modus sind für Java und Python in den Versionen 1.7 verfügbar. x und später. Diese Discovery-Anbieter, die nur zum Entschlüsseln mit AWS KMS Wrapping-Schlüsseln verwendet werden, weisen ausdrücklich an, jeden Wrapping-Schlüssel AWS Encryption SDK zu verwenden, der einen Datenschlüssel verschlüsselt hat.

Wenn Sie einen Discovery-Provider verwenden müssen, verwenden Sie dessen Discovery-Filterfunktionen, um die Anzahl der verwendeten Wrapping-Schlüssel einzuschränken. Beispielsweise verwendet der AWS KMS regionale Discovery-Schlüsselbund nur die Wrapping-Schlüssel eines bestimmten AWS-Region Objekts. Sie können AWS KMS Schlüsselringe und AWS KMS Masterkey-Anbieter auch so konfigurieren, dass nur die speziellen Wrapping-Schlüssel verwendet werden. AWS-Konten Verwenden Sie außerdem wie immer wichtige Richtlinien und IAM-Richtlinien, um den Zugriff auf Ihre AWS KMS Wrapping-Schlüssel zu kontrollieren.

Verwenden Sie digitale Signaturen

Es hat sich bewährt, beim Signieren eine Algorithmus-Suite zu verwenden. Digitale Signaturen stellen sicher, dass der Nachrichtenabsender autorisiert war, die Nachricht zu senden, und schützen die Integrität der Nachricht. Alle Versionen des AWS Encryption SDK Nutzungsalgorithmus sind standardmäßig mit Signierung ausgestattet.

Wenn Ihre Sicherheitsanforderungen keine digitalen Signaturen beinhalten, können Sie eine Algorithmus-Suite ohne digitale Signaturen auswählen. Wir empfehlen jedoch die Verwendung digitaler Signaturen, insbesondere wenn eine Benutzergruppe Daten verschlüsselt und eine andere Gruppe von Benutzern diese Daten entschlüsselt.

Setzen Sie auf Schlüsselverpflichtung

Es hat sich bewährt, die Sicherheitsfunktion Key Commitment zu verwenden. Durch die Überprüfung der Identität des eindeutigen Datenschlüssels, mit dem Ihre Daten verschlüsselt wurden, verhindert Key Commitment, dass Sie Chiffretext entschlüsseln, der zu mehr als einer Klartextnachricht führen könnte.

Der AWS Encryption SDK bietet volle Unterstützung für das Verschlüsseln und Entschlüsseln mit Key Commitment ab Version 2.0. x. Standardmäßig werden alle Ihre Nachrichten mit einem Schlüssel verschlüsselt und entschlüsselt. Version 1.7. X von ihnen AWS Encryption SDK können Chiffretexte mit vollem Einsatz entschlüsseln. Es wurde entwickelt, um Benutzern früherer Versionen bei der Bereitstellung von Version 2.0 zu helfen. x erfolgreich.

Zur Unterstützung von Key Commitment gehören neue Algorithmus-Suites und ein neues Nachrichtenformat, das einen Chiffretext erzeugt, der nur 30 Byte größer ist als ein Chiffretext ohne Key Commitment. Das Design minimiert die Auswirkungen auf die Leistung, sodass die meisten Benutzer die Vorteile von Key Commitment nutzen können. Wenn Ihre Anwendung sehr empfindlich auf Größe und Leistung reagiert, können Sie die Richtlinieneinstellung „Commitment“ verwenden, um die Schlüsselzuweisung zu deaktivieren oder AWS Encryption SDK zu erlauben, Nachrichten ohne Verpflichtung zu entschlüsseln, aber tun Sie dies nur, wenn Sie müssen.

Begrenzen Sie die Anzahl der verschlüsselten Datenschlüssel

Es hat sich bewährt, die Anzahl der verschlüsselten Datenschlüssel in Nachrichten, die Sie entschlüsseln, zu begrenzen, insbesondere in Nachrichten aus nicht vertrauenswürdigen Quellen. Das Entschlüsseln einer Nachricht mit zahlreichen verschlüsselten Datenschlüsseln, die Sie nicht entschlüsseln können, kann zu längeren Verzögerungen führen, Kosten in die Höhe treiben, Ihre Anwendung und andere, die Ihr Konto gemeinsam nutzen, drosseln und Ihre wichtige Infrastruktur möglicherweise erschöpfen. Ohne Einschränkungen kann eine verschlüsselte Nachricht bis zu 65.535 (2^16 - 1) verschlüsselte Datenschlüssel enthalten. Details hierzu finden Sie unter Beschränkung verschlüsselter Datenschlüssel.

Weitere Informationen zu den AWS Encryption SDK Sicherheitsfunktionen, die diesen bewährten Methoden zugrunde liegen, finden Sie im Sicherheitsblog unter Verbesserte clientseitige Verschlüsselung: Explizite KeyIds und wichtige Verpflichtung. AWS