En enlace Google recomienda utilizar un número aleatorio de criptografía segura de 130 bits como una antifalsificación. token.
¿Por qué necesitamos tantos bits? Si un atacante decide montar un ataque de fuerza bruta, ¿no sería posible detectarlos y bloquearlos después de algunos intentos? Con tan solo 30 bits, tiene 1 millón de tokens posibles para 1000 usuarios simultáneos. Adivinar la ficha utilizando la fuerza bruta parece extremadamente improbable.
Mi punto es que 30-40 bits de datos parece muy difícil de romper con la fuerza bruta. Entonces, ¿por qué Google recomienda 130 bits? ¿No es eso una exageración?
ACTUALIZACIÓN : De acuerdo, digamos que no pudo evitar un ataque de fuerza bruta ...
- De acuerdo a enlace Facebook recibe 500,000 visitantes únicos por minuto.
- Suponiendo que cada usuario realiza una solicitud por segundo, tiene una solicitud por 2 microsegundos.
- Por lo tanto, podemos asumir con seguridad que (a partir de hoy) el atacante más poderoso será capaz de enviar, como máximo, una solicitud por 2 microsegundos.
- A continuación, supongamos que vencemos tokens después de 5 minutos. Esto significa que un atacante puede disparar 1.5 * 10 8 solicitudes antes de que caduque el token.
- A continuación, supongamos que queremos que el atacante tenga menos de un 1% de probabilidad de adivinar el token. Por lo tanto, necesitamos un grupo de tokens de 1.5 * 10 10 por token activo.
- Entonces, si tienes 500,000 usuarios concurrentes (Facebook) necesitas 7.5 * 10 15 tokens (un grupo por usuario).
- Esto significa que necesita 53 bits de datos, lo que, de nuevo, no se acerca a los 130 bits que solicita Google.