AWS KMS – Encriptación y desencriptación de archivos
Hoy veremos un servicio de AWS, el Key Management Service, lo que en castellano viene a ser Servicio Administrador de Claves.
Su uso es, básicamente, para el encriptado y desencriptado de objetos, es decir, ficheros, a partir de una clave a la que el usuario tendrá acceso y que él mismo controlará. Uno de sus usos más frecuentes es la encriptación de claves de identificación de usuario que puedan ser visibles a otros usuarios, pero a la que querremos que no tengan acceso, es decir, que vean una línea de carácteres o Bytes, que para ellos no signifique nada y a la que no puedan darle uso, ya que sólo hay una manera de desencriptarla: la Key generada.
KMS utiliza módulos de seguridad de hardware que sirven para proteger sus claves y que han sido validados según las normas FIPS 140-2, o están en proceso de validación.
En este ejemplo veremos cómo hacerlo a partir de la consola de comandos de Windows, aunque yo usaré la consola CMDER.
Crearemos una carpeta para el ejemplo, iremos a la carpeta que hemos creado y crearemos un archivo con el texto que queramos encriptar:. Yo lo haré en C:\KMSejemplo
Tendremos que crear un usuario con acceso a KMS desde IAM, en la consola de AWS. Descargamos las claves y las guardamos en una carpeta. Desde las propiedades de las claves (click derecho sobre la clave, propiedades) Tendremos que activar «sólo lectura» y quitaremos la herencia heredada a ese fichero («Seguridad > Opciones avanzadas > deshabilitar herencia > Quitar todos los permisos heredados a este objeto»), y agregaremos nuestro usuario personal, dándole acceso completo al fichero («Agregar > Seleccionar una entidad de seguridad > escribimos el nombre de nuestro usuario de Windows > Comprobar nombres > Aceptar > Control total > Aceptar.»)
Una vez creado, iremos al servicio KMS en la consola de AWS, y en el apartado de Claves administradas por el cliente, crearemos una Key simétrica , con el origen de las claves en KMS, que se encontrará desplegando el control de Opciones Avanzadas.
Abriremos la clave en la consola de AWS, y veremos el «id de clave» y el «arn» asociado. Podemos coger el Key ID, pero cogeremos el ARN, que también viene con la key puesta después del namespace del recurso:
arn:aws:kms:us-east-2:699752553284:key/93bd39c4-fb51-4dfc-9e07-2b06f3255311
Abriremos las claves (yo lo abriré con Notepad++) y en CMDER y nos validaremos con las claves de usuario con el comando «aws configure».
cd C:\KMSejemplo
Al habernos identificado con el usuario que hemos creado, solo nos quedará utilizar los siguientes comandos para poder encriptar.
aws kms encrypt –key-id «key-id o arn» –plaintext fileb://«archivo a encriptar» –output text –query CiphertextBlob > «nombre nuevo archivo».base64
aws kms encrypt –key-id arn:aws:kms:us-east-2:699752553284:key/99905df3-249f-4d8a-9cbe-7a42476348d3 –plaintext fileb://prueba.txt –output text –query CiphertextBlob > pruebaencriptada.base64
A parte de encriptarlo, está codificado por defecto en base64, por lo que tendremos que decodificarlo y dejar los datos encriptados. En Linux o Mac, se usa el comando «base64», pero al estar en Windows, deberemos usar el comando «certutil» para decodificarlo. Lo haremos así:
certutil -decode «archivo codificado en base64».base64 .txt
certutil -decode pruebaencriptada.base64 pruebaencriptadacodificada.txt
Podemos abrir el fichero y comprobar que está ilegible para el ser humano. Ya lo tenemos encriptado. Pero, cómo lo desencriptamos?
El proceso es el mismo pero a la inversa, utilizaremos el siguiente comando:
aws kms decrypt –ciphertext-blob fileb://«archivo a desencriptar».txt –output text –query Plaintext > «nuevo archivo desencriptado».base64
aws kms decrypt –ciphertext-blob fileb://pruebaencriptadadecodificada.txt –output text –query Plaintext > pruebadesencriptada.base64
Como sucedió antes, el fichero, aunque esté desencriptado, está codificado en base64, por lo que tendremos que volver a decodificarlo, para poder ver el texto desencriptado y decodificado.
certutil -decode «archivo codificado en base64».base64 .txt
certutil -decode pruebadesencriptada.base64 pruebadesencriptadadecodificada.txt
Y podríamos comprobar que hemos logrado encriptar y desencriptar el archivo!!!
Espero que le deis buen uso y encriptéis sólo ficheros propios!!
Nos vemos en las redes!!
Autor/a: Gabriel Macias Fernandez
Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma
Centro: Tajamar
Año académico: 2020-2021