Атака
Одной из возможных моделей угроз в контексте хранения учетных данных является злоумышленник, который имеет возможность:
- проверить любую (пользовательскую) память процесса
- читать локальные (пользовательские) файлы
AFAIK, консенсус по этому типу атаки заключается в невозможности предотвратить (поскольку учетные данные должны храниться в памяти, чтобы программа фактически их использовала), но есть несколько способов смягчения этого:
- минимизировать время, в течение которого конфиденциальные данные сохраняются в памяти.
- перезапишите память, как только данные больше не нужны.
- замалчивать данные в памяти, продолжать перемещать их и другую безопасность посредством мер неясности.
Python в частности
Первый метод достаточно прост для реализации, возможно через брелок (надеюсь, хранилище пространства ядра)
Второе не достижимо вообще без написания C-модуля, насколько мне известно (но я бы хотел, чтобы это было неправильно здесь или имело список существующих модулей)
Третий сложный.
В частности, python является языком с очень мощными возможностями самоанализа и отражения, трудно предотвратить доступ к учетным данным любому, кто может выполнять код python в процессе интерпретации.
Похоже, существует консенсус в отношении того, что нет способа принудительного использования частных атрибутов и что попытки на него в лучшем случае будут раздражать другие программисты, которые используют ваш код.
Вопрос
Принимая во внимание все это, как безопасно хранить учетные данные аутентификации с помощью python? Каковы наилучшие методы? Можно ли что-то сделать в отношении философии "все публично"? Я знаю "мы все соглашаемся с взрослыми здесь" , но мы должны быть вынуждены выбирать между делением наших паролей с атакующим и использованием другого языка