Implementación de Cifrado y Gestión de Claves

Resumimos tipos de claves KMS, cifrado de envolvente, opciones SSE de S3, y cifrado del lado del cliente/servidor.

Que pasaria si alguien interceptara tu archivo mientras se sube a internet? El cifrado es la practica de transformar datos en una forma ilegible para evitar esto. AWS gestiona estas claves de cifrado de forma segura a traves de un servicio llamado KMS.

Las preguntas del examen DVA-C02 en esta area se centran en que metodo de cifrado usar y como gestionar las claves.

 

Que es AWS KMS (Key Management Service)?

KMS es un servicio AWS para crear y gestionar claves de cifrado. Piensa en el como un almacen de llaves de boveda digital. Guarda de forma segura las llaves que bloquean tus datos, permitiendo que solo se usen cuando sea necesario.

 

Tipos de clave KMS

Hay tres tipos segun quien gestione la clave.

Claves administradas por AWS: AWS lo maneja todo automaticamente. Sin costo adicional. La rotacion de claves es automatica. Se usa para la mayoria de los servicios predeterminados. Claves administradas por el cliente (CMK): Tu gestionas directamente las politicas de clave, los ciclos de rotacion y la eliminacion. Se usa cuando se necesita un control de acceso mas detallado. Cuesta $1/mes mas los cargos por llamadas a la API. Claves de propiedad de AWS: Claves utilizadas solo internamente por AWS. No son visibles para los clientes.

 

Cifrado de sobre (Envelope Encryption)

KMS solo puede cifrar directamente datos de hasta 4KB a la vez. Pero los datos del mundo real son mucho mas grandes. El cifrado de sobre resuelve este problema.

Piensa en esto como meter una carta en un sobre y luego guardar ese sobre en una caja fuerte.

Llama a la API GenerateDataKey para crear una clave de datos (la llave que bloquea tu carta). Cifra tus datos reales localmente usando esa clave de datos. Cifra la propia clave de datos usando la clave maestra de KMS (la llave de la caja fuerte). Almacena los datos cifrados junto con la clave de datos cifrada.

Este enfoque minimiza la cantidad de datos enviados directamente a KMS mientras permite cifrar datos grandes de forma segura.

 

Cifrado del lado del servidor en S3 (SSE)

Este es el metodo por el que AWS cifra automaticamente los archivos al almacenarlos en S3. Hay tres opciones segun que clave se use.

| Opcion | Quien gestiona la clave | Caracteristica | |--------|------------------------|----------------| | SSE-S3 | S3 gestiona | Predeterminado. No requiere configuracion. La opcion mas sencilla. | | SSE-KMS | KMS gestiona | Quien uso la clave y cuando se puede rastrear via CloudTrail. Se usa cuando se requiere auditoria de seguridad. | | SSE-C | Tu proporcionas la clave | Para cuando tienes tu propia infraestructura de gestion de claves. Envias la clave en los encabezados de cada solicitud. |

Nota importante: SSE-KMS llama a la API de KMS con cada solicitud de S3. Con trafico intenso, esto puede alcanzar los limites de rendimiento de KMS (throttling). Habilitar S3 Bucket Key reduce drasticamente el numero de llamadas a KMS y mitiga este problema.

 

Cifrado del lado del cliente vs del lado del servidor

Cifrado del lado del servidor: AWS maneja el cifrado y descifrado. Este es el metodo usado en la mayoria de los casos. SSE-S3 y SSE-KMS entran en esta categoria. Cifrado del lado del cliente: Tu app cifra los datos primero y luego los envia a AWS. Piensa en esto como poner el candado antes de meterlo en la caja fuerte. Como ni siquiera AWS puede ver los datos en texto plano, se usa en entornos con requisitos de cumplimiento estrictos.

!Cifrado del lado del cliente vs del lado del servidor

Cifrado en transito

Los datos tambien necesitan cifrado mientras se transmiten por internet. Usar HTTPS/TLS evita que los datos queden expuestos durante la transmision. Agregar la condicion aws:SecureTransport a una politica de bucket S3 puede rechazar directamente las solicitudes que usen HTTP (sin cifrar).

 

Puntos clave del examen

"Cifrar datos grandes de mas de 4KB" -- Cifrado de sobre (GenerateDataKey)

"Registro de auditoria del uso de claves de cifrado (CloudTrail)" -- SSE-KMS

"Cifrado S3 predeterminado, sin configuracion requerida" -- SSE-S3

"Cifrado S3 con clave propia" -- SSE-C

"Mitigar el throttling de SSE-KMS" -- S3 Bucket Key

"Evitar que AWS vea el texto plano" -- Cifrado del lado del cliente

"Denegar acceso HTTP" -- condicion aws:SecureTransport

Nucleo del cifrado de sobre: cifrar datos con clave de datos, cifrar clave de datos con clave maestra

Volver a la lista del blog