Revista Digital de Ciencias Bezmiliana ISSN:1989-497X

Criptografía

Pedro Pablo Fábrega Martínez

La criptografía es una ciencia que analiza y desarrolla sistemas de cifrado y descifrado de información. Esta ciencia ha estado presente en todas las comunidades desarrolladas y se ha utilizado en asuntos comerciales, políticos, religiosos, militares o simplemente para la privacidad por personal; siempre ha habido necesidad de transmitir una información de forma privada para que sólo el receptor tenga acceso y aparezca ilegible al resto. La criptografía ha servido tanto al amor como a la guerra.

Llave de accesoEl término criptografía tiene su origen en los términos griegos "kryptos", ocultar, y "grafos", escribir, y viene a significar literalmente "escritura oculta". Realmente, la criptografía consiste en el estudio de métodos matemáticos capaces de transformar un texto legible en un texto cifrado. Cuando hablamos de criptografía sólo nos referimos a los modelos matemáticos para cifrar un mensaje, y no a otras forma de transmisión como es la esteganografía, que consiste en ocultar un mensaje dentro de otro.

Otra ciencia íntimamente relacionada con la criptografía es el criptoanálisis. Cada texto cifrado ha supuesto un reto para ser descifrado y este reto se ha convertido en ciencia, el criptoanálisis.

http://es.wikipedia.org/wiki/Criptografía


Criptografía digital

La aparición del almacenamiento y transmisión digitales ha planteado nuevos desafíos a la criptografía para dar respuesta a la necesidad de privacidad de los datos que se transmiten y almacenan, pero también ha abierto nuevos caminos que despliegan el abanico de las posibilidades anteriormente impensables.

Una gran mayoría de los usuarios de internet no son conscientes de que las transmisiones que realizan pueden ser observadas en ciertos puntos de la red, por ejemplo, los datos de un formulario de una pagina web, un correo electrónico o cualquier otra cosa que transmitamos a través de la red. Un usuario de internet puede ser víctima de espionaje industrial o de delincuentes organizados si no toma las medidas de protección necesarias lo que necesariamente obliga a cifrar ciertas transmisiones.

Otro caso en el que se hace patente la necesidad de cifrado en las redes inalámbricas, tanto de voz como de datos. Como las comunicaciones inalámbricas las puede "escuchar" todo el mundo, un cotilla con unos conocimientos mínimos podría fisgar en los datos que uno transmite. Por esto las redes inalámbricas no sólo pueden protegerse de las conexiones ilegales mediante una contraseña, sino que también pueden cifrar el contenido de las comunicaciones para evitar escuchas indeseadas. Hacerlo o no hacerlo dependerá de cada caso.

La potencia de cálculo mediante sistemas digitales permite nuevas técnicas que por métodos manuales serían inabordables; hoy día en décimas de segundo se pueden realizar operaciones que manualmente podrían durar semanas. La criptografía clásica sólo se podía plantear utilizar algoritmos de cifrado que tuviesen una aplicación práctica, que fuera factible con los medios existentes. Los procesos digitales permiten utilizar fácilmente algoritmos simples que requieren cálculos intensivos irresolubles manualmente. No basta que un algoritmo de cifrado sea sólido, sino que además tiene que ser fácil de calcular, tiene que tener un rendimiento alto. Pensemos por ejemplo a la velocidad que se tiene que cifrar y descifrar la información de una red inalámbrica para que su rendimiento no se resienta; tienen que ser operaciones casi instantáneas.

La potencia de cálculo también es aplicable a la capacidad para descrifrar mensajes cifrados y el criptoanálisis ha hecho un uso intensivo de las nuevas tecnologías. Es posible descifrar un mensaje probando automáticamente todas las claves posibles, lo que se conoce con el nombre de ataque de fuerza bruta. El uso de la tecnología digital es un aspecto que la criptografía tiene que tener en cuenta para que la protección por contraseña sea real y no sólo aparente. Un tamaño de la claves suficientemente grande asegura que un ataque mediante fuerza bruta sea inviable.



Criptografía simétrica

La criptografía simétrica es el sistema criptográfico tradicional consistente en utilizar la misma clave para cifrar y descifrar un mensaje.

llave simétrica
llave simétrica
 

Estos sistemas criptográficos existen desde que existe la necesidad de transmitir mensajes, por ejemplo se atribuye a Julio César un sistema de cifrado que utilizaba para enviar órdenes a sus generales. En su honor se le denomina como cifrado césar y consiste en sustituir las letras de un texto por otras según una clave.

Vemos un ejemplo

Tenemos las letras del abecedario

A B C D E F G H I J K L M N Ñ O P Q R S T U V W X Y Z

Una clave 4 lo que hace es desplazar cuatro posiciones las letras poniendo a la izquierda las cuatro que sobran a la derecha.

W X Y Z A B C D E F G H I J K L M N Ñ O P Q R S T U V

Esta nueva distribución de letras constituye la clave de cifrado y el algoritmo se basa en sustituir todas las letras del texto por la letra que ocupa su misma posición en la clave, donde aparece una A podremos una W, donde aparece una B pondremos una X y así sucesivamente.

Podemos desarrollar fácilmente un algoritmo matemático para realizar este cifrado. En primer lugar definimos la operación módulo (mod) como el resto de la división de un número por otro, por ejemplo 10 mod 3=1 (ya que 10 dividido entre 3 tiene cociente 3 y resto 1.

Entonces, si llamamos P0 a la posición de la letra original, P1 a nueva posición que le corresponde y C al desplazamiento, tendremos que

P1 = (P0 + C) mod 27

Si el desplazamiento C=6, entonces:

La letra A, posición 0 ahora se representa por la letra que ocupa la posición

P1 = (0 + 5) mod 27. Como el resto de 5/27 es 5 esta es la posición que representa a la letra A.

Para la letra Y posición 25, su representación será la que corresponda a la posición

P1=(25 + 5) mod 27 = 3


La operación módulo de da un carácter circular a la formula de forma que cuando agotamos las posibilidades existentes volvemos a contar desde el principio. Por muy grande que sea un número el resto de dividirlo por 27 es siempre un número comprendido entre 0 y 26 lo cual nos deja ver la idea de que ciertos números son equivalentes. Serían equivalentes 0, 27, 54, 81,... porque todos ellos tienen resto 0 al dividirlos por 27. Lo mismo ocurre con 1, 28, 55, 82,..., todos son equivalentes a 1.

Y aquí un pequeño reto:

Jl añw pwj zebeyeh

En la actualidad estos métodos parecen un poco ingenuos, pero en sus tiempos tuvieron su importancia.

http://es.wikipedia.org/wiki/Cifrado_César

Máquina enigma
Máquina enigma

Otro sistema de cifrado muy extendido hoy día es el método XOR, basado en dicha operación binaria y su característica básica de que al aplicar dos veces una operación XOR a un mensaje obtenemos el mensaje original.

Tabla de XOR


ABA XOR B
000
011
101
110

Es decir, si los dos bits son iguales el resultado es cero y si son distintos es uno.

Supongamos que tenemos un mensaje 1001 1101 que queremos codificar con la clave 1100 0011

Realizamos una operación XOR entre los bits del mesaje y los bits de la clave, que básicamente consiste en poner un cero si los bits correspondientes del mensaje y la clave son iguales y un uno si son distintos:

1001 1101

1100 0011

_________

0101 1110


Y este resultado 0101 1110 sería el mensaje cifrado. Para descifar el mensaje sólo tenemos que volver a aplicar XOR con la misma clave:

0101 1110

1100 0011

_________

1001 1101


Este sistema de cifrado tiene una simplicidad extrema porque se basa en operaciones digitales básicas y es muy rápido pero no ofrece una gran protección. Algunas aplicaciones cifran sus datos usando este sistema.

Otros sistema de cifrado simétrico ampliamente utilizados son DES, 3DES, Blowfish e IDEA.

http://es.wikipedia.org/wiki/Criptografía_simétrica


El problema de la transmisión

entrega de claves
entrega de claves

La transmisión de las claves es el principal problema que presenta la criptografía simétrica y aunque realmente un problema ajeno a ella no podemos perderlo de vista. Si enviamos un texto cifrado también tendremos que enviar la correspondiente clave para poder descifrarlo; de alguna forma el destinatario tiene que conocer la clave, y claro, el envío de la clave se tiene que efectuar de forma legible, sin ningún tipo de cifrado porque no disponemos de él todavía. El atacante que quiera descifrar un mensaje le puede resultar más fácil conseguir la clave que intentar descifrar el mensaje por otros métodos.


La criptografía hizo suyo también el problema de la transmisión de claves y buscó soluciones para poder transmitir textos cifrados sin tener necesidad de intercambiar claves legibles.



Criptografía asimétrica


La criptografía asimétrica consiste en utilzar dos claves distintas en el proceso criptográfico, una clave se emplea para cifrar y otra distinta para descifrar. Una de las claves será un clave pública que todo el mundo puede conocer y se distribuye públicamente. La otra claves es privada y se utiliza para descifrar todo aquello que se haya cifrado con la clave pública. Si queremos que alguien nos envíe un mensaje cifrado le enviamos nuestra clave pública para cifrar el mesaje que sólo podrá descifrarse con nuestra clave privada y que sólo nosotros conocemos. Análogamente todo lo cifrado con la clave privada sólo se puede descifrar con la clave pública. Ingenioso ¿no?

Este mecanismo de cifrado se usa con normalidad en las comunicaciones digitales. Por ejemplo se denomina servidor seguro a un servidor web que cifra sus comunicaciones, cuando aparece el "candado" cerrado en el navegador y que normalmente comienzan por https. Cuando conectamos con un servidor seguro, lo primero que hace el servidor es enviar su clave pública para que cifremos nuestros envíos que el descifrará con su clave privada, garantizando así que la información que enviamos sólo él la puede leer. El servidor seguro sólo garantiza la privacidad de las comunicaciones pero no el posible almacenamiento que se haga de los datos transmitidos.

El mecanismo de protección de los datos transmitidos también se usa en ciertos servidores de correo para proteger la privacidad de los mensajes aunque el propio usuario no sea consciente de ello.

Debemos desconfiar de las páginas web donde tengamos que introducir información sensible y no dispongan de un sistema de cifrado. Algunos navegadores incluso avisan antes de enviar los datos de un formulario sin cifrado.

La aparición de la criptografía asimétrica no supuso ni mucho menos la desaparición de la criptografía simétrica. La criptografía simétrica no requiere un cálculo intensivo en comparación con la asimétrica lo que puede ser un serio inconveniente cuando se necesita una alta velocidad de cálculo como es el caso de páginas web o más aun en transmisiones inalámbricas. Para resolver este problema el uso de la criptografía asimétrica se limita a la transmisión de una clave simétrica generada aleatoriamente y mediante la cual emisor y receptor cifran y descifran su comunicaciones. La criptografía asimétrica sólo se utiliza para poder transmitir la clave de forma segura, lo que se denomina establecer un canal seguro de comunicación. De esta forma lo que realmente hemos resuelto a efectos prácticos es el envío de claves, porque el resto sigue utilizando criptografía simétrica.



Fundamentos matemáticos de la criptografía asimétrica.

Si llamamos m al mensaje legible que queremos cifrar, c al mensaje cifrado, pu a la llave pública y pr a la clave privada, el objetivo de la criptografía asimétrica es encontrar una pareja de funciones que verifiquen que:



La criptografía parte de una premisa fundamental: Para que el cifrado sea consistente las funciones deben ser conocidas públicamente. La seguridad del cifrado no debe basarse en el desconocimiento de los algoritmos, sino en la solidez de las claves. Ocultar un algoritmo sólo ofrece una falsa apariencia de seguridad que en el momento más inoportuno puede ponerse al descubierto.


Algoritmo RSA

Diffie y Hellman
Diffie y Hellman
 

Diffie y Hellman realizaron a mediados de los años 70 una primera propuesta de intercambio de claves utilizando criptografía asimétrica pero fueron River, Shamir y Adelman (RSA) los que desarrollaron uno de los algoritmos base de esta criptografía.

El algoritmo RSA consta de dos partes, una primera para generar las parejas de llaves públicas y privadas y una segunda parte para cifrar y descifrar mensajes.

El algoritmo RSA se apoya en el álgebra modular, que como veremos no resulta demasiado complicado. A continuación vamos a recordar algunas definiciones y propiedades en los que se basa el algoritmo RSA.

Dos números se dicen primos relativos, primos entre sí o coprimos cuando no tienen factores comunes diferentes de 1, o lo que es lo mismo, su máximo común divisor es igual a 1.

Llamamos Zn={0, 1, 2, ···, n-1} al subconjunto de Z, conjunto de números enteros entre 0 y n-1. Este conjunto representa todos los restos posibles al dividir un número entero por n.

Decimos que dos números a y b son equivalentes modulo n cuando ambos tienen el mismo resto al dividirlos por n. El número de valores equivalentes módulo n distintos es precisamente n y van desde 0 hasta n-1. Por ejemplo 1, 6 y 11 son equivalentes módulo 5 porque es resto de dividirlos por 5 es en los tres casos 1.

Rivest, Shamir, Adelman
Rivest, Shamir, Adelman
 

El indicador de Euler, φ(n), representa la cantidad de números naturales menores o iguales a n y primos relativos con n. Evidentemente si n es primo φ(n)=n-1

El indicador de Euler verifica que dados dos p y q son números primos distintos

φ(p·q)=φ(p)· φ(q)=(p-1)·(q-1)

Euler
Euler

El Pequeño Teorema de Fermat afirma que si se cumple que p es primo y m y n son enteros positivos con

entonces

para cualquier entero a. Dicho de otra forma si m y n tienen el mismo resto al dividir por p-1 entonces am y an tienen el mismo resto al dividir por p.

 

Más detalles en http://es.wikipedia.org/wiki/Pequeño_teorema_de_Fermat

Fermat
Fermat

Para generar las llaves RSA nos basamos en las anteriores propiedades para determinar dos valores que actúen como llave pública y privada.

En primer lugar es necesario tomar dos números primos, p y q y calculamos su producto:

n=p . q

Este valor es público y forma parte tanto de la llave pública como de la llave privada.

Para generar la llave privada primero tenemos que calcular un número, que sólo tendrá un uso temporal, que verifique que:

X = (p-1)(q-1) que representa cuantos primos relativos tiene n=p·q según las propiedades del indicador de Euler.

Ahora calculamos un número cualquiera e que sea primo relativo con X. Este número e constituye la llave privada junto con n, por lo que la denominaremos (e,n). En la realidad e es un número muy grande.

Por último escogemos un número d, que va a formar parte de la llave pública, que verifique:

e·d=1 mod X

Bajo estas condiciones se cumple que:



Es decir si m es el mensaje legible la función de cifrado c es



y la función para descifrar es :



Si leemos el proceso con un mínimo de atención podemos pensar que si las claves privadas y públicas las podemos obtener a partir de p y q y n=p·q es público cualquiera podría obtener una llave privada siguiendo el mismo proceso a partir del valor conocido n, y esto es cierto, pero la solidez del cifrado RSA se basa en la dificultad de factorizar números grandes para poder obtener los valores p y q.

Se han realizado cálculos del tiempo requerido para determinar una clave de 1024 bits y con las posibilidades de cálculo actuales se tardarían millones de años, unos trescientos mil millones de años. Si la claves es de sólo 512 bits sólo se tardarían treinta mil años en averiguarla.

Una de la líneas actuales de investigación del criptoanálisis consiste en desarrollar algoritmos que faciliten esta factorización en tiempos razonables.


Ejemplo:

Tomamos dos números primos

p=3, q=5

n= p·q = 15

X= (p-1)·(q-1)=8

Buscamos un número primo relativo con X=8:

e=3 que va a ser parte de nuestra llave privada junto con n

Ahora calculamos la clave pública, que debe verificar que

d·e=1 mod X o lo que es lo mismo, existe una constante k tal que

Por ejemplo para k=4 obtenemos d=11

d=11 es parte de nuestra llave pública junto con n

Ahora vamos a comprobar mediante algunos mensajes que el cifrado efectivamente funciona:

Tenemos el mensaje m=2 que queremos cifrar y vamos a representar c el mensaje cifrado:



Entonces nuestro mensaje cifrado es 8. Observamos que para cifrar el mensaje sólo hemos usado la llave privada (e,n).

Ahora vamos a descifrar el mensaje cifrado c=8



y observamos como obtenemos el mensaje original utilizando sólo la llave pública (d,n).


Veamos otro ejemplo.

Tenemos el mensaje m=7

y hemos cifado el mensaje m=7 con la llave (3,15) y obtenemos c=13

Ahora desciframos el mensaje c=13 con la llave (11,15):

 

 

Con este simple ejemplo hemos comprobado como es posible utilizar una clave  para cifrar los datos y otra distinta para descifrarlos y de esta forma evitamos tener que transmitir las claves para poder coordinar al emisor y al receptor.

Pedro Pablo



ISSN:1989-497X
Creative Commons License
Esta obra está bajo una licencia de Creative Commons. ©2012 Revista Científica.