Parte: 2 — Criptografía aplicada · Fuente: Serious Cryptography (Aumasson) y literatura de esteganografía/estegoanálisis ⏱️ Duración estimada: 90 min · Nivel: Intermedio
Distinguir esteganografía (ocultar la existencia de un mensaje) de criptografía (ocultar su contenido), y entender cómo se combinan. El alumno aprenderá técnicas clásicas (LSB en imágenes, ocultación en metadatos), el estegoanálisis (detección), y usos legítimos (marcas de agua, watermarking) frente a usos maliciosos (exfiltración, C2 encubierto). Todo se practica sobre archivos propios de laboratorio.
⚠️ Nota ética: las técnicas de ocultación se practican solo con archivos propios y con fines de aprendizaje/defensa. Usarlas para exfiltrar datos o evadir controles sin autorización es ilícito.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Estego vs cripto | Ocultar existencia vs contenido |
| 2 | LSB en imágenes | Técnica clásica |
| 3 | Ocultación en metadatos/otros formatos | Superficie amplia |
| 4 | Cifrar antes de ocultar | Defensa en profundidad |
| 5 | Estegoanálisis | Detección |
| 6 | Watermarking | Uso legítimo |
| 7 | Exfiltración y C2 encubierto | Amenaza defensiva |
La criptografía y la esteganografía resuelven problemas distintos, y confundirlos lleva a decisiones malas. La criptografía hace que un mensaje sea ilegible, pero no oculta que existe: quien observe el canal ve un bloque de datos cifrado y sabe que hubo una comunicación protegida. La esteganografía hace que el mensaje sea invisible, escondiéndolo dentro de un portador de apariencia inocente, pero no lo protege si alguien descubre dónde está.
De ahí que su valor real aparezca cuando el propio hecho de cifrar es peligroso o sospechoso —regímenes que penalizan el cifrado, redes donde el tráfico cifrado anómalo dispara alertas, exfiltración que debe pasar desapercibida—. Y de ahí también la regla de oro de la clase: cifrar primero y ocultar después. Combinadas, son defensa en profundidad: si el estegoanálisis detecta el portador, el atacante encuentra datos cifrados y no el mensaje. Además, un contenido cifrado tiene una distribución prácticamente uniforme, lo que en muchos portadores se camufla mejor.
La técnica canónica es la sustitución del bit menos significativo (LSB). En una imagen sin compresión con pérdida, cada píxel tiene componentes de rojo, verde y azul de 8 bits; cambiar el último bit de cada componente altera el valor en una unidad como mucho, un cambio imperceptible para el ojo humano. Con tres bits ocultos por píxel, una imagen de un megapíxel transporta unos 375 KB de datos.
Sus límites definen dónde se puede aplicar. Solo funciona en formatos sin pérdida —PNG, BMP, WAV—: guardar la imagen como JPEG destruye el mensaje, porque su compresión descarta justamente los detalles imperceptibles. Y es frágil ante cualquier reprocesado: escalar, recortar, recomprimir o aplicar un filtro borra la carga. Por eso la esteganografía real va más allá del LSB e incluye ocultación en metadatos (campos EXIF, comentarios ID3), en el slack space de un sistema de archivos, en campos no usados de cabeceras de protocolo, en la temporización de los paquetes, o en el propio DNS —el tunneling de la clase 041 es, en esencia, esteganografía sobre un protocolo—.
El estegoanálisis busca las huellas estadísticas que deja la ocultación. Los bits menos significativos de una imagen natural no son perfectamente aleatorios: siguen patrones derivados del sensor y del contenido. Sustituirlos por datos cifrados —que sí son uniformes— aumenta la entropía de ese plano de bits y rompe correlaciones esperadas. El análisis chi-cuadrado y el RS analysis detectan justamente eso. Señales más groseras también sirven: un fichero anormalmente grande para sus dimensiones, un PNG donde todo el mundo usa JPEG, o metadatos con campos inusualmente largos.
Para el defensor hay además una vía práctica muy eficaz que no requiere detectar nada: la sanitización. Recomprimir toda imagen entrante, escalarla ligeramente o eliminar sus metadatos destruye la carga oculta sin necesidad de saber si existía.
Aunque suene a curiosidad, la esteganografía es una amenaza operativa concreta. El malware la usa como canal encubierto: se han documentado familias que reciben órdenes ocultas en imágenes publicadas en redes sociales o en servicios de imágenes públicos —un canal de C2 que atraviesa cualquier firewall porque el tráfico es indistinguible de navegar—, y también campañas que exfiltran datos dentro de ficheros aparentemente normales adjuntos en correos. Su uso legítimo más extendido es el watermarking: marcas de agua robustas, diseñadas para sobrevivir al reprocesado, que sirven para trazar la procedencia de contenido con derechos.
Como todo en esta parte, el uso ético manda: practicar la ocultación y su detección en el laboratorio propio es formación; emplearla para sacar información de una organización sin autorización es exfiltración, con las consecuencias que fija la clase 025.
| Término | Definición concisa |
|---|---|
| Esteganografía | Ocultar la existencia del mensaje |
| Criptografía | Ocultar el contenido del mensaje |
| Portador (cover) | Fichero o canal de apariencia inocente que aloja el mensaje |
| Estego-objeto | Portador con la carga ya oculta dentro |
| LSB | Sustitución del bit menos significativo |
| Formato sin pérdida | PNG, BMP, WAV; necesarios para que el LSB sobreviva |
| Capacidad | Cantidad de datos que un portador puede ocultar |
| Metadatos EXIF / ID3 | Campos de imagen y audio usados para ocultar |
| Slack space | Espacio sobrante de un bloque de disco |
| Canal encubierto | Vía de comunicación no prevista por el diseño |
| Estegoanálisis | Detección de contenido oculto |
| Chi-cuadrado / RS analysis | Pruebas estadísticas que detectan LSB |
| Entropía anómala | Indicio de que un plano de bits contiene datos cifrados |
| Sanitización | Recomprimir o escalar para destruir la carga oculta |
| Watermarking | Marca de agua robusta para trazar procedencia |
pip install pillow numpy
# herramientas dedicadas (opcional)
which steghide zsteg stegseek 2>/dev/null || echo "opcional para el lab"
Usa imágenes y archivos generados por ti. No manipules material ajeno.
python
from PIL import Image
img = Image.open("cover.png").convert("RGB")
px = img.load()
msg = "secreto".encode() + b"\x00"
bits = ''.join(f"{b:08b}" for b in msg)
i = 0
for y in range(img.height):
for x in range(img.width):
if i < len(bits):
r, g, b = px[x, y]
r = (r & ~1) | int(bits[i]); i += 1
px[x, y] = (r, g, b)
img.save("stego.png")
Extrae el mensaje leyendo el LSB del canal rojo hasta el terminador \x00.
Cifra antes de ocultar. Cifra el mensaje con AES-GCM (clase 059) y luego escóndelo; ahora, aunque se detecte el portador, el contenido permanece protegido.
Estegoanálisis. Compara histogramas o aplica una prueba chi-cuadrado entre cover.png y stego.png; observa las anomalías que delatan la manipulación LSB. Prueba herramientas como zsteg/stegseek sobre tus propios archivos.
Discusión defensiva. Analiza cómo un atacante podría usar imágenes en un foro para C2 encubierto y qué señales buscaría un defensor (tamaños anómalos, entropía, tráfico a imágenes).
Implementa una herramienta que cifre un mensaje con AES-GCM y lo oculte por LSB en una imagen, más un extractor que recupere y descifre el mensaje. Criterio de aceptación: el mensaje se recupera intacto solo con la clave correcta, la imagen resultante es visualmente idéntica al portador, y describes qué señal estadística podría delatar la ocultación.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| El mensaje oculto se pierde | Recompresión JPEG destruye LSB; usa formatos sin pérdida (PNG) |
| Confiar solo en la ocultación | Si se detecta, se lee; cifra antes de ocultar |
| Portador visiblemente alterado | Demasiada carga; reduce la capacidad |
| Estego detectable trivialmente | Patrón LSB uniforme; distribuye o usa técnicas robustas |
| Usar estego para evadir controles sin permiso | Ilegal; limítate a laboratorio propio |
❓ ¿La esteganografía sustituye al cifrado? No; oculta la existencia, no el contenido. Combínala con cifrado para defensa en profundidad.
❓ ¿Es fácil detectar LSB? Sí, con análisis estadístico. La esteganografía robusta es un campo activo; LSB simple es didáctico pero detectable.
❓ ¿Para qué sirve legítimamente? Marcas de agua, trazabilidad de filtraciones, autenticación de contenido y ocultación de metadatos sensibles.
Clase 063 — Gestión de secretos: Vault y KMS
Clase 065 — Implementaciones seguras y errores criptográficos comunes