martes, julio 06, 2010

Criptografía clásica. Sustituciones Monoalfabéticas. Cifrado de César

Cifrado de César

Descripción

    Uno de los criptosistemas más antiguos se lo debemos a Julio César. El método es bastante sencillo, está basado en sustituciones: la letra cifrada se obtiene a partir de la original desplazándola k posiciones a la derecha. El alfabeto se considera cíclico, esto es que la letra siguiente a la z es la a y que la anterior a la a es la z.

La llave (clave) de este cifrado es el valor de k que se ha usado para cifrar el texto, y éste valor debe permanecer secreto, ya que si se hace público, cualquiera podría descifrar el texto de forma fácil, con sólo desplazar a la izquierda las letras del texto cifrado k lugares a la izquierda.

A cada letra se le asigna un código numérico que no es más que su posición en el alfabeto, la codificación de las letras es por tanto:

A B C D E F G H I J K  L  M  N  Ñ
 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

O  P  Q  R  S  T  U  V  W  X  Y  Z
15 16 17 18 19 20 21 22 23 24 25 26

De una forma más formal el cifrado de César se puede definir como:

Ek = (i+k) mod q

Donde i mod n denota al único entero j entre 0 y n-1 tal que j es congruente con i módulo n. Además, q representa el total del letras del alfabeto (en el caso del castellano q = 27), i el índice de letra que se quiere cifrar y k el desplazamiento que se va a aplicar. Se supone que tanto k como i están entre 0 y q-1 (ambos extremos incluidos). Por lo tanto tendremos q cifrados de César diferentes, uno para cada valor de k que escojamos. El desplazamiento que aplicaba César era k = 3 según los documentos de la época, aunque luego el cifrado se generalizó al que se ha expuesto anteriormente.

Veamos algunos ejemplos:

E26(IBM) = HAL
 E6(HOLA) = NUQA
 E1(PATATA) = QBUBUB

Criptoanálisis

   El criptoanálisis de textos cifrados con este método va a ser muy fácil, ya que existen sólo 27 llaves. Además, como con todos los cifrados monoalfabéticos, se van a mantener las frecuencias de aparición de las letras del alfabeto (http://darthnet.blogspot.com/2010/06/criptografia-clasica-datos-estadisticos.html, http://www.kriptopolis.org/criptografia-clasica-ii). En este caso estarán desplazadas según la llave que se haya escogido, en las siguientes gráficas se puede apreciar cómo se desplazan las frecuencias del castellano al aplicar el cifrado E3.


En la gráfica anterior están reflejadas las frecuencias de las letras en castellano, y en la siguiente se puede apreciar cómo se desplazan tres posiciones a la derecha al aplicar E3.


Hay varias formas de abordar el problema, la primera que se le viene a cualquiera a la cabeza es la de aplicar la fuerza bruta, pero como sabemos que este cifrado hace un desplazamiento de las frecuencias de aparición de las letras, podemos aprovecharnos de esto y hacer un análisis estadístico del texto que nos simplificará bastante el trabajo.

- Fuerza bruta

Ya que sólo existen 27 llaves posibles, se trata de ir probando cada uno de los posibles desplazamientos hasta que el texto cifrado cobre sentido. Vamos a intentar descifra el texto: JYOWAVNYHMOH

 0 JYOWAVNYHMOH
 1 KZPXBWÑZINPI
 2 LAQYCXOAJÑQJ
 3 MBRZDYPBKORK
 4 NCSAEZQCLPSL
 5 ÑDTBFARDMQTM
 6 OEUCGBSENRUN
 7 PFVDHCTFÑSVÑ
 8 QGWEIDUGOTWO
 9 RHXFJEVHPUXP
10 SIYGKFWIQVYQ
11 TJZHLGXJRWZR
12 UKAIMHYKSXAS
13 VLBJNIZLTYBT
14 WMCKHJAMUZCU
15 XNDLOKBNVADV
16 YÑEMPLCÑWBEW
17 ZOFNQMDOXCFX
18 APGÑRNEPYDGY
19 BQHOSÑFQZEHZ
20 CRIPTOGRAFIA
21 DSJQUPHSBGJB
22 ETKRVQITCHKC
23 FULSWRJUDILD
24 GVMTXSKVEJME
25 HWNUYTLWFKNF
26 IXÑVZUMXGLÑG

Como podemos observar la prueba numerada como 20 contiene el texto llano correspondiente a nuestro texto cifrado. Por tanto el texto JYOWAVNYHMOH se descifra como CRIPTOGRAFIA.

Análisis estadístico del texto

Supongamos que nos encontramos con el siguiente texto cifrado:

Edqjnrn qr hud od flxgdg iuhvfd b wudqtxlod gh whpsorv b fdqdohv txh br hvshuded. Ho oxjdu kdeld shuglgr vx ruljlqdo fdudfwhu wdl kdvwd wdo sxqwr txh or txh txhgded uhvxowded devxugr b shuyhuvr hq phglr gh wdq dfxvdgd rfflghqwdolcdflrq. Orv uhvlghqwhv hawudqmhurv hvwdedq gh dfxhugr hq txh kdeld vlgr xq oxjdu kdelwdeoh kdvwd txh oohjdurq odv wursdv hvwdgrxqlghqvhv

Lo primero que hay que hacer es hacer un análisis estadístico del texto cifrado y ver cuáles son las letras más frecuentes, que en este caso son d, h, v, u y r, y se intentan sustituir por las letras más frecuentes del castellano, que según la gráfica anterior son e, a, o, s y n.

Probamos a sustituir la d por la e, esto significa que estamos suponiendo que el texto se cifró con E26, ya que d = (e + 26) mod 27 , luego si deshacemos los veintiséis desplazamientos a la derecha que hace E26 tenemos que la primera palabra del texto Edqjnrn pasa a ser Dcpimqm, que no tiene mucho sentido en castellano, luego parece que E26 no se usó para cifrar el texto.

Vamos a probar ahora a sustituir la segunda letra más probable del texto cifrado, h, por la e a ver si hay mejor suerte. Este cambio supone que para cifrar se usó E3, luego vamos a probar con la primera palabra a ver si toma sentido. Edqjnrn se convierte en Bangkok, que parece una palabra castellana. Para asegurarnos si verdaderamente hemos encontrado la llave, vamos a probar ahora con la palabra flxgdg. Esta palabra pasa a ser ciudad, que es claramente una palabra castellana. Desciframos el resto del texto y obtenemos:

Bangkok no era la ciudad fresca y tranquila de templos y canales que yo esperaba. El lugar había perdido su original carácter tai hasta tal punto que lo que quedaba resultaba absurdo y perverso en medio de tan acusada occidentalización. Los residentes extranjeros estaban de acuerdo en que había sido un lugar habitable hasta que llegaron las tropas estadounidenses

Luego ya sabemos que la llave que se ha usado para cifrar el texto ha sido 3 y tenemos descifrado el texto.

Este texto ha sido extraído de Memorias de un nómada, de Paul Bowles.

No hay comentarios: