¿Por qué no modificar ligeramente una función hash existente para crear la suya propia? [duplicar]

5

Leí esta interesante pregunta en por qué improvisar tu propia función Hash a partir de las funciones hash existentes es malo . Sin embargo, esto se centra específicamente en "mezclar" funciones de hash existentes. ¿Qué pasa si, por ejemplo, modifico los turnos por turno de la función hash MD5? Ejemplo:

Cambia las rondas a partir de ahora

s[ 0..15] := { 7, 12, 17, 22,  7, 12, 17, 22,  7, 12, 17, 22,  7, 12, 17, 22 }
s[16..31] := { 5,  9, 14, 20,  5,  9, 14, 20,  5,  9, 14, 20,  5,  9, 14, 20 }
s[32..47] := { 4, 11, 16, 23,  4, 11, 16, 23,  4, 11, 16, 23,  4, 11, 16, 23 }
s[48..63] := { 6, 10, 15, 21,  6, 10, 15, 21,  6, 10, 15, 21,  6, 10, 15, 21 }

Mis propias rondas de turnos ligeramente ajustadas

s[ 0..15] := { 5, 14, 19, 22,  5, 14, 19, 22,  5, 14, 19, 22,  5, 14, 19, 22 }
s[16..31] := { 6, 12, 14, 21,  6, 12, 14, 21,  6, 12, 14, 21,  6, 12, 14, 21 }
s[32..47] := { 4, 11, 16, 23,  4, 11, 16, 23,  4, 11, 16, 23,  4, 11, 16, 23 }
s[48..63] := { 7,  9, 11, 17,  7,  9, 11, 17,  7,  9, 11, 17,  7,  9, 11, 17 }

Estos cambios cambian drásticamente el resultado de mi 'propia' función hash. Este es solo un pequeño ejemplo para cambiar. Mi razonamiento detrás de esto es que temporalmente evita los ataques de Rainbow. Si tengo algunos usuarios descuidados con contraseñas como thisisnopassword , pandabear & 12346 estarían ligeramente más seguros después de que mi base de datos fuera hackeada ya que no existen tablas Rainbow para "mi" hash.

Por cierto, elegí las cantidades de turno por turno porque no pude encontrar una razón clara sobre por qué se eligieron específicamente, consulte this question.

    
pregunta Thomas W 12.10.2015 - 19:20
fuente

2 respuestas

15

Cambiar las rondas de cambio a ciegas tiene un efecto indefinido en la fuerza. Por ejemplo, podría tener una cantidad similar de colisiones, podría tener órdenes de magnitud más cantidades de colisiones, las rondas de turnos definidas inicialmente tienen una probabilidad conocida de colisiones, las rondas de turnos cambiadas al azar no.

Escuche a la gente de arriba, use la salazón, se usa específicamente para cumplir su propósito. Modificar el motor del automóvil que conduces es un deporte divertido con resultados fatales.

    
respondido por el Eugene 12.10.2015 - 20:26
fuente
4

Si tiene el conocimiento para poder probar adecuadamente los efectos de sus cambios en la seguridad, o de lo contrario, del resultado, ¡entonces debe seguir adelante!

El problema es que el viejo dicho "no hagas rodar el tuyo" con crypto está bien fundado porque parece fácil pensar en cómo podrías hacerlo tú mismo, pero a menos que estemos bien informados, probar la criptografía es tan complejo , si no más, que crear nuevos algoritmos.

Realice los cambios, publíquelos junto con la explicación y, cuando sea posible, la demostración de seguridad mejorada, haga que su trabajo sea revisado por expertos de Crypto y listo. Si no puede realizar ninguno o todos estos pasos, déjelo en manos de las personas que dedican sus vidas a dedicarse a hacerlo correctamente.

Te importa, podrías decir eso sobre muchas cosas en la vida :)

    
respondido por el David Scholefield 12.10.2015 - 20:35
fuente

Lea otras preguntas en las etiquetas