3 ms·
> Is there a fundamental reason we cannot make speculative execution secure? Any memory access leads to a time channel, which might be observable or not. As ex
by matu3ba 3y ago
> Is there a fundamental reason we cannot make speculative execution secure?
Any memory access leads to a time channel, which might be observable or not. As example, hyperthreading is known to create observable side channels even in L1 and L2 cache, since those are shared.
L3 cache is also shared between CPU cores on the same socket, so unless you can ensure the L3 cache data can never be shared you can not entirely eliminate this time channel.
Now getting back to speculative execution: All possible execution sequences must ensure to satisfy all possible cross-interaction rules to not make any time channel visible, which 1. includes restoring previous state fully and 2. not leaking any timing behavior.
Just think in your mind of all possible cases, which would need to be verified (the complete instruction set) and if you can think of any sane time travel time leaking cache-aware separation logic to do this.
On top of that it has already been shown that fundamentally the hardware guarantees on cache behavior are broken (they are merely a hints).
- nextaccountic 3y ago> All possible execution sequences must ensure to satisfy all possible cross-interaction rules to not make any time channel visible Does this refer to some theorem? I'm very interested in how to model & prove formally that a given operation on a given system doesn't have timing side channels
- matu3ba 3y agoI know of TCF from https://www.cs.yale.edu/homes/antonopoulos-timos/PLDI-2017.pdf https://www.cs.yale.edu/homes/antonopoulos-timos/PLDI-2017.p..., but the folks from sel4 have likely improved the models as they have a full research team on it: https://trustworthy.systems/projects/TS/timeprotection/ https://trustworthy.systems/projects/TS/timeprotection/. You might want to get involved.