Хранение ключей шифрования для настольного приложения (почтовый клиент)[Дублирование]
Существует много статей о переполнении стека и security.stackexchange по хранению ключей шифрования, но я все еще в замешательстве, поэтому я решил еще раз спросить здесь.
По сути, я создаю почтовый клиент для образовательных целей, в котором пользователи могут создать учетную запись, где они вводят там свой Email-ID и пароль. Я ищу безопасный способ сохранить информацию.
я буду
- Шифрование Email-ID и пароля
- и хранение ключа шифрования на ПК пользователя, потому что я не хочу, чтобы пользователь вводил пароль каждый раз, когда он отправляет и отправляет электронную почту
Из прочтения я понял, что
- Мне нужно хранить ключ шифрования в отдельном месте, так что хакеру будет трудно его найти. Но проблема здесь в том, что мое приложение написано на Python, и это будет приложение с открытым исходным кодом, поэтому хакер может просмотреть исходный код. код и получить путь к каталогу, где хранится ключ.
- Второе решение заключается в том, что у меня может быть мастер-пароль, который будет использоваться в качестве ключа. Когда пользователь запускает приложение в первый раз после запуска компьютера, приложение запросит мастер-пароль, а затем я могу сохранить ключ в оперативной памяти.,
Глядя на все статьи в интернете на эту тему, это повторение, но я все еще учусь делать заявки, и последние два дня я безуспешно зацикливаюсь.
ОС: Linux Ubuntu 14.04
Язык программирования / рамки: Python/Gtk+
1 ответ
Ваше понимание верно.
Невозможно запретить злоумышленнику, имеющему доступ к локальному ключу, доступ к паролю. Затенение пути, где он хранится, обеспечивает практически нулевую дополнительную безопасность - любой злоумышленник, обладающий ноу-хау, необходимым для выполнения расшифровки, легко обойдет такой механизм.
Единственный безопасный способ сделать это - сохранить ключ (или ключ от ключа) вне компьютера - в уме пользователя, в случае механизма мастер-пароля.
Если вы в конечном итоге используете мастер-пароль, не забудьте использовать правильную функцию получения ключа, в идеале с механизмом растягивания ключа, таким как PBKDF2 или bcrypt. Никогда не используйте пароль в качестве ключа напрямую (или даже простой хэш пароля).