Los gestores de los servidores también tienen recursos para proteger a sus usuarios. Antes que nada se ha de impedir con valores hash el acceso no autorizado a las bases de datos. Naturalmente, es más fácil decirlo que conseguirlo, como prueban las numerosas intrusiones a los servidores de las grandes compañías. Por esto, el valor hash es de protección obligatoria y para ello es fundamental evitar a toda costa los algoritmos obsoletos.
Tanto MD5 como SHA-1 vienen considerándose inseguros hace ya un tiempo y sus tablas arco iris se encuentran fácilmente en Internet. Con ellas pueden encontrarse claves hasheadas con gran facilidad. Por eso es deber del administrador web mantenerse al día respecto a la existencia de algoritmos nuevos o a la eficacia de la función hash que se ha utilizado. SHA-2 y su variante más conocida, SHA-256, siguen siendo válidas, si bien entretanto ya ha aparecido SHA-3, que promete aún más seguridad por más tiempo.
Para dificultar el descifrado con tablas arco iris se utiliza el denominado valor salt (“sal” o “semilla”), una secuencia aleatoria que crea el sistema para la clave que define un usuario al abrir una cuenta. Este valor se acopla a la clave y ambos se someten a la función hash, creando así un valor diferente que el que generaría la contraseña sin salt.
Salt y el valor hash se guardan juntos en la base de datos, lo que puede dar lugar a cierta confusión por la facilidad con que un atacante podría obtener de una vez nombre de usuario, valor hash y salt si consiguiera acceder a ella. Y, de hecho, este método realmente no protege contra los ataques de fuerza bruta y de diccionario, pero sí ante las tablas de colores, puesto que estas se crearon antes que la base de datos y de forma independiente a ella. Como su creador no los conocía, los salts no pueden figurar en ellas.
Otra ventaja de salt es que los usuarios no tienen que recordarla, por lo que puede ser todo lo larga o caótica que sea posible. Esto ocasiona un valor hash complejo que dificulta trabajar con él. El valor salt también impide que una contraseña genere siempre el mismo valor hash aunque la utilicen dos personas diferentes. Del mismo modo, si un usuario utiliza la misma clave para varios servicios, salt evita que se guarde siempre el mismo valor hash en diferentes páginas.
Además de salt también está pepper (“pimienta”). Este valor participa dificultando el ataque de fuerza bruta o de diccionario. También constituye una secuencia aleatoria que, sobre todo si se acompaña de salt, entra en el valor hash junto con la clave. A diferencia del salt, pepper no se almacena junto con los otros datos de acceso en la base de datos, sino separado y en un lugar más seguro.
A menudo se utiliza como pepper una cadena de caracteres fija para todas las claves de la plataforma, de modo que no protege si varios usuarios poseen la misma clave, porque utilizan entonces el mismo pepper, lo que de nuevo conduce a un valor hash idéntico. En consecuencia, los administradores deberían decantarse por una combinación de salt y pepper.