Parte: 2 — Criptografía aplicada · Fuente: Serious Cryptography (Aumasson) y Cryptography Engineering (Ferguson/Schneier/Kohno) ⏱️ Duración estimada: 90 min · Nivel: Fundamentos
Comprender qué problemas resuelve la criptografía, cómo evolucionó de los cifrados clásicos (sustitución, transposición, Vigenère, Enigma) a la criptografía moderna, y asimilar los principios que rigen todo el resto de la parte: el principio de Kerckhoffs, el modelo de amenaza, la diferencia entre confidencialidad, integridad y autenticidad, y por qué "no inventes tu propia cripto".
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Objetivos de la criptografía | Define qué se protege y contra qué |
| 2 | Cifrados clásicos (sustitución, transposición) | Base histórica y análisis de frecuencias |
| 3 | Vigenère y su ruptura (Kasiski) | Muestra cómo cae un cifrado "irrompible" |
| 4 | Enigma y la criptografía de la II Guerra Mundial | Origen del criptoanálisis moderno |
| 5 | Principio de Kerckhoffs | Fundamento del diseño abierto |
| 6 | Modelo de amenaza y del adversario | La seguridad es relativa al atacante |
| 7 | Cripto simétrica vs asimétrica (panorama) | Mapa de lo que viene en la parte |
Trabajaremos en un entorno de laboratorio aislado (máquina virtual o contenedor propio). Herramientas:
# Python 3 con utilidades estándar; opcional pycipher para clásicos
python3 --version
pip install pycipher
# OpenSSL para comprobar tamaños de clave más adelante
openssl version
No se requiere red externa. Todos los ejercicios son locales.
python
def cesar(texto, k):
return ''.join(
chr((ord(c) - 65 + k) % 26 + 65) if c.isalpha() else c
for c in texto.upper()
)
print(cesar("ATAQUE AL AMANECER", 3))
Fuerza bruta. Recorre las 26 claves e imprime todas las salidas; observa que un humano identifica la correcta al instante.
Análisis de frecuencias. Cuenta la frecuencia de cada letra en un texto cifrado por sustitución y compárala con la distribución del español (la E y la A dominan). Deduce el mapeo.
Vigenère y Kasiski. Cifra un texto largo con clave SEGURIDAD. Busca repeticiones de trigramas y mide las distancias; el máximo común divisor sugiere la longitud de la clave, rompiendo la ilusión de seguridad.
Discusión de Kerckhoffs. Toma un "algoritmo secreto" inventado y argumenta por qué su secreto no puede sostenerse: se filtra, se aplica ingeniería inversa, no se audita.
WKLV LV D WHVW sabiendo que es César.Implementa un rompedor automático de cifrado por sustitución monoalfabética usando análisis de frecuencias y bigramas. Criterio de aceptación: dado un texto cifrado en español de al menos 500 caracteres, tu programa recupera al menos el 90 % del texto plano sin conocer la clave, mostrando el mapeo deducido.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| "Mi cifrado es seguro porque nadie conoce el algoritmo" | Viola Kerckhoffs; asume que el algoritmo se filtrará y basa la seguridad en la clave |
| Análisis de frecuencias no funciona | Texto demasiado corto; necesita muestra suficiente |
| Confundir codificación (Base64) con cifrado | Base64 no oculta nada; es reversible sin clave |
| "Doble ROT13 = más seguro" | ROT13 es su propia inversa; doble no cifra nada |
| Reusar clave de Vigenère en muchos mensajes | Facilita Kasiski y correlación entre textos |
❓ ¿Sigue siendo útil estudiar cifrados clásicos? Sí: enseñan intuición sobre patrones, frecuencias y por qué las primitivas modernas están diseñadas para eliminar esas estructuras.
❓ ¿Qué significa que un cifrado sea "seguro"? Que ningún atacante dentro del modelo de amenaza definido puede romperlo con recursos razonables. La seguridad siempre es relativa a un adversario concreto.
❓ ¿Por qué "no hagas tu propia cripto"? Porque los errores sutiles (nonces, padding, timing) rompen esquemas que parecen correctos; usa librerías auditadas.
Clase 045 — NetFlow y análisis de metadatos de tráfico