Encriptar mensaje con cryptography
Veamos como encriptar un mensaje para que solo el destinatario autorizado pueda desencriptarlo y verlo. Existen dos formas de hacer esto.
- ⚖️ Con criptografía simétrica. En este caso la clave para encriptar y desencriptar son la misma. Ya los Romanos usaban este tipo de criptografía.
- 🔀 Con criptografía asimétrica. Existen dos claves diferentes. Una para encriptar y otra para desencriptar.
A continuación veremos como realizarlo con criptografía asimétrica. Como hemos indicado, existen dos claves:
- Una clave pública 🗝️ que cualquier puede conocer. Se usa para encriptar.
- Una clave privada 🔑 que debe mantenerse en secreto. Se usa para desencriptar.
Importamos lo necesario.
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import hashes
Generamos una clave privada
. La publica
se deriva de la privada.
privada = rsa.generate_private_key(
public_exponent=65537,
key_size=2048)
publica = clave_privada.public_key()
Ahora encriptamos un mensaje. El mensaje_encriptado
solo lo podrá desencriptar quien tenga la clave privada asociada.
mensaje = b"Mensaje secreto de El Libro de Python"
encriptado = publica.encrypt(
mensaje,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None))
El conocedor de la clave privada, puede desencriptar el mensaje.
desencriptado = privada.decrypt(
encriptado,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None))
print(mensaje_des)
# b'Mensaje secreto de El Libro de Python'
Gran parte de la criptografía actual funciona gracias a lo difícil que es factorizar números en sus primos. Técnicamente alguien podría desencriptar tu mensaje sin la clave privada, probando múltiples combinaciones. Sin embargo esto no es posible en la práctica, ya que se tardaría un tiempo infinito. A nivel práctico, lo consideramos imposible.
Cierto es que los ordenadores cuánticos pueden romper los esquemas tradicionales de encriptación, pero la criptografía post-cuántica resuelve esto. Aún quedan unos años para que esto sea una realidad.
✏️ Ejercicios:
- Intenta desencriptar el mensaje con otra clave privada distinta y explica lo que sucede.