martes, 20 de octubre de 2015

SHA1, MD5, SRA

SHA – 1


NIST presentó en 1993 un algoritmo basado en las mismas técnicas que MD5 y denominado SHA (Secure Hash Algorithm).
El primer miembro de la familia fue publicado en 1993 es oficialmente llamado SHA. Sin embargo, hoy día, no oficialmente se le llama SHA0 para evitar confusiones con sus sucesores. Dos años más tarde el primer sucesor de SHA fue publicado con el nombre de SHA1.

Este algoritmo en 1995 la Agencia de Seguridad Nacional (NSA) lo sustituyó por una versión mejorada que actualmente se conoce como SHA-1 y que se considera más seguro que MD5. Produce un código hash de 160 bits para mensajes de longitud máxima 264 bits, aunque existen otras variantes poco utilizadas todavía que producen códigos de mayor longitud.

En general, SHA1 se considera el mejor algoritmo de la familia de Algoritmos HASH o de resumen y es el que se aplica en la mayoría de las aplicaciones de firma electrónica. Por lo tanto es muy habitual aplicar SHA1 seguido de RSA para realizar una firma electrónica de un documento, o bien el algoritmo DSA específico para firma electrónica que también utiliza SHA1 internamente.
Ejemplo de hashes

Estos son ejemplos de SHA-1 digiere. ASCII codificación se utiliza para todos los mensajes.
SHA1 (” El rápido zorro marrón salta sobre el perro perezoso “) = 2fd4e1c6 7a2d28fc ed849ee1 bb76e739 1b93eb12

Incluso un pequeño cambio en el mensaje, con una probabilidad abrumadora, resultando en un hash completamente diferente debido al efecto avalancha.

La codificación hash vacía para SHA1 corresponde a:

SHA1(“”) = da39a3ee5e6b4b0d3255bfef95601890afd80709
  1. Es imposible encontrar un mensaje que se corresponde con un determinado mensaje.
  2. Es imposible encontrar dos diferentes mensajes que producen el mismo mensaje.
  3. Si un mensaje se cambia incluso de un solo carácter, el resultado será un mensaje totalmente diferente.


SHA0 y SHA1 producen una salida resumen de 160 bits (20 bytes) de un mensaje que puede tener un tamaño máximo de 264 bits, y se basa en principios similares a los usados por el profesor Ronald L. Rivest del MIT en el diseño de los algoritmos de resumen de mensaje MD4 y MD5.
El procesamiento consta de cinco pasos los cuales se explican a continuación:
  1. Se incorporan bits de relleno al mensaje de entrada de tal modo que cumpla:El relleno consiste en un uno seguido de los ceros que sean necesarios. Aunque el mensaje ya tenga la longitud deseada, se debe efectuar el relleno, por lo que el número de bits de dicho relleno está en el rango de 1 a 512 bits.
  2. A la salida del paso 1, se le añade un bloque de 64 bits que represente la longitud del mensaje original antes de ser rellenado.
  3. Se inicializa la memoria temporal MD, la cual consta de 160 bits y su finalidad es almacenar los resultados intermedios y finales de la función de dispersión. La MD consta de 5 registros (A,B,C,D,E) de 32 bits cada uno, los valores con los que se inicializan son los siguientes (valores hexadecimales):

A=67452301
B=EFCDAB89
C=98BADCFE
D=10325476
E= C3D2E1F0


4. Se procesa el mensaje por bloques de 512 bits, cada uno pasa por un módulo que consta de 4 rondas de procesamiento de 20 pasos cada una. Las rondas tienen una estructura similar, con la excepción de que cada una ocupa una función lógica primitiva diferente (f1, f2, f3 y f4)
La entrada a cada ronda consta del bloque de 512 bits que se esté procesando (Yq) y los 160 bits de la memoria MD, nótese que cada bloque de 512 bits actualizará el valor de la memoria temporal. Cada ronda también hace uso de la constante aditiva Kt, donde        0<= t <= 79   indica uno de los 80 pasos a lo largo de las cuatro rondas.

5. Una vez que se procesan los L bloques de 512 bits, el resumen del mensaje son los 160 bits de salida del último bloque.

SHA1 tiene estas propiedades y, por tanto, a que se refiere como seguro. Está diseñado para trabajar con el Algoritmo de Firma Digital (DSA). SHA1 es una forma de función de hash.
Funciones en un solo sentido se caracterizan por dos propiedades. La primera es que son de sentido único. Esto significa que usted puede tomar un mensaje y calcular un valor de hash, pero no se puede tomar un valor hash y recrear el mensaje original. También es libre de colisión y, por tanto, no hay dos mensajes hash con el mismo valor.

Aplicaciones de SHA1

SHA1 puede ser usado en una variedad de aplicaciones:
  1. Aplicaciones de seguridad que requieren autenticación
  2. Email
  3. Transferencia electrónica de fondos
  4. Distribución de software
  5. Almacenamiento de datos

SHA1 ha sido examinado muy de cerca por la comunidad criptográfica pública, y no se ha encontrado ningún ataque efectivo. No obstante, en el año 2004, un número de ataques significativos fueron divulgados sobre funciones criptográficas de hash con una estructura similar a SHA1; lo que ha planteado dudas sobre la seguridad a largo plazo de SHA1.


MD5

El algoritmo de hash más utilizado en estos momentos es el MD5 . Este algoritmo fue desarrollado por Ronald Rivest en 1995 y está basado en dos algoritmos anteriores MD2 y MD4. Todos estos protocolos producen un número de 128 bits a partir de un texto de cualquier longitud.
MD4 fue desarrollado para mejorar el rendimiento de MD2 , sin embargo, varios problemas fueron detectados y en 1996 fueron publicados elementos que hacen hoy en día inservible el algoritmo. MD5 sustituyó a MD4 y aunque no tiene el rendimiento de su antecesor, hasta el momento no han sido publicados elementos que comprometan su integridad y funcionamiento.

MD5 comienza rellenando el mensaje a una longitud congruente en módulo 448 mod 512. Es decir la longitud del mensaje es 64 bits menos que un entero múltiplo de 512. El relleno consiste en un bit en 1 seguido por cuentos bits en 0 sean necesarios. La longitud original del mensaje es almacenada en los últimos 64 bits del relleno.
Adicionalmente se inicializa, con un valor fijo, un buffer de 128 bits. Este buffer puede verse
como 4 registros de 32 bits (A,B,C,D) y son inicializados con los siguientes valores hexadecimales:
A=67452301; B=EFCDAB89; C=98BADCFE; D=10325476
Durante varias rondas de procesamiento el algoritmo toma bloques de 512 bits de la entrada y los mezcla con los 128 bits del buffer. Este proceso es repetido hasta que todos los bloques de entrada han sido consumidos. El valor resultante en el buffer es el hash del mensaje.


MD5 no es el único algoritmo de hash conocido. Existe otra función llamada Secure Hash Algorithm, (SHA), desarrollado por NSA.. A diferencia de MD5, SHA genera números hash de 160 bits.


RSA

RSA es un algoritmo de cifrado de clave pública que le permite al usuario conservar la confidencialidad de la información cuando es transmitida o compartida con otros usuarios. Conocer en que consiste es la mejor opción para utilizarlo de forma adecuada y salvaguardar la información más sensible.

Los sistemas de cifrado con clave pública tuvieron su inicio a mitad de la década de los setenta con el protocolo criptográfico de Diffie y Hellman. Este protocolo basado en la extrema dificultad de calcular logaritmos discretos en números primos muy grandes, tiene la particularidad que no permitía realizar un cifrado real de información o la firma digital sobre un mensaje.

Para finales de la década del setenta aparece un algoritmo de cifrado que se patenta como RSA. A diferencia del algoritmo anterior este algoritmo aprovecha la complejidad para factorizar un número compuesto. Los dos métodos presentan una complejidad algorítmica similar y presentan un reto computacional que no se puede abordar con la capacidad actual al calcular operaciones con números primos muy grandes.

La fortaleza del algoritmo RSA se basa en la complejidad de cálculo que tiene encontrar los dos factores primos de un número compuesto muy grande. La operación inversa de este problema, es decir multiplicar dos números primos grandes, es una operación poco costosa computacionalmente y que se puede realizar rápidamente, pero en sentido contrario, es decir encontrar los factores primos de un número es una operación que a medida que se incrementa el tamaño del número aumenta los requerimientos de hardware para su cálculo además de aumentar el tiempo requerido para su cálculo. Por ejemplo, sin utilizar ningún tipo de ayuda electrónica, cuando tiempo demoras en calcular el producto 11 por 31. Y ahora, cuanto se demora en hallar los factores primos de 221.

Con el algoritmo RSA los valores de los factores primos deben ser mínimo de 155 dígitos, lo que aproximadamente son unos 512 bits, para la firma con certificados digitales que utilizan el estándar X.509. El producto de estos factores tiene alrededor de 310 dígitos, que representa 1024 bits, lo cual puede dar una idea de lo complejo que puede llegar volverse su factorización en materia de recursos tecnológicos. Claro que dado el crecimiento en capacidad de cómputo, donde se puede encontrar por ejemplo cluster de 25 GPU que descifran contraseñas de 8 caracteres en 5.5 horas, se ha vuelto frecuente en algunas aplicaciones utilizar como factores números de mínimo 1024bits.

El uso de este algoritmo se ha extendido hasta tal punto que se publicó el RSA Cryptography Standard, que contiene las recomendaciones para la implementación de métodos criptográficos de clave pública basados en el algoritmo RSA. Esta documentación contiene algunas nociones básicas sobre cifrado y descifrado y sobre firma y verificación de mensajes. Además contiene algunos esquemas donde se describen las operaciones de cifrado y el proceso inverso. Lo interesante de este estándar es que es compatible con las recomendaciones para implementar métodos basados en clave pública de la IEEE, en su documento IEEE 1363-2000.

Más allá de utilizar algoritmos seguros con altos niveles de protección es necesario que los usuarios sean cuidadosos en el uso de las contraseñas y precavidos en cuanto al tipo de sitios que utilizan para intercambiar información sensible. En nuestra Plataforma Educativa ESET podrán encontrar cursos gratuitos como el de Seguridad en las transacciones comerciales en línea y el deSeguridad para PyMEs que brindan consejos adicionales para que los usuarios conserven la confidencialidad de su información.



No hay comentarios:

Publicar un comentario