As long as we're getting efficiency cores and such, maybe we need some "crypto cores" added to modern architectures, that make promises specifically related to constant time algorithms like this and promise not to prefetch, branch predict, etc. Sort of like the Itanium, but confined to a "crypto processor". Given how many features these things <i>wouldn't</i> have, they wouldn't be much silicon for the cores themselves, in principle.<p>This is the sort of thing that would metaphorically drive me to drink if I were implementing crypto code. It's an uphill battle at the best of times, but even if I finally get it all right, there's dozens of processor features both current and future ready to blow my code up at any time.
From the paper: "OpenSSL reported that local side-channel attacks (...) fall outside of their threat model. The Go Crypto team considers this attack
to be low severity".
The end result of these side channel attacks would be to have CPUs that perform no optimizations at all and all opcodes would run in the same number of cycles in all situations. But that will never happen. No one wants a slow CPU.<p>As long as these effects cannot be exploited remotely, it's not a concern. Of course multi-tenant cloud-based virtualization would be a no go.
> Can the DMP be disabled?<p>> Yes, but only on some processors. We observe that the DIT bit set on m3 CPUs effectively disables the DMP. This is not the case for the m1 and m2.<p>Surely there is a chicken bit somewhere to do this?
On reading it seems a lib like libsodium can simply set the disable bit prior to cryptographic operations that are sensitive on M3 and above.<p>Also looks like they need to predetermine aspects of the key.<p>Very cool but I don’t think it looks particularly practical.
Reminded me of the Augury attack[1] from 2022, which also exploits the DMP prefetcher on Apple Silicon CPUs.<p>[1]: <a href="https://www.prefetchers.info" rel="nofollow">https://www.prefetchers.info</a>
If you're writing cryptographic routines you should either use the platform cryptography libraries, or follow the documentation:<p><a href="https://developer.apple.com/documentation/xcode/writing-arm64-code-for-apple-platforms#Enable-DIT-for-constant-time-cryptographic-operations" rel="nofollow">https://developer.apple.com/documentation/xcode/writing-arm6...</a>