TLDR: Все без исключения реализации AES (ну и наверное многих других симметричных шифров) на C потенциально уязвимы к утечке ключей (а-ля Heartbleed, например), из-за того, что C, будучи портабельным ассемблером, абстрагирует от нас возможность надежно очистить память.
http://www.daemonology.net/blog/2014-09-06-zeroing-buffers-is-insufficient.html
Ну что, плюс один повод перенести системное программирование на какой-то еще язык.
Можно, конечно, повкручивать очередных прагм, или выпустить C0x, но общую проблему это не исправит, т.к. изменения в модели памяти не будут обратносовместимы.
Альтернативно, можно расслабиться и продолжать писать крипто на JS (помнится, его всячески критиковали за невозможность стереть ключи), раз уж в остальных местах всё столь же плохо.
UPD: Пример проблемы - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=8537
http://www.daemonology.net/blog/2014-09-06-zeroing-buffers-is-insufficient.html
Ну что, плюс один повод перенести системное программирование на какой-то еще язык.
Можно, конечно, повкручивать очередных прагм, или выпустить C0x, но общую проблему это не исправит, т.к. изменения в модели памяти не будут обратносовместимы.
Альтернативно, можно расслабиться и продолжать писать крипто на JS (помнится, его всячески критиковали за невозможность стереть ключи), раз уж в остальных местах всё столь же плохо.
UPD: Пример проблемы - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=8537