leonike 15.02.2011 13:21
Есть вопрос! — Хранение паролей в opensource программе
Пишу приложение, которое запрашивает логин и пароль от некого онлайн-ресурса. Соответственно, возник вопрос о хранении данных, чтобы не заставлять пользователя (себя в первую очередь :) ) вводить их каждый раз.Можно написать простой шифратор, но смысла нету, так как opensource. Если используется kde или gnome, то можно задействовать gnome-keyring или kwallet, но хотелось бы кроссплатформенного решения.
Или хранить все пароли в открытом виде, как это делает Pidgin? :)
Кто сталкивался с такой проблемой и какое решение приняли?
orkaan 15.02.2011 13:43 #
+ 1 -
Можно попробовать KeePass, но:
With Mono, KeePass also runs on Linux, Mac OS X, BSD, etc.
Однако даже при наличии «но» этот продукт — чистый open source. :-)
Ну а в чём проблема? Почему это вдруг нет смысла?
Посмотрите на исходники упомянутых вами шифровалок. Они тоже opensource, но это не мешает им безопасно хранить пароли. Вкратце, они для зашифровки и последующего доступа к паролям используют алгоритм с шифрованием по ключевому слову. Без этого слова даже зная алгоритм, получить доступ к данным невозможно. Разумеется, это слово придётся вводить пользователю.
Посмотрите на исходники упомянутых вами шифровалок. Они тоже opensource, но это не мешает им безопасно хранить пароли. Вкратце, они для зашифровки и последующего доступа к паролям используют алгоритм с шифрованием по ключевому слову. Без этого слова даже зная алгоритм, получить доступ к данным невозможно. Разумеется, это слово придётся вводить пользователю.
Придется при каждой потребности пароля вводить это слово. А это не удобно. Поэтому пиджин хранит все в отрытом виде.
Вообще единственное нормальное решение этой проблемы - токены или отпечатки пальцев. Но есть далеко не у всех.
Вообще единственное нормальное решение этой проблемы - токены или отпечатки пальцев. Но есть далеко не у всех.
Не при каждой потребности пароля, а при каждом запуске программы. Есть разница.
Отпечатки и токены тут не помогут - ввод каждый раз отпечатка вместо просто пароля, имхо, не решение проблемы. В случае с токеном даже усложнение.
Как альтернативе KeePass можно посмотреть на Truecrypt. В любом случае это старт какого-то процесса, который будет хранить введённый однажды пароль в памяти.
Может быть вместо кроссплатформенного решения будет проще изучить возможности тех 2-3 ОС, под которые вы собираетесь писать свою программу и написать отдельный код для хранилища секретов в каждой их них?
Отпечатки и токены тут не помогут - ввод каждый раз отпечатка вместо просто пароля, имхо, не решение проблемы. В случае с токеном даже усложнение.
Как альтернативе KeePass можно посмотреть на Truecrypt. В любом случае это старт какого-то процесса, который будет хранить введённый однажды пароль в памяти.
Может быть вместо кроссплатформенного решения будет проще изучить возможности тех 2-3 ОС, под которые вы собираетесь писать свою программу и написать отдельный код для хранилища секретов в каждой их них?
>Придется при каждой потребности пароля вводить это слово. А это не удобно. Поэтому пиджин хранит все в отрытом виде.
Бумажник открывается одновременно с авторизацией (раз так и так придётся вводить пароль/сканировать отпечаток пальца) в системе. Необходимые сервисы прописываются в автозагрузку и имеют доступ к бумажнику в течении определенного периода времени, после чего бумажник закрывается.
Можно не закрывать бумажник по таймауту, а только когда блокируется компьютер, а блокировку, с помощью того же blueproximity, настроить так, чтобы компьютер лочился при удалении владельца на определенное расстояние от него.
Или придумать другие варианты - основной посыл в том, что можно постараться достичь компромисс между удобством работы и безопасностью.
Токены и фингерпринты тоже не панацея, злоумышленник ведь может получить физический доступ не только к компьютеру, но и к его владельцу :)
Бумажник открывается одновременно с авторизацией (раз так и так придётся вводить пароль/сканировать отпечаток пальца) в системе. Необходимые сервисы прописываются в автозагрузку и имеют доступ к бумажнику в течении определенного периода времени, после чего бумажник закрывается.
Можно не закрывать бумажник по таймауту, а только когда блокируется компьютер, а блокировку, с помощью того же blueproximity, настроить так, чтобы компьютер лочился при удалении владельца на определенное расстояние от него.
Или придумать другие варианты - основной посыл в том, что можно постараться достичь компромисс между удобством работы и безопасностью.
Токены и фингерпринты тоже не панацея, злоумышленник ведь может получить физический доступ не только к компьютеру, но и к его владельцу :)
Народ делает проги, которые поддерживают разные типы хранилища, например Adobe AIR - http://habrahabr.ru/blogs/adobe/46294/
DPAPI в Windows, KeyChain в Mac OS или KeyRing/KWallet на Linux.
Или Subversion - умеет работать как с keyring так и с kwallet.
Плюс хотят слухи что Gnome и KDE ведут переговоры по созданию единого интерфейса для хранения паролей, так что может по этой теме уже есть какие-то наработки.
А так в целом - можно и самому написать такую хранилку паролей, это довольно просто. Алгоритм её в том, что она шифрует все остальные пароли и данные основным, который никуда к себе не записывает, а запрашивает каждый при загрузке и держит потом только в оперативке. Поэтому даже автор программы не сможет расшифровать данные не зная твоего пароля.
DPAPI в Windows, KeyChain в Mac OS или KeyRing/KWallet на Linux.
Или Subversion - умеет работать как с keyring так и с kwallet.
Плюс хотят слухи что Gnome и KDE ведут переговоры по созданию единого интерфейса для хранения паролей, так что может по этой теме уже есть какие-то наработки.
А так в целом - можно и самому написать такую хранилку паролей, это довольно просто. Алгоритм её в том, что она шифрует все остальные пароли и данные основным, который никуда к себе не записывает, а запрашивает каждый при загрузке и держит потом только в оперативке. Поэтому даже автор программы не сможет расшифровать данные не зная твоего пароля.
Видимо, поддержка зоопарка хранилищ - лучшее решение. Остановлюсь пока на этом варианте. Всем спасибо за внимание )
Я бы посоветовал, после проверки всего зоопарка не забыть добавить простейшее des шифрование.
У себя так делал.
Если программа будет рассчитана только для *nix like то смело используй ssl, если для windows тоже, тогда добавляешь простейшее des шифрование.
У себя так делал.
Если программа будет рассчитана только для *nix like то смело используй ssl, если для windows тоже, тогда добавляешь простейшее des шифрование.