String Comparison Timing Attack en inglés simple

3

¿Podría alguien decirme qué es un ataque de sincronización de cadenas en términos simples? He buscado en Google esto, pero todas las explicaciones son muy técnicas. Además, ¿este ataque es mejor que un ataque de fuerza bruta? Corríjame si me equivoco, pero creo que este ataque se usa para descifrar contraseñas.

    
pregunta APCoding 22.07.2015 - 00:21
fuente

1 respuesta

9

Cuando se comprueban las cadenas en busca de igualdad, debes verificar que todos los caracteres coincidan. La mayoría de los lenguajes de programación tomarán un atajo y devolverán Falso, o No igual, tan pronto como encuentren un solo carácter que no coincida. Por ejemplo,

str1 = "1111111111111111"
str2 = "1101111111111111"

Sabes que no son iguales en cuanto alcanzas ese 0, ¿por qué seguirías comprobando?

Esto es super explotable. Imagina que estoy intentando descifrar una contraseña (o un hash, o una etiqueta MAC, o cualquier cosa que deba ser comparada por su igualdad), sabiendo que el servidor hará una comparación de cadena perezosa en algún lugar, podría obtener la siguiente sincronización resultados (completamente confeccionados):

Tried "aaaaaaaa", it took 0.2 ms
Tried "bbbbbbbb", it took 0.2 ms
Tried "cccccccc", it took 0.4 ms

Genial, ahora sé que la primera letra es 'c' porque tomó más tiempo. Ahora puedo hacer el mismo truco con "caaaaaaa", "cbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.

Esta comparación de cadenas "perezosa" es generalmente algo bueno para los programadores porque hace que las cosas se ejecuten más rápido, pero es malo para la seguridad. Las comparaciones de cadenas seguras se verán hasta el final, incluso si se encuentra una diferencia para que nunca haya una diferencia de tiempo.

    
respondido por el Mike Ounsworth 22.07.2015 - 00:43
fuente

Lea otras preguntas en las etiquetas