Introduccion

Side channel:Es cualquier ataque basado en la información obtenida de la aplicación de un sistema informático, en lugar de debilidades en el propio algoritmo implementado (por ejemplo, cryptanalisis y fallos de software). La información, el consumo de energía, las filtraciones electromagnéticas o incluso el sonido pueden proporcionar una fuente adicional de información, que puede ser explotada.
fijarse en cosas como lo que tarda en darte la respuesta incorrecta y asi poder sacar la respuesta correcta testeando caracter a caracter cual va tardando mas y por tanto es cierto.
Cache-based Side Channel

Non-interference

Un programa al finar el pasar y tratar memoria de un punto a otro (prg): Mems -> Mems
Es necesario formailizar los programas en forma de sintaxis acotando las variables ... σ ∈ Mems = Vars → ℕ. infoflow-basics

Information Flow control


Reglas de asignacion : ninguna variable secreta puede ser asignada a una variable publica.
Reglas de IF: una variable secreta no puede ser determinante para el valor de una clave publica

Attacker model

Variables publicas y privadas, el atacante puede ver las publicas , casos Non-interference ( ):
program f1(xpublic, xsecret) {
xpublic = xsecret + 1
}
Caso malo , decidimos el valor de la variable publica en funcion de una privada que viene de memoria
--
program f2(xpublic, xsecret) {
xsecret = 0
xpublic = xsecret + 1
}
bien
--
program f3(xpublic, xsecret) {
xsecret = xpublic + 1
}
bien
--
program f4(xpublic, xsecret) {
xsecret = 1
}
bien -> se asgina una variable privada, no afecta en ningun momento la publica
--
program f5(xpublic, xsecret) {
if (xsecret==0)
xpublic = 1
else
xpublic = 0
}
mal -> una varibale secreta que viene de memoria no puede incidir sobre una variable publica
La cuestión es que una variable secreta (no modificada) no puede inferir en variables públicas, ya sea explícitamente (asignación) o implícitamente (si se declara secreta y asignación a público). Ademas la secreta siempre tiene que venir de memoria sino es asi y modifica la publica no seria caso nulo.
NI permite comprobar de forma statica si es seguro y de forma dinamica.

Speculative execution attacks and countermeasures

La principal idea de este ataque es explotar como funciona la memoria cache, la cache aumenta la velocidad considerablemente pero al mismo tiempo al guardar los datos importantes es posible atacarla y sacar informacion importante.
Si el atacante pone en cache sus datos la cpu puede ejecutarlos por tanto es importante tener en cuenta como funciona y como es vulnerable.

covert channel: dos procesos pueden construir un canal encubierto basado en las instrucciones de AVX como sigue. Aquí, supongo que el proceso p1 envía información y el proceso p2 lo recibe. Para enviar un poco a procesar p2, el proceso p1 ejecuta una instrucción de AVX (si es b = 1) o no AVX (si b = = 0). Para leer el bit b, el proceso p2 ejecuta una instrucción adicional de AVX para la cual él es la ejecución. Si la instrucción de p2 se llevó 1 ciclo, entonces b es 1. Si la instrucción de p2 tomó 51 ciclos, entonces b = 0.
Como es habitual, los procesos tienen que ponerse de acuerdo sobre la tasa de transmisión y la programación. Esto también debe tener en cuenta el tiempo suficiente para dejar que AVX se apague después de cada transmisión (por ejemplo, no pueden transmitir más de 1 bit por 200 ciclos).

Conclusiones: Son parte de las cpu modernas y hay que tenerlos en cuenta, no vale solo con Retrocediendo estado,

Automated detection of speculative leaks

Info