La sal puede considerarse pública prácticamente por definición .
En cuanto a qué hash usar y cuán "seguro" es, me atendría a las recomendaciones que hace el NIST para las agencias gubernamentales de EE. UU. Como el artículo de Wikipedia dice:
SHA-1 se está retirando para la mayoría de los usos gubernamentales; el Instituto Nacional de Estándares y Tecnología de EE. UU. dice: "Las agencias federales deberían dejar de usar SHA-1 para ... aplicaciones que requieren resistencia a las colisiones tan pronto como sea posible, y deben usar la familia de hachís SHA-2 Funciones para estas aplicaciones después de 2010 "
Puede especular sobre qué tan seguros o inseguros son los diversos algoritmos, pero ¿por qué molestarse cuando tiene una especificación que el gobierno de los Estados Unidos considera lo suficientemente bueno para su propio uso?
[editar]
Por cierto, su pregunta parece reflejar un malentendido sobre cómo se realizan estos análisis. Hay mucho más para una función hash que su número de bits.
Un hash de 160 bits forzado por la fuerza bruta como SHA-1 requiere 2 ^ 160 de esfuerzo; eso simplemente no va a suceder, no importa cuántas "GPU" le lances. De hecho, probablemente no sucederá en la vida del universo. (Es cierto que una colisión de fuerza bruta requiere "solo" esfuerzo 2 ^ 80. Pero también requiere 2 ^ 80 almacenamiento . Buena suerte con eso.)
La razón por la que MD5 y SHA-1 se consideran "posiblemente inseguras" es que se han descubierto puntos débiles en cada algoritmo que podrían reducir el trabajo, muy por debajo del esfuerzo de fuerza bruta. La razón para cambiar a un algoritmo más nuevo (como SHA-2) es evitar aquellas debilidades conocidas; La razón para usar 256 bits es proporcionar algún búfer contra las debilidades desconocidas . No tiene nada que ver con las "GPU"; para resistir los ataques de fuerza bruta, 160 bits es suficiente.
Las declaraciones similares son válidas para toda la criptografía, por cierto.
Ahora, es imposible exagerar cuánto más saben las personas de NSA sobre estas cosas que usted o yo. Hacen recomendaciones para las agencias gubernamentales de EE. UU. Y la industria de EE. UU. A través del NIST. Entonces, a menos que su adversario sea un gobierno mundial importante, las recomendaciones del NIST son más que suficientes. Ignore a los "expertos" autoproclamados que intentan decirle lo contrario; La NSA es mejor en lo que hace de lo que posiblemente puedas imaginar.
Si su adversario es un gobierno mundial importante, nadie en SO está calificado para ayudarlo. Y tienes problemas mucho mayores que la función hash que debes usar.
[editar 2]
Por supuesto, asumo que ya está utilizando esta función como parte de un esquema de hashing de contraseña estándar, como PKCS # 5 (también conocido como "PBKDF2"), y su pregunta fue puramente sobre qué función hash utilizar.
PBKDF2 recomienda un mínimo de 1000 iteraciones, pero puedes elegir lo que quieras. El esfuerzo de fuerza bruta del atacante aumenta linealmente con ese número, por lo que 10000 iteraciones frente a 1000 significa que les llevará 10 veces más tiempo forzar la fuerza bruta de cada contraseña.