#encryption
#шифрование
Вопрос:
Я пишу часть клиентского программного обеспечения с открытым исходным кодом, которое может подключаться к веб-службам от имени пользователя. Пользователь вводит свое имя пользователя и пароль, и программное обеспечение подключается, используя эти учетные данные.
Для удобства у меня есть опция для программного обеспечения сохранять учетные данные пользователя, чтобы их не нужно было вводить снова в будущем.
Однако, поскольку это программное обеспечение с открытым исходным кодом, я не уверен, как я могу хранить учетные данные достаточно безопасным способом. Мне кажется, что любой метод, который я использую для шифрования пароля, может быть легко отменен и использован для расшифровки пароля. Я понимаю, что идеальная безопасность невозможна, но есть ли лучшая практика, чем использование ROT13, как я сейчас делаю?
Комментарии:
1. В зависимости от вашей платформы может существовать системный API для хранения и извлечения учетных данных относительно безопасным способом.
2. Если вы пишете на языке, который имеет генератор псевдослучайных чисел, вы также можете сделать что-то вроде этого: srand([random_number_generated_at_compile_time]); passwd = rand() rand();. Это не так безопасно, но это лучше, чем ничего, я думаю
Ответ №1:
Разработчики Pidgin довольно хорошо обрабатывают сохраненные пароли в клиенте с открытым исходным кодом; те же рассуждения применимы к клиенту веб-службы.
Краткое изложение:
- Если приложение само сохраняет пароли, оставьте их в виде обычного текста и установите права доступа к файлам, чтобы их мог читать только пользователь. (Это делает очевидным, что файл настроек является конфиденциальным!)
- Предоставьте возможность интеграции с API набора ключей платформы, таким как Windows Data Protection API, или с приложением набора ключей, таким как KeePass.