3 ms·
If the attacker can do timing on their side in a pure function, then by definition the time the response takes is one of the function inputs.
by eridius 8y ago
If the attacker can do timing on their side in a pure function, then by definition the time the response takes is one of the function inputs.
- makomk 8y agoHaskell functions are only pure in an abstract sense that ignores micro-architectural side-effects and the resulting timing changes. All of the recent speculative side-channel attacks are the result of the abstraction layer exposed by modern processors leaking. You can't fix this by putting more abstraction layers with neat theoretical properties on top.
- Symmetry 8y agoYou can't be guaranteed to prevent the attacker form writing information to those side channels but you can guarantee that the attacker can't read from those side channels because reading from them requires doing timing analysis and timing analysis requires IO - which we've stipulated hasn't been passed to the attacking function.