I think what we really need is a constant-time coprocessor. An FPGA would be ideal, since you can reconfigure it to support new/improved algorithms over time. It's much easier to defend against side-channels when you have control over the hardware. Are there any products or projects in this direction? Ideally, you'd have a drop-in software library replacement, which would redirect all relevant operations to the hardware.
In any actual field of engineering, building everything on systems that fail-open this way would be unacceptable. Universally relying on CPUs that leak side channel everywhere because It Go Fast is like building with asbestos and cardboard. Meaning completely safe in a controlled environment, and often accidentally safe outside of it, but dangerous as a factory default, because humans' factory-default is to make questionable decisions without reading the manual.<p>I can't wait for whatever cock-up finally takes down the internet and kills enough people that, once the smoke clears, "move slowly and don't break anything" becomes a normal career path, rather than a prayer recited by jaded security professionals dual-wielding rolls of duct tape.
Put together a decorator in Python that does time.sleep to get really close to constant time operations. Am I understanding the problem wrong? I'd think that something like that could be implemented in any programming language that needs constant time operations.<p><a href="https://gist.github.com/beltiras/86294a3e746820e421080b1619b0df46" rel="nofollow">https://gist.github.com/beltiras/86294a3e746820e421080b1619b...</a>