SRP está diseñado para proteger la transmisión de la contraseña contra ataques de fuerza bruta, incluso en caso de que la contraseña pueda ser fácilmente forzada por la fuerza bruta.
Sin embargo, si se comprometió algún servidor de autenticación de Blizzard, los vectores de ataque relevantes son diferentes. Además del esquema de almacenamiento, el adversario también puede escuchar las transacciones en curso y, en paralelo, almacenar los secretos DH temporales generados por los servidores SRP. El último ataque es un poco complicado y requiere una preparación extensa por parte de los atacantes, sin embargo, seguramente filtraría cualquier inicio de sesión utilizado para autenticar al sistema comprometido.
El vector de ataque más tradicional son los valores de verificación. En SRP, los valores del verificador en el lado del servidor no son hashes tradicionales sino resultados de una exponenciación, como en Diffie-Hellmann.
Que yo sepa, no hay un análisis detallado de SRP frente a PBKDF2 o bcrypt. En algún lugar del sitio de SRP (srp.stanford.edu) una vez vi una nota de que las personas implementaron a Brute Forcer y descubrieron que el esfuerzo obligatorio de fuerza bruta era similar a la fuerza bruta tradicional de hashes.
Esto es algo esperado: se sabe que tales exponenciaciones son difíciles de invertir, al igual que una función hash. Suponiendo que Blizzard implementó un protocolo estandarizado como el RFC2945 y no intentó inventar los detalles por su cuenta, estos valores de verificación también contendrán una sal para hacer que las tablas de arco iris sean poco prácticas.
La principal diferencia, entonces, es en el esfuerzo de forzar los valores de verificación individuales. Aquí, los sistemas como bcrypt / PBKDF2 emplean un factor de escala para aumentar el esfuerzo computacional por conjetura de contraseña. Los esquemas SRP que conozco no lo apoyan explícitamente. La exponencia suele ser un poco más costosa de calcular que un hash, pero esto depende del grupo (módulo) en el que está operando. Creo que aumentar el módulo del valor de verificación en SRP es fácilmente posible, pero también aumentará el esfuerzo de cálculo para otras 2 exponenciaciones por par que deben realizarse en cada ejecución de protocolo.
Actualización: mirando a RFC2945 una vez más, la contraseña y el salt primero se incluyen y luego se exponen. Sería fácil usar PBKDF2 aquí, en lugar de solo hacer hash para implementar un factor de escala para el esfuerzo de fuerza bruta sin afectar mucho el resto del protocolo. Además, incluso cuando se eligió un exponente N pequeño / inadecuado, el esquema sigue siendo tan seguro como una simple autenticación pw basada en desafío-respuesta.
En general, Blizzard es probablemente un poco afortunado, ya que su tipo de almacenamiento de pw es muy poco común y los brutos forzados apropiados generalmente no están disponibles. Sin embargo, para un atacante determinado, la forma SRP de almacenar secretos no es más segura (posiblemente un poco menos segura) que el enfoque del estado de la técnica con un factor de escalado contra la fuerza bruta decente. Dicho esto, aplaudo a Blizzard por usar un criptografía de última generación para la autenticación de su contraseña, ya que el forzamiento de brechas en línea suele ser mucho más problemático.