19 ene 2011

Análise criptográfico (por Fer Real)

Dende tempo atrás, o ser humano sentíu a necesidade de ocultar certo tipo de información da vista de ollos alleos. É ben sabido que un dos máis coñecidos exemplos atopámolo no Cifrado César, ideado polo propio emperador romano para enviar mensaxes confidenciais  aos seus xenerais e  consistente no desprazamento de cada letra do alfabeto un número determinado de posicións .

A técnica que permite enmascarar información mediante modificacións das referencias orixinais dunha lingua ou a través dun procedimento algorítmico polo que unha persoa allea ó autor non pode - a priori -  recuperar o contido orixinal, recibe o nome de criptografía.

O criptoanálise é o procedimento mediante o cal sométese un texto cifrado a estudo para obter a información que contén sen acceso. As primeiras “recomendacións” para descifrar mensaxes criptográficos datan dos séculos lX-X, escritas por  Sabbah Al-kindi.

Entre os métodos empregados máis coñecidos atópanse a forza bruta e os ataques de análises de frecuencia, os cales son os protagonistas deste artigo.

Este tipo de ataque está baseado na  “ecoloxía linguística” común a tódalas linguas, é dicir, existen determinadas letras do alfabeto  que son usadas con maior frecuencia ca outras, de xeito que estatísticamente obtense unha distribución.

Na imaxe (Wikipedia) apréciase a distribución de cada unha das letras do alfabeto español, podéndose comprobar que letras como 'a', 'e', 'o', 's'... son as máis empregadas fronte a letras como 'h', 'w' ou 'x'. Polo tanto a análise de frecuencia baséase en determinar a frecuencia das letras dun texto. Isto non quere dicir que  4 “e” sexan directamente un “e” , xa que podería ser un 'a'  , un 's'.... xa que teñen porcentaxes elevados de uso. O que saberíamos é que non poderían ser  'y', 'z' ou 'w' xa que a súa frecuencia é menor. Polo tanto, a través deste análise e dun pouco de combinatoria poderíase obter a mensaxe orixinal.

Esta técnica está estreitamente relacionada coa Lei de Zipf, que afirma que un pequeno número de palabras son empregadas con moita frecuencia, mentras que un gran número de palabras son pouco empregadas. 

De xeito matemático: 

P_n \sim 1/n^a
onde Pn representa a  frecuencia dunha  palabra ordenada n-ésima e a é case 1. Isto significa que o segundo elemento repetirase aproximadamente cunha frecuencia de 1/2 respecto ao  primeiro, e o  terceiro elemento cunha frecuencia de 1/3 y así sucesivamente. En definitiva vén a  dicir que a lonxitude das palabras é inversamente proporcional á súa frecuencia de aparición .

Moitas linguas artificiais como as linguas élficas de Tolkien, o Klingon de Star Treck... non cumpren esta regra, polo que a súa análise é moito máis complexa. Sen embargo, cumplir a Lei de Zipf non significa que se poida realizar unha análise sinxela e obter a mensaxe rapidamente en todos os casos!

Isto queda demostrado no Manuscrito Voynich, texto de orixe e lingua descoñecida que a pesares de cumplir dita lei, resístese - índa hoxe, tras 500 anos - ao  análise de expertos e aficionados criptólogos.

Outro dos textos máis famosos que se resisten é coñecido como Números de Beale. Un explorador americano que legou a súa fortuna (e tamén a súa ubicación!!) a quen puidera descifrar 3 pergaminos (en 1863 James B. Ward accidentalmente conseguiu desenmascarar o criptograma número dous, onde se explicaba en qué consistía o tesouro; a clave estaba baseada na Declaración de Independencia dos Estados Unidos).

A modo ilustrativo, un exemplo doado de aplicación da análise frecuencial do español podería ser:

 “sghs sg ib awbw asbgoxs”

Facendo contas obtemos que:  s(5),  g(3), B(3), W(2), A(2), X(1), O(1), H(1), I (1) , sendo a cantidade entre paréntese o número de repeticións, o resto de letras non aparece . Xa que a letra 'S' é a que máis repeticións ten, podemos supoñer que sería a letra 'E', que é a mais empregada no alfabeto español, polo tanto, substituímos :

EghE Eg ib awbw aEbgoxE

A continuación, a seguinte con mais repeticións é  “ G “, e se observamos a tabla, a segunda con máis frecuencia é 2A”... pero unha palabra que empece con EA... non ten sentido... polo que probamos con outra combinacion: a terceira letra frecuente sería “O “ e tampouco nos diría nada lóxico unha palabra que empece con EOE... así que se probamos coa cuarta mais frecuente no gráfico que sería o S. Esta si nos di algo… polo tanto substituímos todos os “G” por “S” e  vemos como queda:

EShE ES ib awbw aEbSoxE

A seguinte letra que se repite 3 veces é “B”... que se corrresponde co “R” e o “N” moi  seguido... se analizamos o texto, obtemos  un monosílabo “ib” polo que se aplicamos o “B” polo “R” non tería  lóxica xa que  “ES xR” non significa nada . Se empregamos a letra “N” como reemplazante do “B”: 

 EShE ES iN awNw aENSoxE 

A seguinte é o “W” que aparece 2 veces… e no gráfico tras o “N” o máis frecuentado é o “I”, polo que se  reemplazamos os “W” polos “I” quedaría:

EShE ES iN aINI aENSoxE

Tras o ‘W’, o seguinte é o ‘A’… e no gráfico de frecuencia, vemos que lle seguen ao “I” as letras: “D” e “C”, pero se nos fixamos na palabra “aINI” do texto cifrado, se reemplazamos por “D” ou por “C” non nos quedaria nada loxico, “DINI”, ou “CINI”... polo que seguimos coa que lle segue, o “D” e “C”… atopamos a letra “L” e a  letra “T”... pero  tampouco queda nada loxico… LINI ou TINI…

Seguidas das do “L” e do “T” podemos ver no gráfico de frecuencias que a que lle sigue é a letra “U”... e tampouco daría nada lóxico “UINI”, seguimos e atopamos o “M”... dando unha combinación lóxica xa que se reemplazamos os ‘A’ polos ‘M’ :

EShE ES iN MINI MENSoxE

Agora que xa vai tomando forma, usamos a lóxica debido á pouca frecuencia das letras sobrantes e da mostra (texto). Por deducción “ EshE” poderíamos reemplazar o “H” polo “T” quedando :

ESTE ES iN MINI MENSoxE 

Agora poderíamos reemplazar o “I” de “iN” por “UN” e quedaría 

ESTE ES UN MINI MENSoxE 

e finalmente “X” por “AJ” quedando o texto descifrado :

“ESTE ES UN MINI MENSAJE”

Se alguén se anima  facilítovos un texto cifrado famoso aparecido no libro  El escarabajo de Oro, escrito en inglés : e,a,o,y,d,h,n,r,s,t,u,c,f,g,l,m,w,b,k,p,q,x,z

53+++305))6*;4826)4+.)4+);806*;48+8
¶60))85;1+(;:+*8+83(88)5*+;46(;88*96
*?;8)*+(;485);5*+2:*+(;4956*2(5*—4)8
¶8*;4069285);)6+8)4++;1(+9;48081;8:8+
1;48+85;4)485+528806*81(+9;48;(88;4
(+?34;48)4+;161;:188;+?;



1 comentario:

  1. Aproveito para recomendar o libro "Os códigos secretos" de Simon Singh (http://www.simonsingh.net/The_Code_Book.html) que fai un repaso histórico moi entretido.

    ResponderEliminar