> All internal exports: Zeroize XMM registers that may contain secret
> data before returning. (At 4x pxors per cycle, the overhead is
> negligible.)
> 
> _ctr32: Zeroize $key0 and $ctr.

Question is why just aesni module? Why not everywhere? Why not demand
that compiler does it too? Why just registers, and not stack too? The
answer is that it doesn't make much sense, because the code you are
trying to "protect" against resides in same process context and can read
all the secrets from memory much more reliably than from registers or
stack. I'm not saying that it makes no sense to clean up, only that *if*
we do choose to do it, then it should be done for right reason and
consistently.

> (By the way, is OPENSSL_wipe_cpu used or tested anywhere?)

No. For reference, the original idea was to seek opportunity to deploy
it on border to libcrypto shared library, i.e. not upon return from some
specific subroutines, but automatically upon any return from within
libcrypto to application code. The idea was never realized though. The
only case when it makes sense is when some other code called afterwards
refers to register or ex-local variable used in libcrypto as
uninitialized and unintentionally sends that data to another process or
over network. Even then one can argue that it's that code vulnerability
that should be fixed. It might make sense to use OPENSSL_wipe_cpu in
specialized cases, when OpenSSL components are used in non-multi-task
environment, but that would be something for specific developer to
reason around and do.


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to