Path: csiph.com!weretis.net!feeder9.news.weretis.net!news.misty.com!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: Keith Thompson Newsgroups: comp.compilers Subject: Re: Crypto friendly optimization? Date: Sat, 24 Aug 2024 16:33:42 -0700 Organization: Compilers Central Sender: johnl%iecc.com Approved: comp.compilers@iecc.com Message-ID: <24-08-004@comp.compilers> References: <24-08-003@comp.compilers> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="25851"; mail-complaints-to="abuse@iecc.com" Keywords: optimize, C, comment Posted-Date: 24 Aug 2024 22:42:55 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:3585 John R Levine writes: > On a cryptography list people were complaining that compiler optimizers > mess up their cryptographic code and make it insecure. They try to write > code that runs in constant time, or that erases all the temporary storage, > but the compilers say oh, that's dead code, or oh, I can make this faster > with a few branches and the erases go away and the constatnt time isn't. > > This 2018 paper from Cambridge discusses changes they made to Clang/LLVM > so they could tell the compiler what they wanted it to do. Has there been > other work on this topic? > C23 will add the memset_explicit() function : The memset_explicit function copies the value of c (converted to an unsigned char) into each of the first n characters of the object pointed to by s. The purpose of this function is to make sensitive information stored in the object inaccessible. I'm not aware of any current implementations that support it. -- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com void Void(void) { Void(); } /* The recursive call of the void */ [C11 has memset_s() which seems more or less the same thing. I put the wrong link in the previous message. The paper is here: https://ieeexplore.ieee.org/document/8406587 -John]