как предотвратить обмен буфером

этот вопрос специфичен для Unix и Linux. но это тоже программирование и безопасность.

моя программа получит четкий пароль или ключ дешифрования одним из нескольких способов (дешифрование файла паролей, запрос агента и т. д.), и я хочу быть уверенным, что он не может быть записан для замены места, прежде чем он может быть удален из памяти после использования Это. Я думаю, что это означает, что вы получаете несовместимое адресное пространство. но обычно требуется разрешение root, а моя программа должна выполняться как не-root. это можно сделать портативно в Unix? это обнадеживает ли Linux?

настройка системы на отсутствие пространства подкачки не является вариантом, так как пользователь программы, вероятно, не имеет таких полномочий, и, хотя это может сделать систему более безопасной, не все системы могут это сделать.

Я могу сделать эту часть на C, хотя способ сделать это в Python3 тоже будет приятным.

может ли мой процесс без полномочий root получить несколько необработанных страниц для обеспечения безопасности?

могу ли я предотвратить приостановление этого процесса? лучше выйти, чем чистый пароль, написанный для обмена.

2 Solutions collect form web for “как предотвратить обмен буфером”

В Linux используйте mlock http://linux.die.net/man/2/mlock

mlock () и mlockall () соответственно блокируют часть или все виртуальное адресное пространство вызывающего процесса в ОЗУ, предотвращая пересылку памяти в область подкачки.

Страница руководства содержит более подробную информацию.

Я должен сначала упомянуть, что я абсолютно не специалист по безопасности.

Для части python, похоже, что wrapping mlock в python не сложно использовать ctypes. Из раздела ограничений и разрешений человека для mlock кажется, что обычный пользователь может заблокировать ограниченный объем памяти. Запуск uname -a в моей системе дает мне max locked memory (kbytes, -l) 64 которой должно быть достаточно для хранения пароля (но вы, вероятно, должны заботиться о переполнении).

Для спящего режима вы не можете обрабатывать сигнал SIGSTOP , но если ваша система изящна, вы можете получить SIGTSTP (см. [Можно временно заморозить процесс в Linux] ). Если вы получаете только SIGSTOP , [are-passwords-stored-in-memory-safe], похоже, говорят, что вы обречены, если не используется шифрование диска, что может оказаться для вас недействительным. Однако вы можете обнаружить нарушение, SIGCONT к SIGCONT , но это может быть слишком поздно.

  • Экран GNU - любой способ удалить пароль при отсоединении?
  • Могут ли отдельные учетные записи unix использовать имя пользователя, но имеют отдельные пароли?
  • Каков альтернативный модуль openldap pwdChecker?
  • 2 пароли для входа
  • Вход в дистрибутив GNU / Linux занимает слишком много времени
  • Команда SCP и / или SSH с паролем в строке
  • Получение незарегистрированного пароля от Icedove
  • / etc / shadow дата последнего смены пароля - UTC или местное время?
  • При взломе пароля он помогает иметь другие простые пароли в одном файле?
  • Как проверить пароль в Linux?
  • Какой смысл хеширования?
  • Linux и Unix - лучшая ОС в мире.