¿Qué tan seguro es el SRP que Blizzard usa para proteger las contraseñas?

13

Blizzard anunció recientemente que su red estaba comprometida , pero aseguran a los usuarios en su declaración de que La información de contraseña a la que los atacantes tuvieron acceso se guardó de forma segura:

  

También sabemos que las versiones cifradas de Battle.net   Contraseñas (no contraseñas reales) para jugadores en servidores de América del Norte   fueron tomadas. Utilizamos el protocolo de contraseña remota segura (SRP) para proteger   estas contraseñas, que están diseñadas para hacer que sea extremadamente difícil   extraer la contraseña real, y también significa que cada contraseña   Tienen que ser descifrados individualmente.

Busqué SRP, y parece ser un método para intercambiar contraseñas de forma segura. Estoy familiarizado con el uso de hashes para almacenar contraseñas, pero no pude descubrir cómo utiliza SRP Blizzard con otros métodos comunes de contraseñas de hashing como PKBDF2, bcrypt o scrypt.

¿Qué tan difícil sería para la fuerza bruta (o usar un ataque de diccionario) contra contraseñas protegidas por SRP?

    
pregunta Mad Scientist 10.08.2012 - 09:25
fuente

4 respuestas

11

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.

    
respondido por el pepe 10.08.2012 - 11:00
fuente
5

Puede encontrar este informativo: enlace

En resumen, la implementación de SRP de Blizzard utiliza SHA1 como hash, y también hay una operación modexp, que es la parte 'lenta'. Extrapolando de un Libro blanco de Intel , un modexp de 256 bits funcionaría a aproximadamente 400,000 ops / seg. un i7-2600. En base a las pruebas reales con una instancia c1.xlarge en EC2 ($ 0.66 / hr), puede verificar aproximadamente 100 mil millones de contraseñas por $ 100.

Dado que las contraseñas están incluidas, cada contraseña debe ser atacada individualmente. Por lo tanto, puede probar las 1,000,000 contraseñas principales en un diccionario contra 100,000 usuarios por $ 100 si el módulo es de 256 bits. Un módulo de 1024 bits aumenta el costo en 64x.

EDITAR - Aparentemente, puede ser posible reducir la complejidad de un ataque a solo SHA1: enlace . Esto no se aplica a un módulo de 1024 bits (como se usa en Battle.net v2).

    
respondido por el JeremyS 11.08.2012 - 01:02
fuente
1

SRP es un protocolo de PAKE . Es totalmente independiente del hash utilizado. SRP utiliza una función de hash como una primitiva criptográfica. Se debe utilizar un hash real, por ejemplo, PBKDF2 o bcrypt, para implementar esta primitiva, ya que no se conoce una función hash perfecta. Debido a que la contraseña siempre está con hash y con sal, tanto en tránsito como en almacenamiento, este es un requisito de SRP, el elemento más débil es la contraseña con hash con sal. Obviamente, esto supone que no hay fallas en el protocolo en sí, es decir, una mala elección de números primos, números aleatorios o un ataque de transferencia directa.

    
respondido por el jhoyla 10.08.2012 - 12:29
fuente
0

Para Warcraft 3, el primer juego de Blizzard introdujo SRP (los juegos más antiguos utilizaban desafío-respuesta), no es seguro en absoluto, solo tiene que encontrar logarito discreto en el campo principal de 256 bits para obtener el hash de contraseña x , que es suficiente para iniciar sesión, o puede usarlo para contrarrestar las contraseñas con velocidad alta.

  

La pregunta fundamental sigue siendo, ¿es este un vector de ataque práctico, y qué tan grave es? Los algoritmos que pueden realizar logaritmos discretos de manera eficiente en valores grandes son un tema de investigación importante, sin embargo, no hay herramientas "guionistas" disponibles para realizar el cálculo. GDLOG es "una implementación de código abierto del algoritmo de tamiz de campo de número general para problemas de logaritmo discreto". En realidad, es excesivo utilizar GNFS para calcular el registro discreto de un número de 256 bits, y le tomó a Sam solo dos horas en una sola máquina para completar la precomputación inicial . En ese momento, registros individuales discretos que recuperan x de v toman un tiempo variable, “desde desde 15 segundos hasta varios minutos dependiendo de nuestra suerte”. Sam notó que hay una potencial para mejorar el rendimiento aquí.

Para los juegos Battle.Net 2.0 como WOW y SC2, se usa 1024 bit prime, el logaritmo discreto para ese tamaño ahora no se puede resolver, pero la fuerza bruta todavía es posible. Recuerda que los hashes y los verificadores están salados.

    
respondido por el Smit Johnth 22.05.2013 - 22:18
fuente

Lea otras preguntas en las etiquetas