Verschlüsselung von Daten auf AWS S3
This content is more than 4 years old and the cloud moves fast so some information may be slightly out of date.
Das Thema Datensicherheit und damit auch Verschlüsselung ist bei unseren deutschen Amazon Web Services Kunden eigentlich ein Dauerthema. Amazon AWS trägt diesem Bedürfnis zunehmend mehr Rechnung und hat gerade gestern wieder eine entsprechende Erweiterung der S3 Dienste veröffentlicht. Hier nun eine Übersicht, über die von Amazon Web Services angebotenen Verschlüsselungsoptionen für Ihre Daten auf S3:
Transparente Verschlüsselung auf Basis von Amazon AWS gemanagten Keys (bereits seit 11.2011 verfügbar):
- pro Datei (Objekt) auf S3 können Sie unter Properties / Details die Server Side Encryption mit AES256 manuell aktivieren.
- Wenn man Dateien über das API hoch lädt, kann man das natürlich am besten dort aktivieren.
- Die Datei wird mit einem Amazon AWS eigenen Key verschlüsselt und dann auf entsprechenden Storagesystemen gespeichert.
- Beim Abruf der Datei von S3 ist die Entschlüsselung komplett transparent, die Datei wird von den Storagesystemen gelesen, entschlüsselt und ausgeliefert.
- Somit sind Daten verschlüsselt gespeichert, aber Amazon Web Service ist technisch in der Lage, auf die Daten zuzugreifen, wenn AWS z.B. von Regierungsbehörden dazu aufgefordert wird.
" src="https://www.tecracer.com/blog/wp-content/uploads/2014/S3-AES256.jpg">
Transparente Verschlüsselung auf Basis von eigenen Keys (seit dem 12.6.2014 verfügbar):
- dieses neue Feature ist nur über das S3 API verfügbar.
- beim Upload der Datei (PUT) übergeben Sie Ihren eigenen Encryption Key. Mit diesem wird die Datei auf S3 verschlüsselt gespeichert. Zusätzlich wird ein one-way hash (checksum) des Keys generiert und anschließend wird der von ihnen übergebene Encryption Key bei Amazon AWS wieder gelöscht.
- Beim Abruf der Daten von S3 übergeben Sie ihren eigenen Key als Parameter beim GET-Aufruf. S3 entschlüsselt damit die Datei und liefert diese aus.
- Somit sind ihre Daten verschlüsselt gespeichert. Amazon Web Service kann nur mit einem grösseren technischen Aufwand auf Ihre Daten zugreifen (AWS muss dazu nämlich ihren Key abfangen und für die Entschlüsselung nutzen). Ob AWS das tun kann und wird, wenn AWS von Regierungsbehörden dazu aufgefordert wird, ist nicht bekannt.
" src="https://www.tecracer.com/blog/wp-content/uploads/2014/s3_sse_customer_key_2.png">
Client-seitige Verschlüsselung durch Klassen im Java AWS SDK (seit April 2011 verfügbar):
- Dieses Feature ist nur unter Verwendung des AWS Java SDKs verfügbar. (die PHP, .NET, etc. SDKs habe ich nicht geprüft).
- Das AWS Java SDK stellt entsprechende Methoden in der Klasse AmazonS3EncryptionClient bereit, die eine Datei komplett Client-seitig verschlüsselt und dann erst nach AWS S3 hoch lädt.
- Dadurch bleibt der Key komplett bei Ihnen lokal.
- Dateien die von S3 heruntergeladen werden, müssen dann auch wieder entsprechend Client-seitig entschlüsselt werden.
- Da in diesem Fall der Encryption Key bei Amazon Web Services nicht bekannt ist, hat AWS auch nach Aufforderung von entsprechenden Regierungsbehörden keine Möglichkeit, die Daten zu entschlüsseln, es sei denn, man wendet entsprechend zeitaufwändige Algorithmen an, das ist aber ein anderes Thema …
" src="https://www.tecracer.com/blog/wp-content/uploads/2014/S3-aws_java_sdk_encryption_2.png">