Skip to content

Latest commit

 

History

History
75 lines (61 loc) · 3.03 KB

README.md

File metadata and controls

75 lines (61 loc) · 3.03 KB

    Criptografía RSA


    José Benavente & Daniel Aguayo


Proyecto de laboratorio para el electivo de Criptografía Aplicada, el cual consiste en tres programas escritos en el lenguaje de programación Python con el objetivo de implementar la encriptación RSA en un contexto práctico.

El documento en formato PDF con todas las especificaciones del enunciado puede ser encontrado haciendo click aquí.

Uso

python keygen.py
python cipher.py --private-key alice.pem --public-key bob.pub -p [password]
python decipher.py --public-key alice.pub --private-key bob.pem -p [password]

Explicación

Primero, ambos usuarios ejecutan el script keygen.py, el cual generará un par de llaves RSA (pública y privada) para cada uno. Llamaremos a ambos usuarios Alice y Bob para esta demostración.

Opcionalmente, las llaves RSA pueden ser generadas con una contraseña. En caso de ser así, para poder cifrar y descifrar mensajes, Alice y Bob deberán pasar sus contraseñas como el argumento '-p' a los scripts cipher.py y decipher.py

Luego de generar las llaves, ambos usuarios intercambian llaves públicas. Alice le envía su llave pública a Bob, y viceversa.

Después de generar las llaves y hacer el intercambio de las públicas, Alice puede encriptar un mensaje utilizando el script cipher.py, pasando su llave privada y la llave pública de Bob como argumentos.

Una vez encriptado el mensaje, se generarán varios archivos dentro del directorio cipher/:

  • aes_key.enc: Llave AES encriptada.
  • ciphertext.txt: Texto cifrado.
  • IV.iv: El vector de inicialización.
  • signature.sig: La firma del mensaje.

Estos archivos deberán ser enviados a Bob para que este, con su llave privada, pueda desencritpar el mensaje encriptado por Alice.

Para desencriptar el mensaje, Bob puede usar el script decipher.py, pasando la llave pública de Alice y su llave privada como argumentos. Los archivos originalmente generados por Alice deben encontrarse en el directorio decipher/ de Bob antes de proceder con la desencriptación.

Una vez ejecutado el script decipher.py, Bob podrá ver el mensaje en pantalla. Si el mensaje no fue alterado, entonces el script entregará el contenido en texto plano para que Bob pueda verlo, además de mostrar en pantalla que el mensaje es auténtico.

Si el mensaje ha sido alterado, el programa imprimirá que el mensaje puede no ser auténtico y terminará su ejecución.

Referencias