Spectre: Problema con la comprensión de POC - Lectura de datos desde caché

2

Entiendo la vulnerabilidad (Spectre) y, en teoría, lo que PoC hace. Pero no entiendo la parte de PoC , cuando lee o identifica los datos del caché, entre las líneas 86 - 108. Sé que el PoC está leyendo los datos del caché midiendo el tiempo de lectura de * addr (en l. 90), pero qué ejercicio tiene results[] y por qué mix_i llega al caché cuando representa el byte en la dirección del cache hit?

    
pregunta user104787 11.01.2018 - 16:45
fuente

1 respuesta

1
  

qué ejercicio tiene resultados []

No es un arte exacto. La memoria caché puede ser golpeada para un índice que no es el que fue afectado por victim_function. El umbral puede llevar a resultados límite.

Entonces, el código ejecuta el ataque 999 veces e incrementa los resultados [mix_i] cuando piensa que hay un acierto de caché. A continuación, selecciona el resultado con el valor de resultado más alto (la mayoría de los aciertos de caché esperados) y asume que es el valor correcto para el byte de la víctima.

  

¿Por qué Mix_i golpea el caché cuando representa el byte en la dirección del hit de caché?

mix_i es solo una forma de barajar i.

for (i = 0; i < 256; i++) {
    mix_i = ((i * 167) + 13) & 255;
    ...
}

Los resultados anteriores hacen que la mezcla_i se inicialice como cada valor entre 0-255 solo una vez, pero no en el orden 0,1,2,3 (como i es). Esto se hace por la razón que se indica en los comentarios: a evitar la predicción de zancadas ;

    
respondido por el Hector 11.01.2018 - 17:27
fuente

Lea otras preguntas en las etiquetas