Шифрование паролей на диске для настольных приложений с открытым исходным кодом - PullRequest
3 голосов
/ 21 января 2009

Можно ли хранить пароли в локальной системе (Windows XP), доступ к которым может получить только само приложение?

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

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

Здесь есть несколько связанных вопросов о переполнении стека, и наиболее подходящее решение похоже на использование службы операционной системы, такой как DPAPI.

Правильно ли исходить из того, что пароль может быть извлечен программным обеспечением без какого-либо ввода пользователя, а исходный код является открытым исходным кодом, что пароль всегда может быть получен (соответственно технически и умышленно) от

Ответы [ 4 ]

6 голосов
/ 21 января 2009

Вы можете прочитать о том, как разработчики Pidgin это делают: http://developer.pidgin.im/wiki/PlainTextPasswords.

2 голосов
/ 21 января 2009

Использование DPAPI в режиме UserData только позволит вашей учетной записи на вашем компьютере получить доступ к зашифрованным данным.

Он генерирует главный ключ на основе ваших учетных данных и использует его для шифрования.

2 голосов
/ 21 января 2009

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

0 голосов
/ 21 января 2009

Безусловно, вы можете написать программу для безопасного хранения паролей.

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

Вы должны убедиться, что при создании ключа AES вы делаете это криптографически безопасным способом. Простое использование RAND не сработает и не сгенерирует случайную строку символов.

Open Source имеет очень мало общего с безопасностью (на мой взгляд). Учитывая уровень сложности в инструментах для обратного инжиниринга исходного кода, даже если у вас было решение с закрытым исходным кодом, люди, решившие отследить ваш код, могли бы сделать это.

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

...