Relacionado, no un duplicado: Sincronización de cadenas seguras - Evitar la longitud Fuga
- Sé que hay errores de caché, supongamos que encajamos en una línea de caché a toda velocidad.
- La excelente respuesta de Thomas no habla de jitter, excepto la introducida por GC, ni toca la ejecución asíncrona.
- Podemos asumir una implementación de bajo nivel (ensamblador, C, F77, Forth) que se puede usar en cualquier lenguaje de nivel superior (por ejemplo, Python)
Por favor, corrígeme si me equivoco:
- Estamos hablando de comparar dos cadenas de desigual . El primero es elegido por Eva, el segundo pertenece a Alicia. Alice quiere evitar que Eve aprenda la longitud y / o el contenido de la segunda cadena.
-
Ningún lenguaje de programación convencional existente tiene rutinas de comparación de cadenas de tiempo constante en su biblioteca estándar.
-
Para evitar la pérdida de información de longitud, ¿lo hacemos?
- hash precomputa de
Victoria'sel secreto de Alicia (la función hash en sí misma no debe ser vulnerable a los ataques de tiempo) - calcular el hash de la cadena maligna de Eve
- comparar hashes (cadenas de igual longitud por definición de la función hash) en tiempo constante
o
- simplemente compare el byte por byte de la cadena de Eve con el secreto de Alice, ¿incrementando un contador (o dos contadores, uno para el otro y para que no coincida con los bytes) hasta el final de la cadena de Eve?
- hash precomputa de
-
¿La introducción de la fluctuación aleatoria criptográfica es una medida válida de defensa en profundidad? (Por favor, suponga que esto sucede en una LAN en un momento de silencio cuando el ruido de sincronización natural es mínimo).
-
¿La ejecución asíncrona de las comparaciones (con algunas garantías duras en tiempo real) es una defensa viable? (Sí, sé que otro canal lateral puede estar perdiendo)
Lo que no solicito :
- recomendaciones de idioma / producto
- responde ' depende de tu modelo de amenaza ' (mi amenaza se esconde en otro servidor en la habitación, con un número ilimitado de intentos)