2010-01-14 11 views
9

Estoy pensando en hash contraseñas de usuario con dos cadenas de sal diferentes, una almacenada en el código que es la misma para todos los usuarios y otra almacenada en la base de datos para la que cada usuario tiene su propio valor único.Doble sal para contraseñas hash?

¿Sería esto más efectivo que simplemente almacenar los valores en la base de datos?

Cualquier consejo, opiniones apreciadas.

Gracias

+0

eso no es para lo que es Mathoverflow: su propósito es muy diferente al de este sitio ... –

+0

@jldupont: El aspecto de seguridad es muy informático :). – kennytm

Respuesta

19

el efecto es minúsculo si nada en absoluto. Tenga en cuenta que una sal estática y codificada dura no se puede considerar más que como una alteración del algoritmo de hash, ya que ocurre exactamente de la misma manera todas las veces, por lo que también puede considerarse parte del algoritmo.

Pero el propósito de la sal es crear algo aleatorio que sea similar a extender la fuerza (mínima) de la contraseña, con el propósito de hacer agrietamiento fuera de línea (incluyendo tablas de arcoíris) más intensivo en recursos (tabla no arcoiris el agrietamiento requerirá más tiempo de CPU, y las tablas de arcoiris requerirán todas las sales para todas las cadenas).

La única forma de obtener algún valor de esto es mientras se desconoce la sal estática, el equivalente al algoritmo que se desconoce. Si su código binario o su fuente están disponibles para el atacante, la ingeniería inversa mostrará el algoritmo y la sal codificada.

Y si este problema se hace público, probablemente tendrá que lidiar con flack de muchos entusiastas de la seguridad que creen que algo no perfecto está completamente roto, incluso si su producto ya hace lo correcto y el paso adicional es inútil.

Y, por supuesto, tendrás que lidiar con los problemas de mantenimiento de tener una sal estática: la compatibilidad con versiones anteriores y las correcciones de errores relacionadas con el código hash pueden ser dolorosas.

El beneficio muy pequeño de las claves estáticas (o sales) simplemente no vale la pena el costo. Siempre haga que las llaves y las sales sean dinámicas.

+0

¡Gracias por eso, realmente útil! – Dan

Cuestiones relacionadas