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:
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.