On 8/13/23 18:25, Isaac Beckett wrote: > > >> Date: Sun, 13 Aug 2023 16:18:08 +0000 >> From: Gernot Heiser <ger...@unsw.edu.au> >> Subject: [seL4] Re: Confidentiality and realtime requirements >> To: devel <devel@sel4.systems> >> >>>>> On 12 Aug 2023, at 02:07, Demi Marie Obenour <demioben...@gmail.com> >>>>> wrote: >>>>> >>>> If you want to relax this, you’ll need a very careful analysis of your >>>> security requirements, and deploy TP where needed and omit where it’s not >>>> needed. But you can't prevent µarch timing channels without TP. Everybody >>>> knows about D-cache channels these days and how easy they are to exploit, >>>> and similar with LLC channels. And if you want to prevent at least those, >>>> then full TP has no extra cost. >>> >>> Does time protection require temporal isolation? >> >> Nope. Time protection is the mechanism that allows providing temporal >> isolation. >> >>>> Developing such a framework is on my agenda (it’s a core part of what I >>>> said I’m waiting for a good PhD student to work on). Basically I want to >>>> be able to make certain security guarantees where components have overt >>>> communication channels. An example is tab isolation in a browser: We want >>>> to have a fully functional web browser that allows processing of sensitive >>>> information in one tab, but guarantee that it cannot be leaked to a >>>> different tab. >>> >>> Another good example is different apps on a mobile device. Android allows >>> any two applications on the same profile to communicate with mutual >>> consent, and yet also allows one application to keep information secret >>> from another. >> >> Yes. The smartphone space is really interesting. While built on top of the >> classical Unix security model (but implementable on a much simpler model) it >> demonstrates that stricter security policies (compared to desktops) can be >> made acceptable to users. >> >>> One critical requirement is that such a framework must allow an efficient >>> implementation, both in terms of performance and power consumption. If it >>> isn’t efficient enough to be deployed, then it won’t do people any good. >> >> Energy is (to first order) proportional to computation, so just looking at >> “performance” is good enough. >> >> And performance has always been our driver – see “security is no excuse for >> bad performance!” ;-) >> >> As I argued earlier, the performance cost of time protection is not higher >> than what you need to eliminate just the most easily exploitable cache >> channels. >> >> Gernot > > This makes me wonder if it’d make sense to design a new CPU and/or > instruction set with the goal of eliminating timing and other side channels. > Like, we had the Lisp machines with hardware support for Lisp, and now most > CPUs are optimized for C and similar languages, and in turn those languages > are optimized for those CPUs (x86, Arm, etc.).
Fully-associative caches with random eviction help a lot. Speculative taint tracking helps close some of the remaining holes. It’s not perfect, but it is the best one can do without cache partitioning or heavyweight flushing, and I suspect both of those are often impractical from a performance perspective. There are designs for fully-associative caches that are practical, at least for levels other than L1. -- Sincerely, Demi Marie Obenour (she/her/hers) _______________________________________________ Devel mailing list -- devel@sel4.systems To unsubscribe send an email to devel-leave@sel4.systems