¿Hay alguna diferencia en el orden de Hashing y Cifrado en términos de seguridad?

3

Estoy implementando un programa de almacenamiento de contraseñas con Java. He programado un triple DES para cifrado y un SHA256 para hash.

Mi pregunta es si haría alguna diferencia si primero hago un hash de los datos en bruto (contraseña) y luego los cifro, o si primero encripto los datos (contraseña) y luego los datos encriptados. Estoy muy preocupado por si hubiera alguna diferencia seria entre ellos en términos de seguridad.

Gracias

    
pregunta Ekin 13.03.2013 - 13:27
fuente

2 respuestas

15

No quieres un hash ; quieres un MAC .

La respuesta científica: aplica el cifrado MAC después , no antes. Se conoce como "cifrar-luego-MAC" y tiene muchos beneficios sobre hacer cosas al revés (también conocido como "MAC-luego-cifrar") o en paralelo ("MAC-y-cifrar"). Consulte esta pregunta para obtener más información.

La respuesta moral: no lo hagas. Es difícil hacer estas cosas de forma segura. No sabes lo suficiente para hacerlo. Incluso las personas con un doctorado en criptografía consideran que no saben lo suficiente como para hacerlo. Cuando se debe hacer algo así, un criptógrafo produce un diseño tentativo y lo envía a sus compañeros, quienes se apresuran y tratan de romperlo durante varios años . Solo los sobrevivientes se consideran "aparentemente seguros".

La respuesta práctica: hay buenos modos de cifrado que combinan cifrado y MAC para ti; estos esquemas han sobrevivieron al ataque de criptógrafos enfurecidos. Consulte GCM y EAX .

    
respondido por el Tom Leek 13.03.2013 - 13:41
fuente
3

Tomemos todos los casos posibles que se me ocurran:

  • Si la contraseña a la que hace referencia es la contraseña para descifrar la bóveda, es probable que no desee almacenarla en el disco. No hay ningún beneficio al cifrarlo, y desea utilizar una función de derivación de claves como PBKDF2 o bcrypt.
  • Si la contraseña de la que está hablando es una almacenada en la bóveda, el hashing evitará que la recupere.
  • Si está intentando verificar cualquier información criptográfica, no desea un hash antiguo, desea un código de autenticación de mensaje y debes encriptar-entonces-mac . Una mejor manera sería utilizar un modo de cifrado autenticado que lo realiza junto con el cifrado, disponible en todas las buenas bibliotecas criptográficas cercanas usted.
respondido por el user2213 13.03.2013 - 13:41
fuente

Lea otras preguntas en las etiquetas