El tiempo de procesamiento fijo es el método más básico y completo para defenderse de los ataques de temporización: para evitar la explotación de los datos que se filtran a través de la temporización, bueno, no se filtren. Sin embargo, es más fácil decirlo que hacerlo. El reciente "Lucky Thirteen" muestra que es posible detectar diferencias de tiempo con una precisión de microsegundos cuando el objetivo es "cerca" del atacante (en la misma LAN); los detalles del ataque aprovechan la pequeña fuga que quedaba en las implementaciones SSL que estaban parcheadas con respecto a los ataques de tiempo - estas implementaciones estaban calculando el MAC incluso cuando el descifrado no produjo un relleno adecuado, precisamente para obtener un tiempo de procesamiento que fue tan fijo como se pudo lograr; pero era difícil evitar una variabilidad de un microsegundo.
Si aplica un tiempo de procesamiento "general" fijo (por ejemplo, 1 segundo para cada solicitud), tendrá problemas con los sistemas operativos multitarea. Si la implementación es solo una llamada sleep()
después del procesamiento principal, entonces la CPU es libre de manejar otras solicitudes, lo que se ve bien ... pero pierde datos, ya que el atacante podría enviar otras solicitudes simultáneamente y averiguar si su servidor está ocupado o no En general, al enviar muchas solicitudes a su servidor, el atacante puede hacer que el tiempo de procesamiento de cada solicitud sea arbitrariamente largo y exceda cualquier límite fijo. Si solo restringe el tiempo de procesamiento para que sea un múltiplo integral de una granularidad fija (por ejemplo, el tiempo de procesamiento siempre es n por 0.1 segundos, con n como un número entero), entonces simplemente tiene "umbrales" que hacen que la tarea sea un poco más difícil para el atacante, pero no imposible, e incluso podría ayudar al atacante. De hecho, el ataque "Lucky Thirteen" muestra cómo la explotación de dicho umbral (correspondiente a la forma en que SHA-1 y SHA-256 procesan los datos mediante bloques de 64 bytes) solo necesita un "phasing" y hace que la imagen estadística sea más clara.
En este momento, la mejor defensa parece ser la adición de un retraso aleatorio de unos pocos milisegundos, lo que desenfocará la imagen y evitará el análisis ... y, además, no permita que el atacante conecte el la misma LAN que el servidor . Lo que debería ser evidente.