¿Qué es la encriptación de datos en repososo (Rest)?
Es altamente recomendable encriptar todos los datos en S3, tanto utilizando encriptación en movimiento como encriptación en reposo.
Para encriptar S3 en movimiento, se puede utilizar SSL, esto asegura que los datos enviados a S3 están encriptados mientras transitan usando el protocolo HTTPS.
Para encriptar los datos en reposo, se pueden utilizar varios tipos de encriptación del lado del servidor (Server Side Encryption SSE). S3 encripta los datos a nivel de los objetos mientras escribe en el disco, y los desencripta mientras son accedidos. Toda esta SSE es realizada por S3 y KMS utilizando encriptación estándar avanzada de 256 bit (Advanced Encryption Standard AES). También es posible realizar encriptación de los datos antes de enviar la información a S3.
¿Cuáles son los tipos de encriptación que existen en Amazon S3?
SSE-S3 (AWS Managed Keys)
Esta es es una solución de encriptación en donde AWS maneja la administración de la llave y su protección. Cada objeto es encriptado con una llave única. Y la propia llave es a su ves encriptada por una llave maestra. Una nueva llave maestra es generada cada mes. Los datos encriptados, las llaves encriptadas y las llaves maestras son almacenadas en hosts seguros para mayor protección.
SSE-KMS (AWS KMS Keys).
Esta es una solución completamente integrada en donde Amazon maneja la administración y protección de las llaves de S3, pero el usuario maneja las llaves. SSE-KMS ofrece beneficios adiciones comparados como SSE-S3 como permisos para uso de llaves maestras, lo que provee protección contra acceso no autorizado a los objetos en Amazon S3, y una capa adicional de control. También provee auditorias, de forma que puede saber quien usa su llave para acceder que objeto y cuando se intento acceder a el. KSM también permite ver cualquier fallo en un intento de acceder datos para usuarios que no tenían permiso de desencriptarlos.
SSE-C (Llaves provistas por el cliente “C - Customer”)
Este es utilizado cuando se desea mantener sus propias llaves de encriptación, pero no se desea implementar su propia librería de encriptación. Con SSE-C, AWS ejecutara la encriptación y desencriptación de los objetos, mientras mantiene control completo de las llaves utilizadas para encriptar o desencriptar objetos en S3.
Client Side Encription (Encriptación por parte del cliente)
Se refiere a la encriptación de datos en el lado del cliente de su aplicación, es decir antes de enviarlo a S3, para lo cual se tienen dos opciones.
- Utilizar la llave maestra de AWS KMS.
- Utilizar una llave de encriptación del lado del cliente.