Шифрование паролей на диске для настольных приложений с открытым исходным кодом

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

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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
596
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы можете прочитать о том, как разработчики Pidgin взяли его на вооружение, здесь: Простые текстовые пароли.

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

Ответ принят как подходящий

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

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

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

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

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

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

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

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