Algoritmo de hash y algoritmo de encriptacion

 

 

Hola, me gustaria saber cual es la diferencia entre un algoritmo de hash y un algoritmo de encriptacion.

Cuales son los algoritmos de hash y de encriptacion mas conocidos?

Saludos.

Comentarios

Selecciona arriba tu forma preferida de visualizar los comentarios y pulsa el botón para guardar tu elección para próximas visitas (sólo si eres usuario registrado).
joapuipe's picture

función resumen (o hash)


Hola elusuario. Brevemente:

Una función resumen (o hash), es un algoritmo que crea un resumen de una determinada longitud y que sirve, en principio, para identificar el objeto "resumido" (un fichero, una cadena de texto, etc) unequívocamente. Algoritmos conocidos: SHA-1, MD5.

+Info:
http://es.wikipedia.org/wiki/Hash
http://es.wikipedia.org/wiki/MD5
http://es.wikipedia.org/wiki/SHA-1

Un algoritmo de encriptación cifrado transforma un mensaje enteligible en inteligible y permite a su vez transformar el mensaje cifrado (criptograma) en el mensaje original. Todo ello utilizando una clave (o un par de claves, en caso de de criptografía de clave pública). Algoritmos conocidos de clave privada: AES (Rijndael), TripleDES. Y de clave públia: RSA, ElGammal.

+Info:
http://es.wikipedia.org/wiki/Criptograf%C3%ADa
http://es.wikipedia.org/wiki/Criptograf%C3%ADa_sim%C3%A9trica
http://es.wikipedia.org/wiki/Criptograf%C3%ADa_asim%C3%A9trica
http://es.wikipedia.org/wiki/AES
http://es.wikipedia.org/wiki/RSA
http://es.wikipedia.org/wiki/Cifrado_ElGamal

elusuario's picture

Gracias joapuipe


Gracias joapuipe, gracias por tu respuesta.

1.- Si un algoritmo criptografico permite transformar el mensaje cifrado al mensaje original, que pasa con los algoritmos criptograficos como "DES" que no pueden desencriptarse?

2.- Un algoritmo de hash puede desencriptarse?

3.- Como pueden usarse los resultados de una funcion hash si con 2 entradas puede generarse la misma salida?

Saludos y gracias.

joapuipe's picture

Vayamos por partes


Vayamos por partes, que diría Jack el Destripador:

En primer lugar una cuestión de términos: En español/castellano se dice cifrar y descifrar, no "encriptar" y "desencriptar", que son una mala traducción del inglés crypt y decrypt.

En segundo lugar, quién dice que el DES no se puede descifrar? Todo algoritmo criptográfico de cifrado lleva asociado uno de descifrado, de lo contrario, de qué serviría? Para cifrar un texto que no se podrá recuperar, lo borramos directamente y terminamos antes.

Y el ejemplo que pones, el del DES, no es muy acertado. Porqué a parte de poder descifrar los textos "legítimamente" se pueden descifrar de manera ilegítima... Échale un vistazo a el siguiente artículo de la Wikipedia: http://es.wikipedia.org/wiki/Data_Encryption_Standard#Seguridad_y_cripto....

Un función resumen no puede descifrarse porqué NO ES UN ALGORITMO DE CIFRADO. Aclarado este detalle, interpreto que quieres decir si se puede obtener el valor "original" a partir de su imagen (el valor que devuelve la función): No. Estas son las propiedades que debe garantizar una función hash criptográfica: http://es.wikipedia.org/wiki/Hash#Formal

La posibilidad que comentas en último lugar no se considera. Bueno, mejor dicho, se considera improbable (recordemos: 1/2^128 para MD5, 1/2^256 para SHA-256). Es una probabilidad increíblemente pequeña y simplemente se ignora...

elusuario's picture

Lo de la imposibilidad


1.- Lo de la imposibilidad de descifrar DES lo decia porque por lo que estuve leyendo, éste algoritmo entra en la categoria de "criptosistemas irreversibles". Asi dice un libro que tengo:

"Son aquellos que no permiten el descifrado del criptograma. Es decir, una vez cifrado un cierto texto en claro, es imposible recuperar éste a partir del correspondiente texto cifrado."

Lo que me lleva a la pregunta de si no es posible descifrarlo porque el algoritmo no lo permite o porque no se conoce el metodo. Segun lo que me decis, es porque no se conoce el método.

2.- De la misma forma "todo algoritmo criptográfico de cifrado lleva asociado uno de descifrado", por que no puede decirse "toda funcion hash lleva asociada una de dehash" (esta bien dicho "dehash"? :p). En definitiva no se basan ambos (algoritmo criptografico y funcion hash) en funciones matematicas?

3.- Entendido ;).

joapuipe's picture

Hola de nuevo


Hola de nuevo.

1. Como puedes ver en la Wikipedia, imposible no es (¿de qué año es el libro? quizás cuando lo publicaron el DES todavía no se había roto ya que se rompió en el 98). De todas formas, imagino que el libro se refiere a imposible a que es imposible recuperar el texto en claro a partir del cifrado sin la llave de descifrado (que habitualmente es la misma que la de cifrado para los sistemas simétricos).

Por lo que respecta a si el algoritmo permite ser roto o no, todos los algoritmos se pueden romper por fuerza bruta, eso si, con muuuuchoooo tiempo (para el RSA, con los ordenadores actuales se podría tardar millones de años).

Ahora bien, y siguiendo con el RSA, su seguridad se basa en que es computacionalmente difícil factorizar un producto de números primos muy grande (1024, 2048, 4096 bits...). Ahora bien ¿y si en un futuro se descubre un algoritmo muchísimo más rápido que el actual para factorizar enteros? Entonces el RSA sería vulnerable. Que quiero decir con esto, que como bien apuntas, que un algoritmo sea irrompible, sólo significa que por ahora, no hay forma de romperlo. Nota: "Romper" el algoritmo significa descifrar un texto cifrado con ese algoritmo sin saber la clave de descifrado.

2. Porqué las operaciones matemáticas no son reversibles. Pongamos un pequeño ejemplo: la función lógica OR-exclusiva:

a b | a XOR b
-------------
0 0 | 0
0 1 | 1
1 0 | 1
1 1 | 0

Imaginemos que trabajamos con un mensaje de dos bits x = (x_0, x_1) y utilizando la función hash H(x) = x_0 XOR x_1, tenemos como resumen del mensaje H(x) = 0. ¿Cómo podemos saber si el mensaje era (x_0 = 0, x_1 = 0) o (x_0 = 1, x_1 = 1)? Evidentemente es sólo un ejemplo, las funciones Hash son mucho más complicadas.

Saludos!

elusuario's picture

Si no entiendo mal


Hola,

1.- Si no entiendo mal, DES fue roto por fuerza bruta, no?

2.- Consideras a XOR una operacion matematica o logica? Yo creo que es logica. Por otro lado, hay operaciones (como AND y OR) que son reversibles sin ningun problema. Conoces algun tutorial donde se muestre la creacion de algoritmos de hash simples? me gustaria conocer un poco mejor como estan hechos.

3.- Para almacenar contraseñas en una base de datos me conviene utilizar un algoritmo criptografico o un algoritmo hash?

Saludos y gracias.

joapuipe's picture

Sí, pero se encontraron facilidades


1. Sí, pero se encontraron facilidades que hacían el ataque "más fácil".

2. Una operación lógica es una operación matemática al fin y al cabo. Hacer funciones hash seguras no es una cosa sencilla. Pero bueno... imagino que debe haber algún documento didáctico por Internet...

3. En la base de datos deberías almacenar el valor devuelto al aplicar la función hash a la contraseña del usuario. Para autentificar el usuario, basta con aplicar la función hash a la contraseña que introduce y compararla con la que tienes almacenada en la base de datos.

Saludos!

joapuipe's picture

Error


1. Sí, pero se encontraron facilidades que hacían el ataque "más fácil".

Quería decir debilidades :)

elusuario's picture

Entendido


Hola,

1.- Entendido ;).
3.- Entendido ;).

1.- Sabes que en MySQL hay un par de funciones llamadas "DES_ENCRYPT" y "DES_DECRYPT" que me llaman mucho la atencion por lo siguiente:

La explicacion de DES_ENCRYPT dice que encripta una cadena usando el algoritmo Triple-DES, mientras que la explicacion de DES_DECRYPT dice que desencripta una cadena encriptada con DES_ENCRYPT.

Yo me pregunto: no se deduce de lo anterior que DES_DECRYPT desencripta una cadena encriptada con Triple-DES?

Este es el link: http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html

Saludos.

joapuipe's picture

Correcto


Hola de nuevo elusuario.

Correcto, la función DES_DECRYPT descifra una cadena cifrada con Triple-DES, pero si te fijas en la interfaz de la función has de pasarle la contraseña con la que has cifrado el texto. Por supuesto que el Triple-DES se puede descifrar, pero únicamente con la contraseña legítima (si no se pudiese descifrar, menuda chorrada de algoritmo ¿no? Quiero decir, haces un algoritmo de cifrado que sea y = C(x) = 0. Un algoritmo muy seguro, sí. Pero no sirve de nada).

¡Saludos!