jueves, 14 de julio de 2016

Criptografía (XXII): criptología para todos (III)

En este post introduzco ciertos conceptos básicos que nos ayudarán a comprender mejor los sistemas criptográficos modernos; como se verá, algunos de ellos basados en técnicas no tan nuevas.

Como en todos los posts que he escrito sobre criptografía en este blog, intentaré explicar lo que he entendido de la forma más sencilla posible, espero que sin cometer demasiados errores, con objeto de divulgar esta materia de la forma más comprensible de la que sea capaz.

Tal y como nos cuenta la Wikipedia, podemos considerar que la criptografía moderna comienza con Claude Shannon, cuyos trabajos a mediados del siglo XX establecieron una sólida base teórica para la criptografía y el criptoanálisis.

- Confusión: es una de las dos técnicas básicas, utilizada ya desde los orígenes de la criptografía, para ocultar la relación entre un mensaje sin cifrar o texto en claro y el texto cifrado o criptograma. Evidentemente, la clave (K) establece una relación entre ambos, y podemos decir que lo que realmente pretende la confusión es que a un criptoanalista le resulte lo más complicado posible el establecer la relación existente entre el criptograma y la clave (K) empleada en el cifrado.

El mecanismo empleado para conseguir la confusión es la sustitución, que, como ya sabemos, consiste en sustituir cada elemento de un texto en claro por otro u otros elementos en el texto cifrado.

- Difusión: es la otra técnica básica, también empleada desde los inicios de la criptografía, para ocultar la relación entre un mensaje sin cifrar o texto en claro y el texto cifrado o criptograma. En este caso, consistente en difundir o diluir las características del texto en claro a lo largo de todo el criptograma.

El mecanismo empleado para conseguir la difusión es la transposición, que, como también sabemos, consiste en cambiar de posición en el texto cifrado los elementos correspondientes a un texto en claro.

- Criptografía simétrica o de clave privada o secreta: en este tipo de criptosistemas la clave para descifrar un criptograma (K') se calcula a partir de la clave (K) que se utilizó para cifrar el texto en claro, y viceversa. Lo habitual en los criptosistemas de este tipo es que ambas claves (K y K') coincidan, es decir, que se utilice la misma clave para cifrar un mensaje y para su descifrado.
Por tanto, la clave debe mantenerse en secreto entre el emisor y el receptor, ya que si se conociera por parte de terceras personas éstas no tendrían ningún problema para descifrar el criptograma.

El principal problema de estos criptosistemas es precisamente lo anterior, es decir, mantener secreta la clave, ya que si se emplea un canal no seguro para enviarla se incurre en el mismo riesgo de que la intercepten que si enviáramos el texto en claro.

Todos los algoritmos de cifrado clásicos son simétricos, lo que no quiere decir que algunos de los modernos no lo sean también. La mayoría de los algoritmos de cifrado simétrico modernos se apoyan en los conceptos de confusión y difusión, comentados anteriormente y propuestos por Claude Shannony se denominan cifrados de producto.

- Criptografía asimétrica o de clave pública: en este tipo de criptosistemas la clave para descifrar un criptograma (K') es diferente de la clave (K) que se utilizó para cifrar el texto en claro (de ahí el nombre de cifrado asimétrico) y, además, aunque no son independientes, del conocimiento de K no es posible deducir K', o al menos hasta el momento no se conoce que nadie lo haya logrado.

Me explico: este tipo de criptosistemas se caracterizan porque tanto el emisor como el receptor tienen un par de claves (K y K'); la primera de ellas (K) se utiliza para cifrar los mensajes y es pública (denominada clave pública), mientras que la segunda se emplea para descifrar los mensajes y es secreta (denominada clave privada), y por tanto esta última no debe ser revelada bajo ninguna circunstancia a nadie, ni siquiera a las personas con las que vamos a intercambiar mensajes cifrados.
De esta forma, tal y como se observa en el gráfico anterior, para cifrar un mensaje el emisor lo hace con la clave pública del receptor (que como su nombre indica es pública y debe estar en posesión de cualquier persona que pretenda enviarle un mensaje cifrado) y sólo el receptor podrá descifrarlo utilizando su clave privada (que como su nombre indica sólo él posee).

Por tanto, en este tipo de criptosistemas se elimina el principal problema indicado para los criptosistemas de cifrado simétrico, ya que se evita la necesidad de que el emisor envíe al receptor la clave de descifrado.

Además, otra de las principales ventajas de este tipo de criptosistemas es que posibilitan comprobar la autenticidad de la información recibida, tanto en lo que se refiere a la verificación de la identidad del remitente (el emisor es quien dice ser) como a la comprobación de que ésta no ha sido modificada desde que se generó (integridad de la información, es decir, que el contenido es exactamente el que el emisor nos envió).

Mientras que en un criptosistema simétrico la autenticidad del mensaje cifrado radica en el secreto de la clave (sólo emisor y receptor la conocen y, por tanto y en principio, sólo el emisor legítimo puede cifrar un mensaje que pueda ser descifrado por el receptor utilizando la clave compartida por ambos), en un criptosistema asimétrico el emisor puede añadir al mensaje a enviar, cifrándolo con su clave privada, un resumen del mismo (que se obtiene mediante una función 'hash'), de tamaño fijo mucho menor que el del mensaje original y asociado unívocamente a este último (es prácticamente imposible encontrar otro mensaje que dé lugar al mismo resumen), para que el receptor compruebe tanto que realmente es el emisor quien ha enviado el mensaje, como que el mensaje no ha sido interceptado y modificado por una tercera persona.

Sin embargo, los criptosistemas asimétricos presentan también un inconveniente fundamental respecto a los criptosistemas simétricos, ya que la complejidad de cálculo que comportan los hace significativamente más lentos que los de cifrado simétrico, razón por la cual en la práctica se utilizan sistemas criptográficos híbridos (ver siguiente concepto).

Criptografía híbrida: en este tipo de criptosistemas el texto en claro se cifra mediante una clave de sesión (criptografía simétrica), correspondiente a cada mensaje particular y generada aleatoriamente, y la clave de sesión se cifra utilizando la clave pública del receptor (criptografía asimétrica), de tal manera que sólo el receptor puede obtener la clave de sesión mediante su clave privada (criptografía asimétrica) y posteriormente descifrar el texto cifrado mediante la clave de sesión (criptografía simétrica).
El proceso de cifrado híbrido incorporando la firma digital y el de posterior descifrado incorporando la verificación de la autenticidad del emisor y de la integridad de la información recibida serían como se muestra en la siguiente figura:
Hasta aquí, por no hacerlo muy extenso, este primer post sobre criptografía moderna, en el que he introducido los conceptos más básicos, y en los siguientes introduciré más conceptos, tanto referidos a la criptografía como al criptoanálisis.

No hay comentarios:

Publicar un comentario