[Cryptography] Making sure memory erasure is not optimized away

Ron Garret ron at flownet.com
Sat Aug 27 11:54:18 EDT 2022


On Aug 25, 2022, at 12:24 PM, Phillip Hallam-Baker <phill at hallambaker.com> wrote:

> [Before we start, use language X instead is not an answer here.]
> 
> We all know array bounds checking etc. is a good thing to have to write any application code. But the cost of abstracting away memory management is that cryptographic code has the very particular property that we want to ensure data is cleared AFTER USE rather than BEFORE REUSE.
> 
> A lot of applications written in high level languages are vulnerable to attacks when someone uses portable assembly language, aka C to write a program that allocates large chunks of memory and then greps through it looking for 'good stuff'.
> 
> So the question is how to ensure this does not happen by implementing disposal mechanisms THAT DO NOT GET OPTIMIZED AWAY.
> 
> See here is the thing. I can check my code and check my code but I can only check the current version of the compiler/optimizer. And some of the things I know the C# optimizer is now doing are pretty hard core. Yes, when generating assemblies, it can optimize across assembly boundaries now.
> 
> I am pretty sure most other high level languages suffer from the same thing unless there is a mechanism to explicitly state 'do not optimize'. Same goes for things like the Montgomery ladder which isn't as reliably constant time as some people might imagine. 
> 
> Has anyone got pointers to ways to make sure this is done right?

This is a Really Hard Problem that goes beyond the language level.  Nowadays these kinds of optimizations happen *in hardware*.  Even in assembly language there is often no way to guarantee that if you write a word to memory that anything actually happens beyond the L0 cache.  It is simply not possible to draw a reliable security perimeter around a *process* on modern hardware.  This is one reason secure enclaves have become a thing.

rg

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.metzdowd.com/pipermail/cryptography/attachments/20220827/543c7388/attachment.htm>


More information about the cryptography mailing list