Evitar colisiones combinando MD5 y SHA-2

Sep 03 2020

A menudo se sugiere que el hash de columnas de caracteres largos se puede usar para indexar en bases de datos, pero la posibilidad de colisiones es un problema para los índices únicos. Si bien sé que tanto MD5 como SHA-256 pueden (rara vez) producir colisiones, me preguntaba cuál es la posibilidad de que ambos choquen en el mismo punto con la misma entrada. En otras palabras, si produzco una clave única ejecutando MD5 y SHA-2 contra el mismo campo de caracteres y combinándolos para hacer la clave única, esta colisión no está libre.

Respuestas

3 MeirMaor Sep 03 2020 at 17:27

Actualmente, no se conocen colisiones para SHA-256 y se puede usar de forma segura para escribir textos largos y puede estar seguro de que no se producirá una colisión por casualidad.

En general, si tenemos dos funciones hash diferentes y $f$ y $g$ y pones una entrada $x$ con ambos y usa la concatenación $f(x)||g(x)$la resistencia a colisiones de este será mejor que cualquiera de las dos funciones individualmente y en algunos casos mucho mejor. Si las funciones no están relacionadas y solo le preocupa la posibilidad de colisión, la probabilidad de una colisión será el producto de la probabilidad de colisión en cada función individualmente. Sin embargo, esta última afirmación no se mantendrá frente a un atacante que explota la debilidad de estas funciones. Aún es más difícil encontrar una colisión individualmente, pero puede que no sea notablemente más difícil que encontrar una colisión en solo uno de los dos.

Otras técnicas de combinación de funciones como $f(g(x))$ están mal aconsejados y no agregarán seguridad, ya que cualquier colisión de $g$ También es una colisión en la composición.