| ▲ | simiones an hour ago | |
I don't think it needs to be so dramatic. You could have a proof that the algorithms don't contain data-dependent logic, and perhaps ensure that no data-dependent instructions are generated; and that all branches have the same number of instrution-cycles (adding padding if not). You'd then simply rely on the architecture-specific instruction timing differences to be respected by the compiler. Would something like this guarantee that no side-channels are possible on any architecture? Perhaps not, but it would still get you most of the way there. | ||
| ▲ | logdahl 3 minutes ago | parent | next [-] | |
What about power draw? Maybe that doesn't count as a side channel (I'm not a security guy). Afaik, CMOS transistors mostly draw power on switching state, so a normal adder adding 0+0 or 1+1 is visible in the power draw. I googled a bit and found Sense Amplifier-Based Logic (SABL). Super interesting :^) | ||
| ▲ | brohee 27 minutes ago | parent | prev [-] | |
I'm not so sure. It's pretty hard to know how many cycles a register load instruction will take if there is a cache, or worse a cache hierarchy. That's why I think it will be a lot easier to have a proof on simple cache less designs... Your version is likely good enough in practice though. | ||