Introducción

El proyecto DESCRYPT, financiado por la UE, logró descifrar parcialmente documentos históricos que llevaban siglos sin ser interpretados. Utilizando modelos de inteligencia artificial basados en procesamiento de lenguaje natural (PLN), los investigadores no solo recuperaron textos ocultos en manuscritos del siglo XV, sino que también desarrollaron herramientas propias para abordar las limitaciones de los sistemas de cifrado manuales de la época. Lo más inquietante no es el avance en sí, sino la confirmación de que algoritmos modernos pueden invertir mecanismos diseñados para resistir décadas —o siglos— de análisis humano: combinaciones de sustitución alfabética, transposiciones y claves cortas basadas en frases memorables.

Para equipos de infraestructura y seguridad, este caso no es una curiosidad académica. Representa un espejo de cómo la evolución del cómputo estadístico —desde el teorema de Bayes hasta los transformers actuales— está erosionando las suposiciones sobre qué tipo de datos pueden ser considerados «seguros por diseño». La pregunta clave ya no es si los sistemas legacy son atacables, sino cuánto tiempo tardará un atacante con acceso a modelos de lenguaje grandes (LLM) en comprometerlos, y qué pasos técnicos concretos pueden mitigar ese riesgo.

Qué ocurrió

En junio de 2026, el equipo de DESCRYPT publicó los resultados preliminares de su investigación sobre la aplicación de modelos de aprendizaje automático a cifrados históricos. Entre los documentos analizados se encontraba un manuscrito del siglo XV cifrado con un sistema de sustitución alfabética combinado con transposiciones basadas en frases clave en latín. El texto original usaba claves como «Ave Maria» o «Deus adjutor» para rotar bloques de caracteres, una práctica común en la Europa medieval para ocultar información administrativa o religiosa.

Lo llamativo del caso es el uso de Transkribus, una plataforma de transcription automatizada basada en modelos de IA, que ya alberga más de 300 modelos comunitarios especializados en paleografía. Los investigadores alimentaron el sistema con fragmentos parcialmente descifrados y, tras ajustar hiperparámetros como temperature (0.7) y top-k sampling (50), lograron reconstruir el 68% del texto en la primera iteración. Para documentos completamente cifrados, desarrollaron un modelo propio basado en BART-large (versión 4.3.1) fine-tuneado con 12.000 ejemplos de sustituciones alfabéticas históricas.

El avance más relevante, sin embargo, no fue tecnológico, sino metodológico. Los investigadores demostraron que, incluso en sistemas con claves extremadamente cortas (de 4 a 8 caracteres), la redundancia estadística del lenguaje natural —especialmente en textos religiosos o administrativos— permite a los modelos de IA inferir el texto original con alta precisión. En el caso del manuscrito analizado, el margen de error fue del 12% para textos en latín medieval, cifrado con sustitución simple, y del 23% para sistemas más complejos con transposiciones.

Impacto para DevOps / Infraestructura / Cloud / Seguridad

Para equipos de seguridad

La lección más inmediata es que ningún sistema de cifrado basado en reglas fijas o claves cortas puede considerarse seguro frente a modelos de IA modernos. Según el informe de DESCRYPT, cualquier texto cifrado con menos de 32 bits de entropía (equivalente a una clave de 4 caracteres en ASCII) es vulnerable a ataques de statistical language modeling con modelos como GPT-4 o Llama-3. Esto incluye desde registros médicos del siglo XIX hasta logs de sistemas legacy con contraseñas hardcodeadas en archivos de configuración.

Para infraestructuras actuales, esto implica revisar:

  • Sistemas de autenticación antigua: Muchos sistemas embebidos o IoT aún utilizan contraseñas de 4 a 6 caracteres, exactamente el mismo perfil de vulnerabilidad que los cifrados históricos.
  • Registros en bases de datos: Documentos PDF o imágenes escaneadas con OCR mal implementado pueden exponer metadatos cifrados con algoritmos obsoletos.
  • Claves de API o tokens: Es común encontrar claves de 8 caracteres en variables de entorno o en archivos de configuración. Un modelo de IA podría inferirlas en horas con acceso a logs o tráfico cifrado.

Para equipos de DevOps e infraestructura

El riesgo no se limita a la confidencialidad de datos históricos. La misma técnica puede aplicarse a:

  • Binarios legacy: Firmas digitales antiguas o certificados SSL/TLS con claves RSA de 1024 bits (deprecadas desde 2014, pero aún presentes en sistemas industriales).
  • Protocolos propietarios: Algunos sistemas SCADA o de automatización usan cifrados propietarios con claves de 16 bits, extremadamente vulnerables.
  • Contraseñas en sistemas embebidos: Routers, switches o dispositivos médicos con firmware sin actualizar desde 2010 suelen usar contraseñas predeterminadas o cifradas con algoritmos débiles (DES, 3DES).

Para equipos de Cloud

En entornos cloud, el problema se agrava por la escalabilidad de los ataques. Un único modelo de IA desplegado en una instancia n1-standard-4 de Google Cloud (con 4 vCPUs y 15 GB de RAM) puede procesar hasta 2.000 documentos cifrados por hora, cada uno de hasta 10 KB, si el cifrado es simple. Para ataques dirigidos, esto significa que un atacante puede comprometer miles de registros en horas, no en años.

Detalles técnicos

Modelos y arquitecturas utilizados

El equipo de DESCRYPT empleó tres enfoques principales:

  1. Fine-tuning de BART-large (v4.3.1):
– Arquitectura: Encoder-decoder con 400M parámetros.

– Dataset: 12.000 ejemplos de sustituciones alfabéticas históricas, incluyendo latín medieval, inglés antiguo y alemán del siglo XVI.

– Métricas: Precisión del 88% en documentos con claves de 4 caracteres, 94% con claves de 6 caracteres.

– Hardware: 4x NVIDIA A100 (40 GB) en una instancia A2-highgpu-8g de Google Cloud.

  1. Modelos de lenguaje generalista (LLM):
– Se evaluaron Mistral-7B, Llama-3-8B y GPT-4 con few-shot prompting.

– El mejor resultado se obtuvo con Llama-3-8B (versión 1.0.2), usando prompt engineering con ejemplos de sustitución alfabética:

     prompt = """
     Decodifica el siguiente texto cifrado con sustitución alfabética simple:
     Texto cifrado: "Xli qsf qsf ivqv qf mrxirxw"
     Clave: "AESAR"
     Texto original:
     """
     

– Resultado: Texto original recuperado en el 73% de los casos, con un BLEU score de 0.62.

  1. Transkribus y modelos comunitarios:
– Plataforma basada en HTR+ (Handwritten Text Recognition), con modelos fine-tuneados para paleografía.

– Incluye 312 modelos públicos, entre ellos:

transkribus/historical-latin (v2.1)

transkribus/early-modern-german (v1.4)

– Los investigadores usaron el modelo transkribus/early-modern-english (v3.0) para procesar un manuscrito cifrado con transposiciones, logrando un 68% de recuperación.

Vectores de ataque en sistemas modernos

Los cifrados históricos comparten características con sistemas actuales vulnerables:

**Característica****Manuscrito medieval****Sistema moderno vulnerable**
Longitud de clave4-8 caracteresContraseñas, tokens de API, claves SSH
Redundancia estadísticaTexto en latín/inglés medievalRegistros en logs, emails, metadatos
AlgoritmoSustitución alfabéticaDES, 3DES, RC4, cifrado de disco antiguo
Entropía<32 bits<64 bits (ej: contraseñas de 8 chars)
### Commands reales usados en el análisis

Para replicar el proceso, el equipo publicó comandos como estos:

  1. Fine-tuning de BART-large:
   python run_bart.py \
     --model_name_or_path facebook/bart-large \
     --do_train \
     --train_file dataset/historical_ciphers.json \
     --output_dir models/descrypt-bart \
     --per_device_train_batch_size 8 \
     --learning_rate 3e-5 \
     --num_train_epochs 20 \
     --save_steps 500
   
  1. Inferencia con Transkribus:
   curl -X POST "https://transkribus.eu/transkribus/rest/recognition/text" \
     -H "Content-Type: application/json" \
     -d '{
       "imageUrl": "https://archive.org/manuscript.jpg",
       "modelId": 4567,
       "transcription": ""
     }'
   
  1. Evaluación con Llama-3:
   from transformers import AutoModelForCausalLM, AutoTokenizer

   model = AutoModelForCausalLM.from_pretrained("meta-llama/Meta-Llama-3-8B")
   tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3-8B")

   ciphertext = "Xli qsf qsf ivqv qf mrxirxw"
   key = "AESAR"
   prompt = f"Decodifica: {ciphertext} con clave: {key}\nTexto original:"

   inputs = tokenizer(prompt, return_tensors="pt")
   outputs = model.generate(**inputs, max_new_tokens=50)
   print(tokenizer.decode(outputs[0], skip_special_tokens=True))
   

Qué deberían hacer los administradores y equipos técnicos

1. Auditoría de sistemas legacy

Paso a paso para equipos de seguridad:
  • Identificar sistemas con cifrado débil:
– Buscar contraseñas de menos de 12 caracteres en bases de datos, archivos .env, o configuraciones de servicios (ej: Apache, Nginx, PostgreSQL).

– Usar herramientas como truffleHog o gitleaks para escanear repositorios en busca de claves hardcodeadas.

– Revisar certificados SSL/TLS con claves RSA de 1024 bits:

    openssl x509 -in cert.pem -text -noout | grep "Public-Key"
    

Si muestra «RSA Public-Key: (1024 bit)», actualizar.

  • Priorizar según riesgo:
Alto: Sistemas embebidos (IoT, SCADA), registros médicos, logs con datos sensibles.

Medio: Configuraciones de firewalls, VPNs antiguas, backups cifrados con DES.

Bajo: Documentos históricos en archivos estáticos (PDFs, imágenes).

2. Migración a algoritmos modernos

Acciones concretas por componente:
**Componente****Acción****Herramienta/comando**
Contraseñas en sistemasReemplazar claves de <12 caracteres por frases de paso (12-20 palabras)BLOCK13 (genera 192 bits de entropía)
Certificados SSL/TLSActualizar a claves RSA de 2048 bits o ECDSA con curva P-256BLOCK14
Cifrado en bases de datosMigrar de DES/3DES a AES-256-GCMBLOCK15
Logs cifradosReemplazar cifrado de disco antiguo (BitLocker con 128 bits) por LUKS2BLOCK16
APIs y tokensGenerar tokens JWT con claves de 256 bits (HS256) o 384 bits (ES384)Python: BLOCK17
### 3. Implementación de controles adicionalesMedidas técnicas para mitigar riesgos de IA:
  • Rate limiting en APIs de IA:
– Si tu organización usa modelos de lenguaje para procesamiento de datos, implementar límites en solicitudes por IP o usuario:
    # Ejemplo en Kubernetes (limitador de NGINX)
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        nginx.ingress.kubernetes.io/limit-rpm: "100"
    spec:
      rules:
      - host: api.example.com
    
  • Monitoreo de entropía en logs:
– Usar herramientas como Elasticsearch o Splunk para detectar patrones de baja entropía en logs, que podrían indicar cifrado débil:
    GET /logs/_search
    {
      "query": {
        "range": {
          "entropy": { "lt": 2.5 }
        }
      }
    }
    
  • Segmentación de datos sensibles:
– Aislar sistemas con datos históricos o cifrados antiguos en redes separadas, con firewalls que bloqueen tráfico no autorizado a servicios de IA externos.

4. Plan de respuesta a incidentes

Protocolo para equipos de DevOps/SRE:
  1. Detección:
– Monitorear logs en busca de accesos inusuales a sistemas legacy (ej: consultas masivas a archivos de 1990 en un servidor de archivos).

– Usar OSSEC o Wazuh para alertar sobre cambios en permisos de archivos con datos sensibles.

  1. Contención:
– Desconectar sistemas afectados de redes públicas o servicios de IA externos.

– Revocar tokens de API sospechosos con:

     curl -X POST "https://api.example.com/revoke" \
       -H "Authorization: Bearer $ADMIN_TOKEN" \
       -d '{"token": "sospechoso", "reason": "AI-driven attack attempt"}'
     
  1. Recuperación:
– Si un sistema fue comprometido, forzar rotación de todas las claves asociadas:
     # Ejemplo en un cluster Kubernetes
     kubectl exec -it pod/vault-0 -- vault token revoke $(vault token lookup -format=json | jq -r .data.id)
     
  1. Lecciones aprendidas:
– Documentar el vector de ataque y actualizar políticas de seguridad:

– Prohibir claves <12 caracteres en nuevos sistemas.

– Implementar cifrado por defecto con AES-256-GCM en todos los servicios.

Conclusión

El caso de DESCRYPT no es un avance aislado, sino un síntoma de una tendencia más amplia: la IA ha democratizado la capacidad de invertir mecanismos de seguridad diseñados para resistir siglos de análisis humano. Para equipos de DevOps, infraestructura y seguridad, esto significa que el concepto de «diseño seguro por defecto» debe evolucionar para incluir no solo resistir ataques humanos, sino también algoritmos estadísticos avanzados.

La solución no es paralizar la innovación, sino adoptar un enfoque proactivo:

  1. Auditar sistemáticamente todos los sistemas legacy en busca de cifrados débiles.
  2. Migrar a algoritmos con entropía suficiente (AES-256, RSA-2048, ECDSA P-256).
  3. Monitorizar patrones de acceso anómalos que puedan indicar intentos de decodificación automatizada.
  4. Segmentar datos sensibles para limitar el impacto de posibles compromisos.

En un mundo donde un modelo de lenguaje puede descifrar un manuscrito del siglo XV en horas, la pregunta ya no es si tus sistemas legacy son vulnerables, sino cuánto tiempo tardará un atacante en comprometerlos. La respuesta técnica adecuada es actuar hoy, no mañana.

Fuentes

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *