Подтвердить что ты не робот

Как мы можем хранить пароль, отличный от обычного текста?

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

Этот пароль в текстовом виде в файловой системе является проблемой. Есть ли способ сохранить пароль более надежно?

Это linux os, и приложение написано на питоне и не скомпилировано.

Спасибо!

Дальнейшие разъяснения: В этом процессе пользователей нет. Пароль, хранящийся в файловой системе, используется другим веб-приложением для аутентификации веб-приложения, делающего запрос. Чтобы выразить это словами комментатора ниже: "В этом случае приложение является клиентом другого удаленного приложения". (Спасибо Джо за то, что помогли мне уточнить.)

4b9b3361

Ответ 1

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

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

Ответ 2

Я не думаю, что вы найдете надежный способ сделать это. Я бы предложил сочетание вещей для достижения "безопасности безвестности":

  • сохранить файл паролей на другом компьютере, чем тот, который будет его использовать.
  • сохранить путь к файлу в отдельном файле конфигурации в приложении nachine
  • использовать разрешения для ограничения доступа к файлам конфигурации и пароля только для вашего процесса
  • доступ к файлам аудита, если ваша система разрешает его (сохраняйте журнал, который касался файлов)
  • предоставить папки и файлы безобидные имена (/usr/joe/kittens.txt?)
  • заблокировать физический доступ к компьютерам (удаленным хостингом или заблокированным шкафом или что-то еще)

Ответ 3

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

Ответ 4

Вы можете сохранить его в результате хеш-алгоритма, это односторонний алгоритм (например, MD5 или SHA). При аутентификации вы вычисляете MD5 пароля, введенного пользователем, и проверяете равенство с вашим сохраненным хешем пароля MD5 для этого пользователя. Если это равно, пароль в порядке.

Дополнительную информацию об алгоритмах hasing можно найти:

Ответ 5

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

Кроме того, если ваше приложение скомпилировано, было бы не слишком сложно зашифровать пароль с помощью жесткой кодированной кодовой фразы. Если код не скомпилирован, этот метод не будет действительно полезен, так как потенциальный злоумышленник может просто прочитать источник и определить шифрование.

Ответ 6

https://msdn.microsoft.com/en-us/library/aa378826.aspx Защита паролей автоматического входа в систему Функция LsaStorePrivateData может использоваться серверными приложениями для хранения паролей клиентов и компьютеров. Только Windows

Ответ 7

Является ли ваше веб-приложение размещено на ферме? Если нет, то технология, такая как DPAPI, позволит вам зашифровать пароль, чтобы он мог быть дешифрован только на машине, на которой он был зашифрован.

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

Если это веб-ферма, вы, вероятно, захотите использовать некоторую форму шифрования RSA, как было предложено в других ответах.

EDIT: DPAPI хорош только в том случае, если вы размещаете на окнах, конечно...

Ответ 8

Я не думаю, что вы понимаете ответы. Вы никогда не храните текстовый пароль в любом месте и не передаете его другому устройству.

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

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

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