2012-04-18 2 views
4

Мне интересно, безопаснее ли выполнять криптографические функции в собственном коде. Используя Java, вы не можете быть уверены, что GC повторно сортирует память и оставляет мелкие копии ваших ключей в памяти, даже если вы обнулите ключ сразу после en/decryption.Исходный код NDK для Android.

Возможно, это глупый вопрос, но я не мог найти никакой информации. Нативный код по-прежнему работает в песочнице и внутри виртуальной машины, поэтому система GC/VM/пересортирует память и, следовательно, оставляет мелкую копию? Так что стек и куча статичны или могут быть перемещены? AFAIK у них есть виртуальные адреса, поэтому это можно сделать.

Спасибо и наилучшие пожелания

ответ

4

Родной код скомпилированы для ARM (и теперь Intel я думаю), не Dalvik VM, и он работает непосредственно на процессоре, он будет загружен и вызывается Dalvik, но он напрямую не контролируется им. Стек и куча собственного кода являются реальными. вызов memcpy/memset изменит память навсегда.

Все современные системы также имеют виртуальную память, так что это, насколько вы, вероятно, получите в отношении безопасности.

Смежные вопросы