Ejemplo de ataque de canal lateral de temporización

1

Entiendo que la sincronización del ataque de canal lateral es una medida del tiempo que se tarda en ejecutar algoritmos criptográficos. Me gustaría ver un ejemplo simple que explique cómo el ataque de tiempo toma lugar en cualquier algoritmo criptográfico.

Gracias.

    
pregunta David 06.02.2016 - 22:10
fuente

1 respuesta

3

Un ejemplo tangible es el ataque de tiempo en la comparación de cadenas. Funciona midiendo cuánto le toma a la aplicación comparar 2 cadenas.

Las implementaciones de comparación de cadenas predeterminadas en casi todos los lenguajes de programación están optimizadas y funcionan comparando 2 cadenas de caracteres por carácter y alertan de una falta de coincidencia en cuanto ven una diferencia entre los 2 caracteres que se comparan actualmente.

Entonces, si tenemos este código en nuestra aplicación:

def string_compare(a, b) :
    if (a == b)
        return True
    else
        return False
1: string_compare('abcdefg', 'abctyf2')
2: string_compare('abcdefg', 'abcdefb')

Lo que sucede es que (1) y (2) van a tomar una cantidad diferente de tiempo para ejecutarse. (1) falla más rápido que (2) así que si cambiamos nuestra entrada (segunda cadena) un carácter a la vez al medir el tiempo que tarda la función en regresar, podemos adivinar la primera cadena.

Para mitigar este ataque de tiempo, tenemos que cambiar nuestro código para que tome una cantidad de tiempo fija, independientemente de cuáles sean las entradas:

def safe_string_compare(a, b) :
    if (sha256(a) == sha256(b))
        return True
    else
        return False
OR

def safe_string_compare(a, b) :
    if len(a) != len(b):
        return False

    result = 0
    for x, y in zip(a, b) :
        result |= x ^ y
    return result == 0

Me parece útil esta referencia: reglas de codificación

    
respondido por el Silverfox 06.02.2016 - 22:34
fuente

Lea otras preguntas en las etiquetas