An article by Michael Howard
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncode/html/secure10102002.asp)
points out that when memset used to clear sensitive information like keys out of RAM, 
the memset
(or equivalent code) can be optimized away by the compiler.

He proposes three possible solutions:
* Touch the memory after the memset
* Replace memset with code that is not optimizable
* Turn off optimizations for the secret clearing code

Two of these solutions involved using the keyword volatile.

A discussion on vuln-dev takes this further (I found it at
http://online.securityfocus.com/archive/82/298061/2002-10-28/2002-11-03/1) and serious 
doubt is
cast on using volatile.  No 100% clear solution emerges.

This seems fairly serious and I see plain old memset used in OpenSSL to remove 
sensitive data. 
Some combination of volatile, external memory clearing function, and filling with 
volatile data
(like the time) might be sufficient.

Comments from any of the developers?



__________________________________________________
Do you Yahoo!?
U2 on LAUNCH - Exclusive greatest hits videos
http://launch.yahoo.com/u2
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    [EMAIL PROTECTED]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to