Хранение ключей шифрования для настольного приложения (почтовый клиент)[Дублирование]

Существует много статей о переполнении стека и security.stackexchange по хранению ключей шифрования, но я все еще в замешательстве, поэтому я решил еще раз спросить здесь.

По сути, я создаю почтовый клиент для образовательных целей, в котором пользователи могут создать учетную запись, где они вводят там свой Email-ID и пароль. Я ищу безопасный способ сохранить информацию.

я буду

  1. Шифрование Email-ID и пароля
  2. и хранение ключа шифрования на ПК пользователя, потому что я не хочу, чтобы пользователь вводил пароль каждый раз, когда он отправляет и отправляет электронную почту

Из прочтения я понял, что

  1. Мне нужно хранить ключ шифрования в отдельном месте, так что хакеру будет трудно его найти. Но проблема здесь в том, что мое приложение написано на Python, и это будет приложение с открытым исходным кодом, поэтому хакер может просмотреть исходный код. код и получить путь к каталогу, где хранится ключ.
  2. Второе решение заключается в том, что у меня может быть мастер-пароль, который будет использоваться в качестве ключа. Когда пользователь запускает приложение в первый раз после запуска компьютера, приложение запросит мастер-пароль, а затем я могу сохранить ключ в оперативной памяти.,

Глядя на все статьи в интернете на эту тему, это повторение, но я все еще учусь делать заявки, и последние два дня я безуспешно зацикливаюсь.

ОС: Linux Ubuntu 14.04

Язык программирования / рамки: Python/Gtk+

1 ответ

Решение

Ваше понимание верно.

Невозможно запретить злоумышленнику, имеющему доступ к локальному ключу, доступ к паролю. Затенение пути, где он хранится, обеспечивает практически нулевую дополнительную безопасность - любой злоумышленник, обладающий ноу-хау, необходимым для выполнения расшифровки, легко обойдет такой механизм.

Единственный безопасный способ сделать это - сохранить ключ (или ключ от ключа) вне компьютера - в уме пользователя, в случае механизма мастер-пароля.

Если вы в конечном итоге используете мастер-пароль, не забудьте использовать правильную функцию получения ключа, в идеале с механизмом растягивания ключа, таким как PBKDF2 или bcrypt. Никогда не используйте пароль в качестве ключа напрямую (или даже простой хэш пароля).

Другие вопросы по тегам