SE547: Concurrent noninterference [15/23] |
Noninterference for concurrent programs is much harder. Thread α:
while (trigger0H == 0) {} resultL = 1; trigger1H++
Thread β:
while (trigger1H == 0) {} resultL = 0; trigger0H++;
Thread γ:
if (secretH == 0) { trigger0H++; } else { trigger1H++; }
What happens in initial memory { secretH
= 0, everything else = 0 }?
What happens in initial memory { secretH
= 1, everything else = 0 }?
Smith and Volpano scale this up to leak an n-bit PIN, not just one bit.