Vista previa del material en texto
Universidad Nacional Autónoma de México Facultad de Ingeniería Criptografía Grupo: 02 - Semestre: 2023-2 Sesión Práctica 6: Creando Claves Asimétricas y Certificados Digitales Fecha de entrega: 10/05/2023 Profesora: Dra. Rocío Alejandra Aldeco Pérez Alumno: Téllez González Jorge Luis Facultad de Ingeniería Criptografía______________________________________________________________________________________________________________ Introducción En este informe se describe el proceso realizado en Linux Mint utilizando OpenSSL para �rmar y veri�car un archivo de texto, cifrar y descifrar un archivo de texto utilizando AES-256 y obtener el hash de un archivo de texto utilizando SHA2 de 512 bits. OpenSSL es una herramienta de código abierto que proporciona una amplia gama de funciones criptográ�cas, incluyendo la generación de claves RSA y la creación de certi�cados digitales. En la sesión anterior, se generaron claves RSA y se crearon certi�cados digitales utilizando Getacert. En esta sesión, se utilizó la misma clave privada generada anteriormente para �rmar y veri�car un archivo de texto, y se utilizó AES-256 para cifrar y descifrar un archivo de texto. Además, se obtuvo el hash de un archivo de texto utilizando SHA2 de 512 bits y se veri�có el hash. Desarrollo Para empezar a desarrollar las actividades solicitadas, se inicia retomando la máquina virtual usada anteriormente, la cual emplea la versión de Linux Mint más reciente (21.1 Cinnamon). Creando una nueva carpeta llamada PS6, se mueven los archivos de clave pública y privada generados en la sesión anterior a la carpeta y se genera un archivo de texto de prueba, como se observa a continuación: Figura 1. Claves de la sesión anterior listas. Figura 2. Archivo de texto para las actividades. 2 Facultad de Ingeniería Criptografía______________________________________________________________________________________________________________ Se inicia �rmando y veri�cando el archivo con el esquema asimétrico, en donde es necesario generar un hash y cifrarlo con la clave privada usando el siguiente comando, el cual de�ne a una �rma digital usando la clave privada previa y usando SHA256: openssl dgst -sha256 -sign private.key -binary -out signature.bin textfile.txt openssl base64 -in signature.bin -out signature.txt El primer comando genera como salida un archivo de �rma en formato binario, el cual no es inmediatamente veri�cable, por lo que se usa una conversión base64 para obtener como resultado una �rma veri�cable: Figura 3. Firma digital creada. Por último, usando la �rma en su formato original en binario, veri�camos la �rma empleando la clave pública, lo que da como resultado una veri�cación correcta como se observa a continuación: Figura 4. Veri�cación exitosa. 3 Facultad de Ingeniería Criptografía______________________________________________________________________________________________________________ Ahora, se procede a cifrar el archivo de texto de prueba usando el siguiente comando: openssl enc -aes-256-cbc -salt -in textfile.txt -out ciphertext.txt Este comando se usa para cifrar un archivo de texto plano utilizando el algoritmo AES-256 en modo CBC (Cipher Block Chaining). La opción "-salt" agrega una cadena aleatoria a la clave para hacerla más robusta, y los argumentos "-in" y "-out" se utilizan para especi�car el archivo de entrada (text�le.txt) y el archivo de salida (ciphertext.txt) respectivamente. Cuando se ejecuta este comando, OpenSSL solicita una contraseña de recuperación para cifrar el archivo. El archivo de texto plano original no se modi�ca y permanece en su ubicación original. Figura 5. Cifrado del texto de prueba con AES-CBC. Ahora, se procede a descifrar con el siguiente comando: openssl enc -aes-256-cbc -d -in ciphertext.txt -out decrypted.txt Este comando utiliza la opción -d que a OpenSSL que debe realizar la operación de descifrado, especi�cándose el archivo de entrada y el nombre del archivo de salida que contendrá al archivo de texto descifrado. 4 Facultad de Ingeniería Criptografía______________________________________________________________________________________________________________ Figura 6 y 7. Descifrado del archivo de texto con AES-256-CBC. Ahora, se procede a obtener el hash del archivo de prueba usado anteriormente para cifrado y descifrado. En este caso, se usa el siguiente comando para obtener el hash usando SHA-512: openssl dgst -sha512 -out hash.txt textfile.txt Figura 8. Hash generado para el archivo de texto. 5 Facultad de Ingeniería Criptografía______________________________________________________________________________________________________________ Posteriormente, se usa el comando nuevamente para generar un segundo hash, pero con el nombre hash2.txt y se usa el comando de Linux diff para veri�car si los archivos son idénticos, o bien, presentan diferencias. Si no hay diferencias, no se tendrá nada a la salida. Figura 9. Veri�cación de los hashes generados. Para ejempli�car esto, se genera un archivo de texto distinto al cual se le saca su hash respectivo y, luego, se aplica el comando diff para mostrar la salida obtenida cuando los hash no son iguales. Figura 10. Valores hash que no coinciden. Conclusiones OpenSSL es una herramienta poderosa para trabajar con cifrado, �rmas digitales y hashes, ofreciendo una amplia gama de algoritmos criptográ�cos y opciones; lo que la convierte en 6 Facultad de Ingeniería Criptografía______________________________________________________________________________________________________________ una herramienta versátil para la gestión segura de datos. Al utilizar las utilidades de línea de comandos proporcionadas por OpenSSL, es posible realizar una variedad de tareas criptográ�cas de manera rápida y sencilla. Por medio de este trabajo se logró poner en práctica conceptos mencionados en clase para observar posibles casos de uso para los procesos de �rmado digital y cifrado/descifrado de archivos, lo cual es un conocimiento útil para salvaguardar archivos y mantenerlos seguros. Referencias Avarena, P. (2022, October 28).How to encrypt files with AES using OpenSSL. DEV Community. RetrievedMay 10, 2023, from https://dev.to/vaultree/how-to-encrypt-�les-with-aes-using-openssl-23m8 Kalin, M. (2019, June 20).How to use OpenSSL: Hashes, digital signatures, and more. Opensource.com. RetrievedMay 10, 2023, from https://opensource.com/article/19/6/cryptography-basics-openssl-part-2 Kekayan. (2018, July 7). Encrypt files using AES with OPENSSL | by Kekayan |Medium. Encrypt �les using AES with OPENSSL. RetrievedMay 10, 2023, from https://kekayan.medium.com/encrypt-�les-using-aes-with-openssl-dabb86d5b748 OpenSSL. (2022, June 24). Command Line Utilities - OpenSSLWiki. OpenSSL wiki. RetrievedMay 10, 2023, from https://wiki.openssl.org/index.php/Command_Line_Utilities 7