Caja de un avión de juguete que aparenta ser un Boeing 747, va rotulado como 757 y por todo nombre lleva SPACE SHUTTLE (model of the real style).

Llamativa pero inútil

En el artículo de ayer estuve peleándome con ChatGPT en su versión más avanzada para que hiciera algo que los estudiosos de la IA afirman que no puede hacer, pero que quienes lo venden prometen que sí (aunque con letra pequeña que afirma que comprobemos los resultados por si acaso no). Para no eternizar el artículo con la autocháchara digital, solo relaté tres intentos de solución a lo que era, esencialmente, un problema trivial: calcular la longitud del camino máximo que puede recorrerse sobre una cinta de Möbius.

Lo interesante es que, tras varias reformulaciones de la cuestión, ¡la máquina dio una respuesta correcta e irreprochable! Curiosamente, lo hizo sobre un problema topológicamente algo más complejo: el de un prisma de base triangular infinitamente deformable que se retuerce un tercio de vuelta y cuyas bases se unen. Esto:

Un prisma triangular de Möbius, formado a partir de un prisma triangular recto, girado un tercio de vuelta sobre su eje principal y uniendo posteriormente las bases.
Prisma triangular de Möbius. (Imagen: Pixelsquid)

Si el prisma original mide 100 centímetros, el camino máximo que se puede recorrer paralelamente a cualquiera de las aristas de un objeto así es de 300 centímetros, y la hormiga que lo haga a un centímetro por segundo tardará cinco minutos en hacerlo. Impresionante, ¿verdad? Nada mal para lo que, esencialmente, es un autocorrector glorificado.

Sin embargo, no quería dejar de proponerle al LLM más avanzado un problema un poco más complejo, para dejar definitivamente claro que no nos encontramos ante una máquina inteligente, sino ante una que aprovecha su conocimiento estadístico de todos los textos para emitir resultados plausibles, pero no necesariamente correctos. Me pareció que en esta última ocasión podríamos dejar el ámbito de la topología elemental para pasar a otro campo con gran cantidad de textos de referencia en la literatura (y por tanto, teóricamente sencillo para uno de estos aristones1): el criptoanálisis.

Voy a proponerle a ChatGPT-4o que analice y decodifique un pequeño fragmento de texto encriptado con uno de los cifrados más sencillos que existen: la cifra César, así llamada porque el epónimo Julio la usaba en su correspondencia personal. Aunque ya por entonces cualquier espía con la elemental capacidad de leer, escribir y hacer aritmética sencilla podría haberla descifrado. Para ahorrar tiempo, usaré una herramienta en línea llamada Criptii para generar el texto cifrado.

La cifra César consiste, simplemente, en sustituir cada letra por la que esté n pasos por delante en el alfabeto. Si se nos acaba, «damos la vuelta». Es decir, si queremos codificar la letra z con una cifra César de paso 1, devolveremos la letra a. Voy a usar un paso 7, y el texto sin codificar será:

en un lugar de la mancha de cuyo nombre no quiero acordarme no ha mucho tiempo que vivia un hidalgo de los de lanza en astillero adarga antigua rocin flaco y galgo corredor

Un clásico. Prescindo de tildes, mayúsculas, eñes y puntuación para hacer las cosas un poquito más uniformes. La cifra César arroja como resultado esta ensalada de letras, que divido en bloques de cuatro para no dar pistas acerca de la separación de las palabras:

lubu sbnh ykls hthu johk ljbf vuvt iylu vxbp lyvh jvyk hytl uvoh tbjo vapl twvx blcp cphb uopk hsnv klsv zkls hugh luhz apss lyvh khyn hhua pnbh yvjp umsh jvfn hsnv jvyy lkvy

Y allá vamos. Voy a ir interrumpiendo la salida del bicho con notas para comentarla «en falso directo».


Yo

Eres un criptoanalista experto y capaz de decodificar gran cantidad de mensajes. Decodifica el siguiente mensaje realizando un análisis de las frecuencias de las diferentes letras, bajo la hipótesis de que el texto está escrito en español y que se trata de un cifrado de sustitución: “lubu sbnh ykls hthu johk ljbf vuvt iylu vxbp lyvh jvyk hytl uvoh tbjo vapl twvx blcp cphb uopk hsnv klsv zkls hugh luhz apss lyvh khyn hhua pnbh yvjp umsh jvfn hsnv jvyy lkvy”.

ChatGPT

Para decodificar el mensaje cifrado “lubu sbnh ykls hthu johk ljbf vuvt iylu vxbp lyvh jvyk hytl uvoh tbjo vapl twvx blcp cphb uopk hsnv klsv zkls hugh luhz apss lyvh khyn hhua pnbh yvjp umsh jvfn hsnv jvyy lkvy” utilizando un análisis de frecuencias y la hipótesis de que el texto está en español y es un cifrado de sustitución simple, seguiremos estos pasos:

Contar la frecuencia de cada letra en el texto cifrado:

   l: 20
   u: 15
   b: 8
   s: 10
   n: 7
   h: 15
   y: 7
   k: 8
   t: 6
   j: 8
   o: 5
   f: 3
   v: 13
   i: 4
   x: 3
   p: 6
   c: 3
   z: 1
   g: 1
   a: 2
   m: 2
   w: 2

Buena idea. Empezar por un análisis de frecuencias es lo que siempre se hace. Pero ¡las frecuencias están mal! La tabla correcta, que se puede sacar a mano pero yo saco con DCode, una web de herramientas de criptoanálisis, es:

H19
V16
L13
U11
Y11
S9
B8
K8
P8
J7
N6
T5
O4
A3
F2
X2
C2
Z2
I1
W1
G1
M1

Frecuencias comunes en español:

Las letras más frecuentes en español son: E, A, O, S, R, N, I, D, L, C, T, U, M, P, B, G, V, Y, Q, H, F, Z, J, Ñ, X, K, W.

Esto es correcto. Se puede comprobar hasta en la Wikipedia.

Hipótesis inicial:

  • ‘l’ es la más frecuente en el texto cifrado, por lo que podría corresponder a ‘E’ (la letra más frecuente en español).
  • ‘u’ es la segunda más frecuente, podría ser ‘A’.

Observamos combinaciones comunes para hacer ajustes adicionales.

Ya da igual lo que haga, todo va a estar mal. Pero vamos a quedarnos a ver qué pasa. Os adelanto que va a ser gracioso.

Reemplazos iniciales:

  • l = E
  • u = A

Si las frecuencias del texto encriptado estuvieran bien calculadas, sería la hipótesis más lógica. Para calcularlas bien solo hace falta saber contar, cosa que nuestro amigo no sabe hacer.

Reemplazo en el texto:

EAbA sAnh ykEs hthA johE Ejbf vAvt iylA vxbp Eyvh jvyk hytE Avoh tbjo vApl twvx Elcp cphA Aopk hsnv kEsv zkEs hAgh EhAz Apss Eyvh khyn hhuA pnbh yvjp Amsh jvfn hsnv jvyy Ekvy

Ir sustituyendo las letras del texto encriptado por las del desencriptado en mayúsculas es, en efecto, una buena idea. Me pregunto de dónde la habrá copiado.

Analizando patrones comunes:

“EAbA” no es claro en español, probemos más sustituciones. Ajustamos la frecuencia para ‘h’ y ‘v’ (que tienen frecuencia similar y podrían corresponder a letras como ‘R’ y ‘N’):

  • h = R
  • v = N

Actualizando el texto:

EAbA sAnh ykEs RtRA johE Ejbf NANt iylA Nxbp EyNh jykN RytE ANor tboj NApE twNx Elcp cpRA AoNk Rsnn kEsn zkEs RAgh EhAz Apss EyNh kRyn RhuA pnbR yNjp Amsh jNfn Rsnn jNyy EkNy

Pues claro que «EAbA no es claro en español», como que está todo mal. De hecho, no hay ninguna palabra posible que encaje ahí. Pero no importa, tirémonos a la piscina con más sustituciones.

Ajustando más patrones:

Probamos más hipótesis con palabras comunes y reemplazos:

  • ‘b’ aparece 8 veces, podría ser ‘O’
  • ‘k’ también 8 veces, podría ser ‘I’
EAOA sAnh yIEs RtRA johE EjOf NANt IyOA NxOp EyNh jyiN RyOE ANor tIOj NApl twNx ElcO cpRA AOIN Rsnn IEsn zIEs RAgh EhAz Apss EyNh IRyn RhOA pOnR yNjp Amsh jNfn Rsnn jNyy EINY

Según la tabla de frecuencias (¿la buena o la mala?), k podría ser I, pero b no tendría por qué ser O. Pero yo qué sé, cosas más locas se han visto.

Reconociendo más palabras comunes:

Suponemos ‘s’ como ‘L’ y ‘n’ como ‘D’

EAOA LAND yIEs RtRA johE EjOf NAAt IyOA NxOp EyLD jyiD RyOE ANDR tIOj NApl twNx ElcO cpRA AOID RsDD IEsD zIEs RADh EhAz ApLL EyLD IRyD RhOA pODR yDjp Amsh jDfn RsDD jDyy EIDY

Ya puestos, como quieras…

Finalizando con las últimas letras:

Ajustamos ‘j’ como ‘S’, ‘p’ como ‘M’, y otras posibles letras.

EAOA LAND yIEs RtRA SohE EjOf NAAt IyOA NxOM EyLD SyiD RyOE ANDR tIOM NAlE twNx ElcO cSRA AOID RsDD IEsD zIEs RADh EhAz ALlL EyLD IRyD RhOA MODR yDMS Amsh SDFn RsDD SDyy EIDY

Con estos reemplazos y verificando palabras comunes en español, podemos completar el descifrado final:

ESTA LAND YIES RTES SONE EOSA NAAT IYOA NXOM EYLD SIND RYOE ANDR TIOM NASE TWNX ELCO CSRA AOID RSDD IESD ZIES RADI EHZA ALLE EYLD IRYD RHOS MODR YDMS AMSH SDFN RSDD SDYY EIDY

Lo único que tiene más o menos claro es que el texto empieza por «Esta». Y está mal. Pero eso no va a impedir que el aristón, en un último y espectacular salto mortal, arroje (casi debería decir «vomite», aprovechando el solapamiento semántico) una respuesta.

Por lo tanto, el mensaje decodificado parece ser “ESTA ES UNA PRUEBA DE SUSTITUCION SIMPLE”.


Y se quedó tan ancho.

¿Sabéis lo más gracioso? Que probé con otro texto, más «obvio»:

lzal lzbu lqlt wsvk lmyh zljv kpmp jhkh jvub uhjp myhj lzhy klch svyz plal

Que viene a significar

este es un ejemplo de frase codificada con una cifra cesar de valor siete

Y, en dos ocasiones distintas, ofreció dos respuestas diferentes: «ESTE ES UN MENSAJE CIFRADO SIMPLE» y «ESTE ES UN MENSAJE ENCRIPTADO UTILIZANDO UN METODO DE CIFRADO SUBSTITUCION SIMPLE». Es sorprendente lo que se parece ChatGPT al alumno más despistado de toda el aula durante un examen. Si tuviera que ponerle nota, tendría que ser un dos como mucho, porque algo ha dicho bien. Pero me encantaría verlo en revisión.

  1. Un aristón es un organillo de manubrio. Pero yo he sacado la palabra del aristón poético de Antonio Machado, quizá su único experimento con el género de la ficción científica a través de sus heterónimos Jorge Meneses (como «inventor») y Juan de Mairena (como «usuario»). Contaré más de esta historia en un futuro artículo. ↩︎

Comentarios

Una respuesta a «Llamativa pero inútil»

  1. @blog @brucknerite Bueno, pero ya estamos mucho más cerca de la AGI