Y mientras realizaba varios intentos por descifrarlo, varias preguntas iban pasando por mi mente. “¿Que será lo que tiene escrito? ¿Qué método habrá usado? ¿Por qué está escondido el mensaje? ¿Será que no se suponga que lo deba leer yo?” Después de un par de intentos fallidos, la frustración aumentó. “Y si, ¿es sólo texto sin sentido? Como el que yo alguna ves le escribí? No, no. Por supuesto que no, ahí está la puntuación intacta, esto si parece un mensaje oculto, no como el mío que eran sólo caracteres al azar.”
Al tercer intento logré descifrar el mensaje, le contesté algo usando el mismo cifrado, y pues, ahí debería de haber terminado la historia.
Pero algo seguía dando vueltas en mi cabeza, “Hubiera estado genial, si en verdad el mensaje fuera indescifrable. Lo que me hizo seguir tratando de descifrarlo fue el echo de que el mensaje parecía estar cifrado, y no sólo ser una cadena sin sentido de caracteres. ¿Será posible crear un texto que paresca ser un mensaje cifrado pero que, en verdad, no lo sea?”
El reto para mi fue crear entonces una cadena que pareciera codificada, pero que no lo fuera. Después de meditarlo un poco me pareció que la forma más sencilla de hacerlo, sería generar una secuencia de caracteres medio aleatorios, pero con frecuencias y posiciones relativas similares a cadenas en, por ejemplo, español. Después de generar dicha cadena bastaría con aplicar un método sencillo para codificar como ROT13 para ‘ocultar’ los caracteres.
Usando un sencillo script de perl, tomé algunas estadísticas de uno de mis posts. Medí la distribución del número de sub-oraciones por oración, de palabras por sub-oración, de número de letras por palabra, y la distribución del número de ocurrencias de cada carácter en todo el texto. Para que la forma de las oraciones y palabras fuera más parecida a la realidad, medí también las relaciones entre tamaños de palabras y letras consecutivas (cuál es la probabilidad de ver una x después de una y, etc.).
Recabados estos datos, simplemente generé caracteres, palabras, sub- y oraciones al azar siguiendo la misma distribución encontrada en mi texto. Al final yo mismo me impresioné por los resultados pues las palabras generadas realmente parecían pronunciables. Generé palabras cómo ‘eranom’, ‘lulecunodama’ e, incluso, ‘queso’!
Para darse una idea de lo que todo ésto significa comparen las siguientes cadenas
(a) kjsdhf kjadhs fkjdsahf kjashdfLa primera cadena (a) la generé simplemente golpeando mis manos contra el teclado, noten que no es una buena manera de generar sin sentidos; letras que aparecen cerca en el teclado tienden a aparecer cerca en la cadena. La segunda cadena (b) es generada completamente al azar (distribución uniforme), noten, por ejemplo que las palabras son impronunciables y no se parecen en nada al español. La cadena (c) fue la generada con mi método, las palabras ‘parecen’ un poco más pronunciables y las longitudes de las palabras un poco más naturales. Finalmente (d) es la obtenida aplicando ROT13 a la anterior (c).
(b) vabxc zeyzt gmypy auzqy scajb mvvfx htdju lzguk
(c) quesiomocb eni no scuwsi estom yxper meorolue sc
(d) dhrfvbzbpo rav ab fphjfv rfgbz lkcre zrbebyhr fp
Lo se, estoy un poco loco.