Esta entrada corresponde con el episodio #001 del podcast Ciencia Conjunta, si lo habéis escuchado, perfecto y si no, aún estáis a tiempo. Pero, en cualquiera de los casos, lo que aquí escribo no es tanto un guión de lo que ya dije sino que desarrollo un poco más en profundidad los temas que allí toqué.

En primer lugar, cuando alguien envía un mensaje mediante una transmisión o simplemente cuando escribe un código, por razones obvias le interesa que dicho mensaje pueda ser reproducido de manera totalmente correcta. Sin embargo, siempre existe una probabilidad, por muy pequeña que ésta sea, de que alguno de los caracteres enviados falle, por esto es importante utilizar algunos métodos relacionados con la Teoría de códigos que nos permiten detectar dichos fallos o incluso poder corregirlos.

Éste es el esquema que se lleva a cabo en el proceso de enviar un mensaje, en primer lugar, el emisor codifica el mensaje y, cuando el receptor lo recibe, ha de decodificarlo para obtener el mensaje original. Para evitar alteraciones en el resultado existen varios métodos, uno de ellos es mandar el mensaje repetido dos, tres o más veces, es decir, si queremos enviar la palabra “hola” deberíamos mandar “hhhooolllaaa” para así, si uno de los caracteres falla poder deducir su valor a partir de las dos repeticiones ya que la probabilidad de error suele ser pequeña y por lo tanto no sería muy probable que todas estas repeticiones fuesen erróneas. Otro método para evitar/detectar errores es utilizar al final del mensaje un carácter llamado de paso o de control, su finalidad es dar una información extra del mensaje para que, en caso de haber error, el receptor pueda solventarlo. Los ejemplos más claros de este método son el DNI o el ISBN. En el primer caso partimos de una reducción del alfabeto (se excluyen la O, la I, la U y la Ñ para evitar confusiones con el 0, el 1, la V y la N respectivamente) quedando 23 caracteres en total, a cada una de estas letras le asignamos un número entre el 0 y el 22. Por último lo que hacemos es la operación siguiente:

r=n(mod23)

Donde r es el resto de dividir el número del DNI entre 23 y este resto lo asignamos a la letra correspondiente con lo que nos queda el número del DNI seguido de la letra.

Por otra parte, la criptografía es el arte o la ciencia que se encarga de ocultar los mensajes a personas no autorizadas. Su origen etimológico proviene del griego donde cripto- significa oculto y -grafo escritura. De la misma manera, su origen histórico se remonta aproximadamente al año 400 a.C. en el cual, en la guerra entre Atenas y Esparta, los espartanos utilizaban un bastón llamado escítala en el cual enrollaban en forma de espiral una tira de cuero, escribían el mensaje sobre la tira enrollada y, posteriormente, desenrollaban dicha cinta. De esta forma, la única vía de obtener el mensaje original era volviendo a enrollar la tira sobre un bastón del mismo diámetro que el utilizado.

Pasado algún tiempo, nos encontramos con que, durante el auge del Imperio Romano, Julio César utilizaba su propia forma de cifrar los mensajes para evitar que sus enemigos se hicieran con ellos. Ésta consistía en sustituir cada letra del alfabeto por la situada tres posiciones a la derecha, es decir, si tenemos la palabra HOLA, su resultado sería KRÑD. Su representación analítica sería la siguiente:

f(x)=(x+3)mod27

Donde x representa la posición de la letra que queremos cifrar. Sin embargo, podemos crear métodos de encriptación más complejos si utilizamos funciones afines o funciones lineales como sería el caso siguiente en el que a y b son números naturales:

f(x)=(ax+b)mod27

Dando una zancada un poco más grande llegamos al último de los métodos que comentaré, el RSA. Debe su nombre a sus tres creadores Ron Rivest, Adi Shamir y Len Adleman. Se trata de un método que utiliza tanto una clave privada como una clave pública. Comenzamos eligiendo dos números primos “p” y “q” y calculamos su producto m=p·q. m es público mientras que p y q son valores privados necesarios para poder descifrar el código, con lo que cuanto mayor sea m, más difícil será de romper el código. Ahora elegimos un número e de forma que cumpla lo siguiente:

mcd(\varphi (m),e)=1

Hay que mencionar que:

\varphi(m)=(p-1)(q-1)

Y por último necesitamos un número “d” de forma que:

1=ed mod\varphi(m)

Con todo esto, la clave pública está formada por m y e, mientras que la privada la conforman p,q y d. Sólo nos queda definir por tanto la función que permitirá cifrar el mensaje, la cual es la siguiente:

f(x)=x^e mod m

La función inversa que nos permitiría deshacer el cifrado y, por tanto, obtener el mensaje original sería la siguiente:

g(x)=x^d mod m

Este cifrado es seguro en la medida en que se desconozca cómo los números primos se distribuyen entre los números naturales, con lo que si pudiésemos saber qué forma tiene dicha distribución el método carecería de sentido. Éste método es muy utilizado sobre todo para el comercio por internet y las claves bancarias, con lo que podría poner en jaque al mundo entero si dejase de ser segura. Por ello grandes empresas como AT&T o HP invierten grandes cantidades de dinero en matemáticos que permitan dar una mejor noción de la distribución de los números primos para poder mantener dicha seguridad.

Popularity: 15% [?]