Una sal demasiado larga no reducirá la seguridad. Una sal demasiado corta reducirá la seguridad.
A medida que la sal se vaya alargando la seguridad mejorará. En algún momento cruzará un límite, donde comenzará a obtener rendimientos decrecientes al aumentar la longitud de la sal. Y, finalmente, cruzará otro límite, donde una sal más larga no agrega ningún tipo de seguridad.
Sin embargo, como una sal más larga no tiene un costo significativo, hay pocas razones para dejar de aumentar la longitud hasta que llegue al segundo límite. Incluso si aumentara la longitud de la sal más allá de eso, el único inconveniente es un costo adicional menor en términos de tiempo de almacenamiento y procesamiento.
Lamentablemente, las sales se generan más a menudo con una longitud por debajo del más bajo de los dos umbrales.
Entonces, ¿cuáles son los dos umbrales?
El umbral inferior está determinado por el número de usuarios y el propósito de la sal, que es diferente para cada contraseña elegida por cualquier usuario. Si tomamos algunas estimaciones conservadoras, el número de usuarios en todo el mundo es inferior a 10 ^ 10, y cada usuario tiene contraseñas para menos de 10 ^ 2 sistemas y, a lo largo de su vida útil, cambia esta contraseña menos de 10 ^ 3 veces. Eso significa que en total habrá menos de 10 ^ 15 contraseñas. Dado esto, se podría concluir erróneamente que 50 bits de entropía en la sal son suficientes para garantizar que nunca se repitan dos sales, pero debido a la paradoja del cumpleaños, tenemos que duplicar ese número.
Entonces, una vez que la sal crece más de 100 bits, comenzamos a ver rendimientos decrecientes en términos de seguridad agregada. El umbral de 100 bits implicaba muchas adivinanzas. El siguiente umbral implica mucho menos adivinanzas. Más de 100 bits de entropía en la sal aún mejoran la seguridad, pero no mucho.
Sin embargo, una vez que la sal crece más que la salida de la función hash subyacente, no existe ninguna seguridad adicional para que no vuelva a funcionar. El umbral depende de la función de hash, estos varían de 128 a 512 bits para los hashes típicos.
Recuerde que las sales generalmente se generan con 6 bits de entropía por carácter, por lo que necesitaría 86 caracteres de sal para alcanzar los 512 bits de entropía.