Как реверсивно хранить пароль с помощью Python в Linux?

StackOverflow https://stackoverflow.com/questions/1001744

Вопрос

Во-первых, мой вопрос не о хешировании паролей, а о шифровании паролей. Я создаю настольное приложение, которое должно аутентифицировать пользователя в стороннем сервисе. Чтобы ускорить процесс входа в систему, я хочу дать пользователю возможность сохранить свои учетные данные. Так как мне нужен пароль для аутентификации его в сервисе, его нельзя хэшировать.

Я думал об использовании модуля pyCrypto и его реализации Blowfish или AES для шифрования учетных данных. Проблема в том, где хранить ключ. Я знаю, что некоторые приложения хранят ключ непосредственно в исходном коде, но, поскольку я кодирую приложение с открытым исходным кодом, это не кажется очень эффективным решением.

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

Если у вас есть лучшее решение этой проблемы, чем использование pyCrypto и системных / пользовательских ключей, не стесняйтесь поделиться им. Как я уже говорил ранее, хеширование не является решением, и я знаю, что шифрование пароля уязвимо, но я хочу дать возможность пользователю. Использование Gnome-Keyring также не вариант, так как многие люди (включая меня) не используют его.

Это было полезно?

Решение

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

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

Другие советы

Попробуйте использовать PAM . Вы можете создать модуль, который автоматически дешифрует ключ при входе пользователя в систему. Именно так работает GNOME-Keyring (если это возможно). Вы даже можете писать модули PAM на Python с помощью pam_python .

Password Safe разработан Брюсом Шнайером с открытым исходным кодом. Это для Windows, но вы должны видеть, что они делают, и, возможно, использовать их снова.

http://www.schneier.com/passsafe.html

http://passwordsafe.sourceforge.net/

Прочитайте это: Если вы вводите AES в свой код, вы делаете это неправильно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top