Wie funktionieren Verschlüsselungmechanismen und was ist dabei zu beachten?

Die Envelope-Verschlüsselung wird bei den meisten AWS-Diensten angewendet, die Daten im Namen des Kunden chiffrieren. Durch die Server-seitige Verschlüsselung werden Leistungseinbußen minimiert. Um Daten mittels einer Client-seitigen Verschlüsselung in eigenen Anwendungen zu schützen, sollte der Kunde die Envelope-Verschlüsselung mit AWS KMS oder AWS CloudHSM verwenden. Beide Services verfügen über Software Development Kits (SDKs), mit denen Anwender Verschlüsselungsfunktionen hinzufügen und nutzen können. Das AWS Encryption SDK funktioniert auch bei Anwendungen, die nicht in AWS laufen.

Die Validierung des HSM sollte durch eine vertrauenswürdige Drittpartei erfolgen. So entsprechen die HSMs in AWS KMS und AWS CloudHSM dem FIPS 140-2-Programm des National Institute of Standards and Technology, einem anerkannten Standard für die Evaluierung kryptografischer Module. Hier werden Konzeption und Implementierung auf ihre Sicherheit geprüft. Dazu gehören Funktionen für Schnittstellen, Authentifizierungsmechanismen, physische Sicherheit und Manipulationsverhalten. Auch die Betriebsumgebungen, das Schlüssel-Management sowie elektromagnetische Interferenz und Kompatibilität (EMI/EMC) werden kontrolliert. Häufig erfordern zudem andere sicherheitsbezogene Compliance-Standards, zum Beispiel der internationale Standard der Kreditkartenindustrie (PCI-DSS), eine Verschlüsselung mit einem nach FIPS 140-2-validierten kryptografischen Modul.

Getrennte Schlüsselverwaltung

Die Verwaltung der Zugriffskontrollen liegt im Verantwortungsbereich des Kunden, der die autorisierten Personen sowie die Bedingungen der Verwendung von Schlüsseln definieren muss. Als Beispiel kann dabei AWS KMS dienen. Hier sind die Zugriffskontrollen für die Schlüssel in derselben Richtliniensprache wie der Zugriff auf alle anderen AWS Ressourcen festgelegt. Die Berechtigungskontrollen selbst sind allerdings nicht identisch. Daher erfordert die Zugriffsverwaltung für die Schlüssel einen anderen Mechanismus als bei der Abfrage von Daten. Bei AWS KMS ist auf diese Weise die Festlegung von Administratoren möglich, die nur Haupt-Schlüssel verwalten – oder solche, die nur die dazugehörigen Ver- und Entschlüsselungsoperationen durchführen können. Diese strenge Trennung verhindert die versehentliche Vergabe von Rechten zur Entschlüsselung von Daten.

Grafik: AWS

Auch wenn Schlüssel- und Datenverwaltung getrennt erfolgen, kann die korrekte Konfiguration des Master Keys immer noch überprüft werden, denn AWS KMS sendet die API-Aufrufe der Kunden an CloudTrail. So ist es auch stets nachvollziehbar, welche Person welchen Schlüssel für welche Ressource verwendet hat. Damit ist die Dokumentation für einen Audit wesentlich detaillierter als On-Premises-Mechanismen.

Zur Verschlüsselung von Daten, die zwischen einer Anwendung und dem AWS-Dienst übertragen werden, dient das TLS-Protokoll (Transport Layer Security. Oft verwenden kommerzielle Lösungen auch das Open-Source-Projekt OpenSSL, in dem mindestens 70.000 seiner 500.000 Code-Zeilen TLS implementieren. Diese umfangreiche Code-Basis ist allerdings sehr komplex und daher schwer kontrollierbar. Treten hier Fehler auf, muss die Entwickler-Community aktiv werden und aufwendige Tests durchführen, auch um sicherzustellen, dass durch die Behebung der Fehler keine neuen entstanden sind.

Vereinfachte TLS-Implementierung

Um diesen Herausforderungen zu begegnen, hat AWS eine eigene TLS-Implementierung entwickelt, die eine vollständig überprüfbare und leicht verständliche Netzwerkverschlüsselung bietet. Dazu wurde s2n (Signal to Noise) im Rahmen der Apache-2.0-Lizenz als kleine, schnelle Implementierung im Juni 2015 veröffentlicht und auf GitHub zur Verfügung gestellt. Mithilfe mathematischer Logik lässt sich s2n auf Sicherheit und Richtigkeit testen und dabei auch automatisiert analysieren. Dadurch kann bei jeder Änderung des Codes geprüft werden, ob die s2n-Basis noch korrekt ist. Eine einmal erreichte Sicherheitsstufe bleibt auch bei neuen Code-Versionen dieselbe, denn die mathematischen Nachweise erfolgen automatisch und regelmäßig. Zur Implementierung von TLS sind sowohl Schlüssel als auch digitale Zertifikate nötig, die die Berechtigung für den Besitz der Schlüssel nachweisen. Sie lassen sich mit dem AWS Certificate Manager und AWS Private Certificate Authority in Infrastrukturen mit TLS-Endpunkten unkompliziert ausstellen.