En la criptografía, "nuevo" es no sinónimo de "bueno". Ese código es de doce años (12 años ... ¿es realmente "antiguo"? ) solo significa que mantuvo 12 años de exposición pública y uso general sin ser interrumpido, por lo que debe ser bastante sólido. Por definición, un método "más nuevo" no puede presumir tanto. Como criptógrafo, diría que los 12 años son casi la edad adecuada, y cualquier cosa menor que, digamos, 5 años, es definitivamente "demasiado joven" para el despliegue general (por supuesto, estas estimaciones dependen de la exposición del algoritmo). Una implementación temprana y amplia, aunque es arriesgada para aquellos que deciden implementarla, contribuirá en gran medida a generar confianza en la seguridad (o revelar debilidades en una etapa temprana).
Scrypt es mucho más nuevo que bcrypt ; Data del 2009. La idea es bastante inteligente. Es decir, el procesamiento lento de contraseñas tiene como objetivo hacer que los ataques al diccionario N sean más costosos para el atacante, mientras que implica que el procesamiento normal es N ' más costoso para los sistemas honestos. Idealmente, N = N '; el autor de Scrypt sostiene que con PBKDF2 o bcrypt, el uso de ASIC permite que un atacante obtenga un N mucho más bajo que N ' (en otras palabras, el atacante puede usar hardware especializado) , porque solo está interesado en romper una contraseña y, por lo tanto, utiliza muchas más contraseñas por segundo y por dólar gastado que el sistema honesto. Para solucionarlo, Scrypt se basa en un algoritmo que requiere bastante RAM, ya que la RAM de acceso rápido es la especialidad de la PC y un punto delicado del diseño ASIC. Hasta qué punto Scrypt tiene éxito en esa área queda por medir; 2009 es un momento reciente, y las cifras proporcionadas por el autor de Scrypt se basan en la tecnología ASIC de 130 nm y en una hipótesis de "5 segundos de procesamiento", que está bastante más allá de lo que el usuario promedio está listo para esperar.
Para un uso práctico ahora , recomiendo bcrypt.
A pesar de Scrypt, las investigaciones actuales sobre el concepto de procesamiento de contraseñas tienen que ver con transformaciones especializadas que permiten más que una simple verificación de contraseñas. Por ejemplo, el protocolo SRP permite un acuerdo de clave criptográfica con autenticación mutua basada en contraseña y resistente a los ataques de diccionario (incluso en el caso de un atacante que suplante activamente al cliente o al servidor); esto requiere un poco de estructura matemática, y el hash de contraseña en SRP implica exponenciación modular.