sábado, 6 de octubre de 2012

Criptografía y los Diferentes Tipos de Cifrados



Breve Historia de la Criptografía
Los criptosistemas pueden clasificarse según:
    a) Su relación con la Historia en:
        - Sistemas Clásicos y Sistemas Modernos
O bien según:
b) El tratamiento de la información a cifrar en:
     - Cifrado en Bloque y Cifrado en Flujo
c) El tipo de clave utilizada en la cifra en:
     - Sistema con Clave Secreta y Sistema con Clave Pública

La criptografía es casi tan antigua como las primeras civilizaciones de nuestro planeta. Ya en el siglo V antes de J.C. se usaban técnicas de cifra para proteger a la información. Se pretendía garantizar sólo la confidencialidad y la autenticidad de los mensajes.
Los mayores avances se lograron en la Segunda Guerra Mundial: los países en conflicto tenían un gran número de técnicos encargados de romper los mensajes cifrados de los teletipos.
Tanto máquinas, artilugios de cifra, como los algoritmos que trabajaban matemáticamente dentro de un cuerpo finito n, hacen uso de dos técnicas básicas orientadas a caracteres y que, muchos siglos después, propone Shannon:
      * Sustitución: un carácter o letra se modifica o sustituye por otro elemento en la cifra.
  * Transposición: los caracteres o letras del mensaje se redistribuyen sin modificarlos y según unas reglas, dentro del criptograma. También se le conoce como permutación.



La criptografía clásica abarca desde tiempos inmemoriales hasta la mitad del siglo XX. El punto de inflexión en esta clasificación la marcan tres hechos relevantes:
v  En el año 1948 se publica el estudio de Claude Shannon sobre la Teoría de la Información.
v  En 1974 aparece el estándar de cifra DES.
v  En el año 1976 se publica el estudio realizado por W. Diffie y M. Hellman sobre la aplicación de funciones matemáticas de un solo sentido a un modelo de cifra, denominado cifrado con clave pública.

Tipos de Cifrado Clásico

Transposición
Consiste en crear el texto cifrado simplemente desordenando las unidades que forman el texto original; los algoritmos de transposición, reordenan las letras pero no las disfrazan.
Ejemplo de transposición:
TU SECRETO ES TU PRISIONERO; SI LO SUELTAS, TU ERES
SU PRISIONERO


  Sustitución
Consiste en sustituir las unidades del texto original por otras; Los algoritmos de sustitución y los códigos, preservan el orden de los símbolos en claro, pero los disfrazan.
Ejemplo de sustitución:
ENCONTREMONOS A MEDIANOCHE

Primer cifrado por transposición: escítala.
La escítala era usada en el siglo V a.d.C. por el pueblo griego de los lacedemonios. Consistía en un bastón en el que se enrollaba una cinta de cuero y luego se escribía en ella el mensaje de forma longitudinal. Al desenrollar la cinta, las letras aparecen desordenadas. La única posibilidad de recuperar el texto en claro pasaba por enrollar dicha cinta en un bastón con el mismo diámetro que el usado en el extremo emisor y leer el mensaje de forma longitudinal. La clave del sistema está en el diámetro del bastón. Se trata de una cifra por transposición pues los caracteres del criptograma son los mismos que en el texto en claro distribuidos de otra forma.


 





 En ese bastón residía la fortaleza de un pueblo. Hoy en día el popular bastón de mando que se le entrega al Alcalde de una ciudad proviene de esos tiempos remotos.
El texto en claro es:
M = ASI CIFRABAN CON LA ESCITALA
El texto cifrado o criptograma será:
C = AAC SNI ICT COA INL FLA RA AE BS


Primer cifrado por sustitución: Polybios
Es el cifrado por sustitución de caracteres más antiguo que se conoce (siglo II a.d.C.) pero como duplica el tamaño del texto en claro, con letras o números, resulta poco interesante.

 

El cifrado del César
En el siglo I a.d.C., Julio César usa este cifrado, cuyo algoritmo consiste en el desplazamiento de tres espacios hacia la derecha de los caracteres del texto en claro. Es un cifrado por sustitución monoalfabético en el que las operaciones se realizan módulo n, siendo n el número de elementos del alfabeto (en aquel entonces latín).


Cada letra se cifrará siempre igual. Es una gran debilidad y hace que este sistema sea muy vulnerable y fácil de atacar simplemente usando las estadísticas del lenguaje.


El cifrado Pigpen
La cifra de sustitución monoalfabética perduró a través de los siglos en formas diversas.
Por ejemplo la cifra de los templarios:
El Temple era una orden de monjes fundada en el siglo XII., cuya misión principal era asegurar la seguridad de los peregrinos en Tierra Santa. Rápidamente, los templarios se desentendieron de este objetivo, y se enriquecieron considerablemente hasta el punto de llegar a ser tesoreros del rey y del Papa. Para codificar las letras de crédito que ellos intercambiaban, ellos remplazaban cada letra por un símbolo, siguiendo la sustitución siguiente:
 

Otro ejemplo es la cifra Pigpen fue utilizada por los masones en el siglo XVIII para preservar la privacidad de sus archivos, y todavía la usan los niños hoy en día. La cifra no sustituye una letra por otra, sino que sustituye cada letra por un símbolo de acuerdo al siguiente modelo:

 



Sistemas Modernos de la Criptografía

¿Qué es la criptografía?
Es la ciencia que estudia los métodos y procedimientos para modificar los datos, con objeto de alcanzar las características de seguridad. Las principales características que un sistema de seguridad quiere obtener son:

v  Confidencialidad. Consiste en garantizar que sólo las personas autorizadas tienen acceso a la información.

v  Integridad. Consiste en garantizar que el documento original no ha sido modificado. El documento puede ser tanto público como confidencial.

v  Autenticación. Permite garantizar la identidad del autor de la información.

Existen diversos algoritmos matemáticos que intentan cubrir una o varias de estas características básicas de seguridad. El nivel de cumplimiento de sus objetivos es difícil de evaluar, ya que diversos algoritmos pueden ser vulnerables ante técnicas de ataque diferentes, además la mayoría de los algoritmos pueden trabajar con claves de distinta longitud. Lo cual afecta directamente a la robustez.

Por otro lado, existen otras características, a parte de la robustez del algoritmo, que también influyen en el proceso de selección del algoritmo más apropiado para una determinada aplicación. Algunas de estas características son: el tiempo de cálculo del proceso de cifrado, el tiempo de cálculo del proceso de descifrado, la relación de tamaño entre el documento original y el documento cifrado, etc.

En general los algoritmos criptográficos se pueden clasificar en tres grandes familias.
v  Criptografía de clave secreta o criptografía simétrica.
v  Criptografía de clave pública o criptografía asimétrica.
v  Algoritmos HASH o de resumen.

A continuación se describe cada una de estas familias de algoritmos, así como los algoritmos más utilizados dentro de cada familia.

Criptografía de clave secreta
Se incluyen en esta familia el conjunto de algoritmos diseñados para cifrar un mensaje utilizando una única clave conocida por los dos interlocutores, de manera que el documento cifrado sólo pueda descifrarse conociendo dicha clave secreta. Algunas de las características más destacadas de este tipo de algoritmos son las siguientes:

Ø  A partir del mensaje cifrado no se puede obtener el mensaje original ni la clave que se ha utilizando, aunque se conozcan todos los detalles del algoritmo criptográfico utilizado1.
Ø  Se utiliza la misma clave para cifrar el mensaje original que para descifrar el mensaje codificado.

Ø  Emisor y receptor deben haber acordado una clave común por medio de un canal de comunicación confidencial antes de poder intercambiar información confidencial por un canal de comunicación inseguro.

Los algoritmos simétricos más conocidos son: DES, 3DES, RC2, RC4, RC5, IDEA, Blowfish y AES.

El algoritmo DES, basado en Lucifer de IBM (1975), fue seleccionado como algoritmo estándar de cifrado en 1977 por NIST (National Institute of Standards and Technology, USA). Utiliza claves de cifrado bastante cortas (56 bits, de los cuales sólo se utilizan 48 bits) y hoy en día se considera poco robusto, sobre todo desde que en 1998 la Electronica Frontier Foundation hizo público un crackeador de código DES capaz de descifrar mensajes DES en menos de 3 días.



Criptografía de clave pública

Esta categoría incluye un conjunto de algoritmos criptográficos que utilizan dos claves distintas para cifrar y para descifrar el mensaje. Ambas claves tienen una relación matemática entre sí, pero la seguridad de esta técnica se basa en que el conocimiento de una de las claves no permite descubrir cuál es la otra clave. En realidad sería necesario conocer todos los números primos grandes para ser capaz de deducir una clave a partir de otra, pero está demostrado que en la práctica se tardarían demasiados años sólo en el proceso de obtención de los número primos grandes.

Cada usuario cuenta con una pareja de claves, una la mantiene en secreto y se denomina clave privada y otra la distribuye libremente y se denomina clave pública. Para enviar un mensaje confidencial sólo hace falta conocer la clave pública del destinatario y cifrar en mensaje utilizando dicha clave. En este caso los algoritmos asimétricos garantizan que el mensaje original sólo puede volver a recuperarse utilizando la clave privada del destinatario (ver el esquema de la Figura 2). Dado que la clave privada se mantiene en secreto, sólo el destinatario podrá descifrar el mensaje.
Algunas de las características más destacadas de este tipo de algoritmos son las siguientes:

Se utilizan una pareja de claves denominadas clave pública y clave privada, pero a partir de la clave pública no es posible descubrir la clave privada.
A partir del mensaje cifrado no se puede obtener el mensaje original, aunque se conozcan todos los detalles del algoritmo criptográfico utilizado y aunque se conozca la clave pública utilizada para cifrarlo.
Emisor y receptor no requieren establecer ningún acuerdo sobre la clave a utilizar. El emisor se limita a obtener una copia de la clave pública del receptor, lo cual se puede realizar, en principio, por cualquier medio de comunicación aunque sea inseguro.

A diferencia de los algoritmos de clave secreta, que existen desde los tiempos de los romanos, los métodos asimétricos son muy recientes. En 1976, Whitfield Diffie y Martin Hellman crearon un método con la ayuda de Ralph Merkle para iniciar una comunicación segura sin haber acordado previamente una clave secreta. El método se conoce como Diffie-Hellman Key Exchange [13]. Poco más tarde se publicó el primer algoritmo asimétrico completo, denominado RSA, que sigue siendo el más utilizado en la actualidad.

 

Algoritmos HASH o de resumen

Los algoritmos HASH, parten de una información de entrada de longitud indeterminada y obtienen como salida un código, que en cierto modo se puede considerar único para cada entrada. La función de estos algoritmos es determinista, es decir que partiendo de una misma entrada siempre se obtiene la misma salida. Sin embargo, el interés de estos algoritmos reside en que partiendo de entradas distintas se obtienen salidas distintas.

Unos ejemplos muy sencillos, aunque muy vulnerables, son los dígitos de control y los CRC (Cyclic Redundancy Code) que se utilizan para detectar errores de trascripción o de comunicación. Estos algoritmos en particular garantizan que el código generado cambia ante una mínima modificación de la entrada y tienen aplicaciones muy concretas de control de integridad en procesos con per turbaciones fortuitas y poco probables. Sin embargo son poco robustos y está demostrado que se pueden realizar pequeños conjuntos de modificaciones en un documento de manera que el CRC resulte inalterado. En un buen algoritmo HASH es inadmisible que un conjunto reducido de modificaciones no altere el código resultante, ya que se podrían realizar retoques en el documento sin que fuesen detectados, y por lo tanto no se garantiza la integridad.

Dado que el tamaño del código que se genera como salida es de tamaño limitado, (típicamente 128, 256 ó 512 bits) mientras que el tamaño del documento de entrada es ilimitado (típicamente un archivo), es evidente que se cumplen dos propiedades:

v  El algoritmo es irreversible, es decir, no es posible obtener el documento original a partir del código generado.

v  Existen varios documentos que dan lugar a un mismo código.

La segunda propiedad es debida a que el número de combinaciones de los códigos de tamaño limitado es menor al número de combinaciones de cualquier archivo grande. Sin embargo los buenos algoritmos consiguen que los documentos que dan lugar al mismo código, sean completamente diferentes y por lo tanto sólo uno de ellos será legible. Los algoritmos más utilizados son MD5 y SHA1, pero nunca se utilizan códigos CRC en aplicaciones de seguridad.


Bibliografia:


  • http://tec.upc.es/sda/Fundamentos%20Criptografia.pdf
  • http://www.revista.unam.mx/vol.7/num7/art56/jul_art56.pdf
  • https://www.verisign.com/mx/?sl=1BBRJ-0000-01-00
  • http://kndidoxcorp.blogspot.mx/2011/02/ejercicio-resuelto-java-cifrar-un.html