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 SHA‐0
para evitar confusiones con sus sucesores. Dos años más tarde el primer sucesor
de SHA fue publicado con el nombre de SHA‐1.
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 SHA‐1
corresponde a:
SHA1(“”) =
da39a3ee5e6b4b0d3255bfef95601890afd80709
- Es imposible encontrar un mensaje que se corresponde con un determinado mensaje.
- Es imposible encontrar dos diferentes mensajes que producen el mismo mensaje.
- Si un mensaje se cambia incluso de un solo carácter, el resultado será un mensaje totalmente diferente.
SHA‐0 y SHA‐1 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:
- 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.
- 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.
- 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.
SHA‐1 tiene estas propiedades
y, por tanto, a que se refiere como seguro. Está diseñado para trabajar con el
Algoritmo de Firma Digital (DSA). SHA‐1
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 SHA‐1
SHA‐1 puede ser usado en una variedad
de aplicaciones:
- Aplicaciones de seguridad que requieren autenticación
- E‐mail
- Transferencia electrónica de fondos
- Distribución de software
- Almacenamiento de datos
SHA‐1 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 SHA‐1;
lo que ha planteado dudas sobre la seguridad a largo plazo de SHA‐1.
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:
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