AWS Key Management Service (1)
Neben den eigentlichen Ver- und Entschlüsselungsoperationen ist es wichtig, die sichere Verwaltung von Schlüsseln zu gewährleisten. Dies umfasst deren Generierung und Speicherung, Berechtigungsfunktionalitäten samt Möglichkeiten der Schlüsselrotation sowie das Erstellen und Verwalten von Backups. In diesem Artikel beleuchten wir den AWS Key Management Service, mit dessen Unterstützung Unternehmen Daten in AWS-Diensten oder eigenen Applikationen verschlüsseln und digital signieren können. Im ersten Teil erklären wir, wie Sie mit Envelope Encryption und Schlüsselhierarchien für Sicherheit sorgen und wie Policies den Schlüsseleinsatz steuern.
Beim AWS Key Management Service (KMS) handelt es sich um einen verwalteten Service, der es ermöglicht, die für kryptografische Vorgänge verwendeten Schlüssel zu erstellen und zu steuern. Der Dienst fungiert als hochverfügbares Schlüsselgenerierungs-, Speicherungs-, Verwaltungs- und Überwachungswerkzeug zum Verschlüsseln oder digitalen Signieren von Daten innerhalb von Anwendungen und zur Steuerung der Verschlüsselung von Daten in AWS-Services, wie zum Beispiel dem Objektspeicher Amazon S3. Typischerweise sind hier symmetrische Schlüssel im Einsatz. Darüber hinaus lassen sich mit KMS auch asymmetrische Schlüssel zur Verschlüsselung oder Signierung erstellen. In diesem Artikel beschäftigen wir uns aber mit symmetrischen Schlüsseln.
Sicherheit durch Envelope Encryption
KMS lässt sich über die Weboberfläche der AWS Management Console, die Befehlszeilenschnittstelle und über RESTful-API-Operationen nutzen, um kryptografische Operationen einer verteilten Flotte von FIPS-140-2-validierten Hardware-Sicherheitsmodulen (HSM) anzufordern. Die KMS-HSM von AWS sind eigenständige Multichip-Hardwarekryptografie-Appliances, die speziell für das Bereitstellen dedizierter kryptografischer Funktionen zur Erfüllung der Sicherheits- und Skalierbarkeitsanforderungen von KMS konzipiert wurden.
Die Verschlüsselungsoperationen, die wir uns in diesem Artikel näher anschauen, nutzen wie erwähnt alle die symmetrische Verschlüsselung sowie das Konzept der sogenannten Envelope Encryption. Dieses kommt in vielen kryptografischen Systemen zum Einsatz. Dabei finden zwei oder mehrere kryptografische Schlüssel zur Sicherung von Daten Verwendung: Das zu verschlüsselnde Objekt wird zunächst mit einem sogenannten Datenschlüssel verschlüsselt, und der wiederum mit einem weiteren Schlüssel, in unserem Fall dem KMS-Key.
Durch diesen Aufbau erhalten wir einige Vorteile: So lässt sich zum Beispiel das Schlüsselmanagement stark vereinfachen, da Sie mehrere Datenschlüssel mit einem KMS-Key verschlüsseln können. Da Sie den Datenschlüssel mit dem KMS-Key codieren, müssen Sie sich nicht um die externe Speicherung des verschlüsselten Datenschlüssels seitens des KMS-Dienstes kümmern – Sie speichern den verschlüsselten Datenschlüssel einfach zusammen mit den verschlüsselten Daten ab.
Policies steuern Schlüsseleinsatz
KMS bietet die Option, eine eigene HSM-basierte kryptografische Hierarchie unter den Schlüsseln einzurichten, die Sie als KMS-Schlüssel verwalten. Diese werden nur auf den HSM und nur für die erforderliche Zeit zur Bearbeitung der jeweiligen kryptografischen Operationen im Speicher zur Verfügung gestellt. Es lassen sich mehrere KMS-Schlüssel erzeugen, die jeweils durch eine eindeutig zuzuordnende Schlüssel-ID dargestellt werden. Nur unter AWS-IAM-Rollen und -Konten, die Sie selbst verwalten, lassen sich eigene KMS-Schlüssel erstellen, löschen oder zum Ver- und Entschlüsseln, Signieren oder Verifizieren von Daten verwenden.
Darüber hinaus können Sie Zugriffskontrollen definieren, die entscheiden, welche Nutzer KMS-Schlüssel verwalten beziehungsweise verwenden können. Dazu erstellen Sie Richtlinien und hängen sie an den Schlüssel an. Mithilfe dieser Policies definieren Sie anwendungsspezifische Verwendungen für Schlüssel für jeden API-Vorgang.
Darüber hinaus unterstützen die meisten AWS-Dienste die Verschlüsselung von Data-at-Rest mit KMS-Schlüsseln. Mit dieser Funktion steuern Sie, wie und wann AWS-Services auf verschlüsselte Daten zugreifen können, indem Sie bestimmen, wie und wann sich auf KMS-Schlüssel zugreifen lässt.
Schlüsselhierarchie verstehen
Um KMS sachgemäß verwenden zu können, ist es essenziell, die verwendete Schlüsselhierarchie sowie die verschiedenen Arten der Schlüssel zu verstehen. Die Schlüsselhierarchie beginnt mit einem logischen Schlüssel, dem KMS-Key. Logischer Schlüssel bedeutet in diesem Zusammenhang, dass der KMS-Key einen Container darstellt, in dem für das Schlüsselmaterial ein sogenannter HSM-Unterstützungsschlüssel (HSM Backing Key, HBK) liegt.
Der HBK wird auf einem von KMS verwalteten Hardware-Sicherheitsmodul generiert und ist so konzipiert, dass er niemals im Klartext aus dem HSM exportiert wird. Es ist außerdem möglich, eigenes Schlüsselmaterial zu erstellen und zu KMS hinzuzufügen. Dieses als "imported key material" oder auch als "Bring Your Own Key" bekannte Verfahren werden wir in diesem Artikel allerdings nicht näher beschreiben.

Innerhalb der Hierarchie eines bestimmten KMS-Keys ist der HBK als eine Art Version des Schlüssels zu verstehen. Bei der Rotation eines KMS-Keys wird ein neuer HBK erstellt und mit dem KMS-Key verbunden. Die alten HBK werden weiterhin vorgehalten und lassen sich zur Entschlüsselung und Überprüfung von zuvor geschützten Daten nutzen. Die KMS-Keys selbst eignen sich nicht zur Verschlüsselung großer Datenmengen – nur bis 4 KByte Payload ist über KMS mit einem KMS-Key direktes Ver- und Entschlüsseln möglich.
Die meisten kryptografischen Operationen fordern zusätzliche HSM-generierte Schlüssel an, die unter Ihrem KMS-Key geschützt sind. Diese Schlüssel heißen auch Kundendatenschlüssel (Customer Data Key, CDK). CDK können verschlüsselt als Cipher-Text oder im Klartext zurückgegeben werden. Alle unter einem KMS-Schlüssel verschlüsselten Objekte (entweder vom Kunden bereitgestellte Daten oder durch den HSM generierte Schlüssel) lassen sich nur auf einem HSM über einen Aufruf durch KMS entschlüsseln.
ln/Simon Philipp und Armin Schneider
Im zweiten Teil der Workshopserie geht es um Authentifizierung und Zugriffskontrolle und wie Sie Richtlinien korrekt nutzen. Außerdem schauen wir uns das Zusammenspiel mit anderen AWS-Diensten an. Im dritten und letzten Teil dreht sich alles um den AWS Secrets Manager.