Hola a todos
Durante mi recorrido aprendiendo de este interesante mundo de la criptografia, me he topado con varias preguntas las cuales son:
Existen diferente formas de realizar un MAC, pero sin duda la mas usada y eficiente en muchos casos es HMAC, este sirve para verificar que el mensaje no ha sido alterado. Regularmente se usa un hash como sha-256, sha-512 o bcrypt.
Ahi va mi primera duda, bcrypt nunca genera el mismo hash, ¿como hago para ver si el hash del emisor es igual al del receptor si estos nunca seran iguales (debido a que implementan una SALT)?
Tambien me genera otra duda que es sobre el hashing:
Hay 2 tipos de hash, esta el hash normal y el hash criptografico
Segun veo la unica diferencia entre estos es que el hash criptografico es mas resistente a las colisiones y tiene como objetivo garantizar una serie de propiedades de seguridad.
Es esto cierto?
cuando uso cada uno?, y como hago para saber que algoritmos de hashing (como bcrypt, sha, etc) corresponden a cada una de estas?
Por ultimo, tenia una duda con la llamada "Firma Digital":
basicamente a diferencia de "HMAC" estas no buscan verificar si el mensaje ha sido o no alterado, La firma digital lo que busca es verificar que el mensaje haya llegado del remitente(emisor) acordado, para asi evitar fraudes.
Segun veo en la documentacion, lo que se hace para esto es hashear el mensaje (ya que el cifrado asimetrico funciona mucho mejor y mas rapido si se usa esa llave publica para cifrar el mensaje hasheado, que en claro, pues ahorra recursos computacionales) y despues de esto se cifra el hash del mensaje con la llave publica del receptor ( firma digital ), despues de esto el receptor genera el hash del mensaje (No se como lo haran con brypt, puesto que este cambia siempre y nunca es el mismo por la SALT, ademas no se si el mensaje esta en claro o cifrado, pero genera un hash de este), luego descifra el hash ( firma digital ) con la llave privada del receptor y compara estos dos valores, (el hash del mensaje no se si se genera a partir del mensaje en claro o cifrado, pero lo genera) para de esta forma verificar que sea aquel emisor el que se lo envio.
Estoy en lo correcto sobre las firmas digitales?
He leido que es mejor usar sha-512 que bcrypt, ya que bcrypt no esta en todos lo sistemas operativos o no es compatible con todo, y en cuanto a usar sha-256 o sha-512 la diferencia radicaba en el que si el pc era de 32bits usara mejor sha-256, pero si usaba un pc de 64 bits, usara mejor sha-512, por cuestiones de velocidad y rendimiento.
Entonces uso bcrypt, sha 256 o sha-512?
PDTA: favor resolver las dudas que se me presentan en los parentesis a excepcion de estos -> (como bcrypt, sha, etc) y (Firma Digital) por favor.
Muchas gracias.