viernes, 22 de marzo de 2013

Gráficas: Distintos tipos de encriptación

Como ya revisamos en una entrada anterior, existen distintos tipos de encriptación de datos. El siguiente artículo nos entrega un profundo análisis de estos procesos, complementado además, por gráficas explicativas. 

 Puede afirmarse que la criptografía o arte de hacer secreta la escritura nació con la escritura misma. Desde las primeras tablillas babilónicas cifradas hace más de 4.500 años hasta nuestros días, la criptografía ha evolucionado considerablemente, especialmente a partir de la irrupción de los ordenadores. En el siglo XX, la criptografía pasó de ser patrimonio casi exclusivo de militares, diplomáticos y grandes corporaciones a un artículo de uso cotidiano por todos los ciudadanos. Aunque tal vez inconscientes de ello, consumimos criptografía diariamente: al hablar a través del móvil, al sacar dinero del cajero electrónico, al ver canales de televisión de pago o al hacer compras por Internet. El mundo no existiría tal y como lo conocemos hoy día sin la criptografía.

La primera criptografía usada por el hombre fue la simétrica o de clave secreta
Para cifrar mensajes de correo, archivos del disco duro, registros de una base de datos, y en general para cifrar grandes cantidades de datos, se utiliza un tipo de algoritmo de cifrado conocido como de clave secreta o simétrico, representado en la figura 1.

La seguridad de un algoritmo de cifrado depende de dos factores. El primero de ellos es la robustez de su diseño. Durante muchos siglos se vinieron usando dos tipos de operaciones de cifrado: sustitución y transposición. En la sustitución se sustituyen los caracteres del mensaje por otros caracteres, que pueden ser del mismo alfabeto o de alfabetos diferentes. Uno de los primeros ejemplos históricos conocidos es el cifrado de César, cuyo funcionamiento se explica en la figura 2. Desde la Edad Media hasta principios del siglo XX, fueron de uso común los discos de cifrado basados en la operación de sustitución.

El mayor inconveniente del cifrado por sustitución es que no oculta los patrones lingüísticos de frecuencia de aparición de letras de cada idioma, por lo que resulta vulnerable a un criptoanálisis, el estudio de un texto cifrado con el fin de obtener el mensaje original o bien la clave con la que se cifró el mensaje. Por supuesto, la labor del criptoanalista se puede complicar utilizando una sustitución polialfabética, consistente en sustituir un carácter por varios caracteres distintos, de manera que la frecuencia de las letras quede ofuscada. Sin embargo, con textos suficientemente largos, aún puede obtenerse el mensaje original.


Otra operación de cifrado que se ha utilizado también desde antiguo consiste en la transposición, es decir, simplemente se cambian de sitio las letras del mensaje siguiendo una regla determinada, como en el ejemplo de la figura 3. Uno de los primeros ejemplos históricos de cifrado de transposición de los que tenemos conocimiento es la scitala espartana.

A menudo esta regla recibe el nombre de mapa de transposición. En este caso, el criptoanalista debe ordenar las letras en la secuencia correcta para reconstruir el mensaje original. Para ello, puede buscar palabras comunes, como artículos y preposiciones, o palabras clave que tenga certeza de que aparecerán en el mensaje estudiado, lo que le ayudará a determinar cuál ha sido la regla utilizada. Para aumentar la dificultad del criptoanálisis se puede aplicar repetidamente la misma regla o mapa de transposición, algo muy fácil de hacer con un ordenador.

Ahora bien, la transposición por sí sola tampoco sirve para cifrar textos de manera segura. Sin embargo, la robustez del algoritmo de cifrado puede mejorarse considerablemente si se combinan ambas operaciones, usando sustitución y transposición repetidamente sobre el mismo mensaje. Los algoritmos modernos de cifrado, como DES y AES, utilizan múltiples vueltas de cifrado en las que se combinan las dos operaciones, tal y como se muestra en la figura 4.

El objetivo es conseguir lo que se conoce como difusión y confusión. Idealmente, la apariencia de un texto cifrado debe ser totalmente aleatoria. Debe eliminarse cualquier relación estadística entre el mensaje original y su texto cifrado. La combinación de la sustitución y transposición difunde, es decir, distribuye o dispersa, la estructura estadística del mensaje sobre la totalidad del texto cifrado. En otras palabras, examinando el texto cifrado no se obtendrá más información sobre el mensaje original que examinando un texto aleatorio. Si se cambia un bit del texto en claro, debería cambiar en promedio la mitad de los bits del texto cifrado. Esta propiedad también se llama efecto de avalancha. Resumiendo, la difusión oculta la relación entre el texto en claro y el texto cifrado.

La confusión busca ocultar la relación entre el texto cifrado y la clave secreta. Si se cambia un solo bit de la clave, también debería cambiar en promedio la mitad de los bits del texto cifrado. Los algoritmos de cifrado que se sirven de la confusión y de la difusión se suelen llamar cifradores de producto. Cada aplicación de la confusión y de la difusión se produce en una vuelta de cifrado. Los cifradores modernos, como los ya mencionados DES y AES, suelen utilizar muchas vueltas de cifrado o iteraciones.

Por tanto, si un algoritmo de cifra está bien diseñado, un texto cifrado sólo se podrá descifrar si se conoce la clave secreta. En la buena criptografía se sigue siempre el principio de Kerckhoffs: la seguridad del sistema debe recaer en la seguridad de la clave, debiéndose suponer conocidos el resto de los parámetros del sistema criptográfico.

Si no se te ocurre cómo atacarlo, recurre a la fuerza bruta
El segundo factor para calibrar la seguridad de un algoritmo es la longitud de la clave utilizada. Cuando un criptoanalista no puede encontrar fallos en el algoritmo, siempre le queda recurrir a un ataque de fuerza bruta. Se trata de un método sin elegancia, que no ataca el algoritmo en sí, sino que busca exhaustivamente todos los posibles valores de la clave hasta dar con la correcta.

Hoy en día se estima que claves de 128 bits de longitud o más garantizarán la seguridad por muchos años. De hecho, algunos algoritmos permiten seleccionar a voluntad la longitud de la clave, como el actual estándar de cifrado AES, basado en el algoritmo criptográfico Rijndael.

Por consiguiente, si el diseño es robusto y la longitud de la clave es suficientemente larga, podemos considerar que el algoritmo es seguro. 

Números aleatorios para elegir buenas claves de cifrado
Elegir la clave de cifrado es un asunto muy importante. La clave debe ser perfectamente aleatoria. Ahora bien, los ordenadores son máquinas deterministas incapaces de generar números al azar. Una de las soluciones consiste en utilizar fuentes de entropía físicas, como por ejemplo registrar los movimientos de ratón del usuario, sus pulsaciones de teclas, y otras fuentes semejantes. Estas secuencias, además de ser muy difíciles de crear, no pueden reproducirse: nunca generará dos veces la misma secuencia aleatoria.

Para aquellas situaciones en que hiciera falta repetirlas, se crean las secuencias pseudoaleatorias. En este caso, se generan usando algoritmos deterministas, los cuales a partir de una semilla inicial son capaces de generar secuencias de bits que se comportan estadísticamente como si hubieran sido generadas por generadores verdaderamente aleatorios. Cualquiera que conozca la semilla podrá regenerar la secuencia.

Hay dos tipos de algoritmos de criptografía simétrica
Existen dos grandes familias de algoritmos simétricos o de clave secreta. Los algoritmos de cifrado en bloque y los algoritmos de cifrado en flujo.

En el caso de los algoritmos de cifrado en bloque, primero se divide el mensaje original en bloques de un tamaño determinado. Cada bloque se cifra siempre de la misma manera e independientemente de todos los demás. Por su parte, los algoritmos de cifrado en flujo funcionan de forma muy diferente, representada en la figura 5.

Como sería muy complicado hacer llegar al destinatario una clave tan larga como el mensaje, en la práctica lo que se hace es una pequeña trampa: en lugar de generar aleatoriamente toda la clave, se genera una pequeña semilla a partir de la cual, mediante alguno de los algoritmos deterministas de generación de números pseudoaleatorios ya mencionados, se genera la secuencia cifrante con la que se mezcla el texto en claro.

Los cifradores en bloque resultan inadecuados en aquellas aplicaciones en las que la información a cifrar no esté disponible en su totalidad, sino a retazos, como, por ejemplo, en las conversaciones telefónicas, ya que un bloque no puede cifrarse hasta que están disponibles todos sus bits.

Los cifradores en flujo no presentan este problema, puesto que cifran bit a bit la información a medida que les llega. De hecho, se suelen realizar por hardware, lo que hace que sean extremadamente rápidos y se los prefiera en aquellas aplicaciones en las que prima la velocidad.

La criptografía de clave pública soluciona el problema de la distribución de claves
Una vez cifrado un mensaje con la clave secreta, surge una nueva dificultad: ¿cómo enviarle al destinatario la clave secreta utilizada para cifrar el mensaje?

Se trata del mayor problema al que históricamente se ha enfrentado la criptografía, conocido como problema de distribución de la clave. ¿De qué sirve utilizar el mejor algoritmo de cifrado del mundo si no puede compartirse la clave con el destinatario del mensaje? Durante siglos la criptografía se ha enfrentado con poco éxito a este problema, hasta que en la década de 1970 los criptógrafos Diffie y Hellman inventaron la criptografía de clave pública.

En esta forma de criptografía se dispone de dos claves: una es pública y por tanto conocida por todo el mundo y la otra es privada y conocida solamente por su poseedor. Aunque cualquiera puede cifrar usando la clave pública, sólo el que posee la correspondiente clave privada podrá descifrar.

Por eso a la criptografía de clave pública se le llama también asimétrica, cuyo funcionamiento se ha representado en la figura 6. Si cifras un mensaje con la clave pública no podrás descifrarlo usando esa misma clave pública. Necesitarás usar la correspondiente clave privada. Lo que cifras con una clave, debes descifrarlo con la otra.

También puede cifrarse con la clave privada. Si cifras algo con tu clave privada, entonces cualquiera que conozca tu clave pública podrá descifrarlo. Cifrar un mensaje con tu clave privada equivale a firmarlo porque nadie más que el poseedor de la clave privada podría haber cifrado ese mensaje. Cuando cifras algo con tu clave privada estás demostrando tu autoría: sólo tú puedes cifrarlo, por lo tanto, has tenido que ser tú quien lo cifró. Eso es lo que se llama autenticación.

Y cualquiera puede descifrarlo usando tu clave pública. Lo que equivale a verificar la firma. Por eso es tan importante que tu clave privada sea privada y nunca la conozca nadie más que tú. En la práctica, debido a que los algoritmos de cifrado asimétrico son muy lentos, no suelen usarse para cifrar todo el mensaje, sino un resumen muy corto del mismo calculado gracias a funciones hash (función unidireccional de resumen que reduce el mensaje de partida a un valor de menor longitud, de forma que éste sirve como representación compacta del mensaje original).

La pareja de claves debería guardarse de forma segura, por ejemplo en una tarjeta inteligente, como el DNI electrónico.

Las firmas electrónicas y los certificados digitales solucionan el problema de la confianza
¿Cómo saber si la clave pública de un usuario es en realidad la suya y no la de un atacante que la ha sustituido por la suya propia? Se trata de un problema de confianza. Igual que se vio lo difícil que resulta distribuir claves secretas de manera segura, es igualmente difícil distribuir claves públicas de manera fiable. Hoy en día se ha resuelto al menos parcialmente usando las firmas electrónicas y los certificados digitales.

En principio, bastaría con cifrar un documento con la clave privada para obtener una firma digital segura, puesto que nadie excepto el poseedor de la clave privada puede hacerlo. Posteriormente, cualquier persona podría descifrarlo con su clave pública, demostrándose así la identidad del firmante. En la práctica, debido a que los algoritmos de clave pública requieren mucho tiempo para cifrar documentos largos, los protocolos de firma digital se implementan junto con funciones hash, de manera que en vez de firmar un documento, se firma un resumen del mismo. Este mecanismo implica el cifrado, mediante la clave privada del emisor, del resumen de los datos, los cuales serán transferidos junto con el mensaje. Los pasos del protocolo aparecen representados en la figura 7. 

De esta forma se ofrecen conjuntamente los servicios de:

1) no repudio, ya que nadie excepto tú podría haber firmado el documento; 2) autenticación, ya que si el documento viene firmado por ti, se puede estar seguro de tu identidad, dado que solo tú has podido firmarlo; y 3) integridad del documento, ya que en caso de ser modificado, resultaría imposible hacerlo de forma tal que se generase la misma función de resumen que había sido firmada.

A la vista de este esquema de funcionamiento de las firmas digitales, se plantea un problema evidente de confianza: ¿cómo tener certeza de que la clave pública de un usuario corresponde realmente a ese individuo y no ha sido falsificada por otro?, ¿por qué fiarse de esa clave pública antes de confiarle algún secreto?, ¿quién verifica la identidad del poseedor de la clave pública?

Todas estas preguntas encuentran su respuesta en la figura de los certificados digitales. Estos contienen tu clave pública y un conjunto de datos (nombre, DNI, dirección de correo electrónico, etc.), todo ello firmado por una autoridad de certificación, encargada de verificar la validez de la información. Es precisamente esta firma lo que proporciona confianza a quien recibe el certificado de que la clave pública que contiene este en realidad corresponde a la persona cuyos atributos aparecen también en el mismo.

Gracias a los certificados digitales, las firmas electrónicas y el cifrado, podemos hoy en día realizar transacciones seguras a través de Internet y del móvil, sabemos si un sitio web es en realidad el auténtico y no una suplantación y podemos enviar y recibir correos electrónicos cifrados y firmados. Ninguna de estas maravillas sería posible sin la criptografía.

5 comentarios:

  1. Primero que todo felicitarlo por la excelente información dada en este blog, pero aún así tengo una consulta, va referente sobre los intrusos de las redes aunque Ud. Pueda encriptar los datos, existen programas los cuales permiten de todas formas desbloquear los algoritmos, Ud. Cree que además de encriptar los datos por software es necesario usar firewall en su red para así bloquear en forma eficiente a los intrusos ?

    ResponderEliminar
  2. Si, efectivamente nunca esta de más, ya que trata de un dispositivo o conjunto de dispositivos configurados para permitir, limitar, cifrar, descifrar, el tráfico entre los diferentes ámbitos sobre la base de un conjunto de normas y otros criterios.
    Los cortafuegos pueden ser implementados en hardware o software, o una combinación de ambos. Los cortafuegos se utilizan con frecuencia para evitar que los usuarios de Internet no autorizados tengan acceso a redes privadas conectadas a Internet, especialmente intranets. Todos los mensajes que entren o salgan de la intranet pasan a través del cortafuegos, que examina cada mensaje y bloquea aquellos que no cumplen los criterios de seguridad especificados. También es frecuente conectar al cortafuegos a una tercera red, llamada «zona desmilitarizada» o DMZ, en la que se ubican los servidores de la organización que deben permanecer accesibles desde la red exterior.
    Un cortafuegos correctamente configurado añade una protección necesaria a la red, pero que en ningún caso debe considerarse suficiente. La seguridad informática abarca más ámbitos y más niveles de trabajo y protección.

    ResponderEliminar
  3. Es cierto, el tema es que a medida que las tecnologías experimentan cambios y evoluciones nuestros enemigos intrusos den las redes también lo hacen, por eso hay que estar resguardado en todo lo posible.

    Muchas gracias

    ResponderEliminar
  4. felicidades pero ay mas tipos de encriptacion de polvillos x ejemplo kisiera k des mas informacion de los mismos

    ResponderEliminar
  5. Felicidades por tan buen artículo

    ResponderEliminar