Безопасные параметры для хранения пароля Openssl на сервере (Linux, Python, CherryPy) - PullRequest
0 голосов
/ 12 апреля 2011

Я реализовал HTTP-сервер (CherryPy и Python), который получает зашифрованный файл от клиента (Android).Я использую OpenSSL для расшифровки загруженного файла.В настоящее время я использую openssl -enc -pass file:password.txt -in encryptedfile -out decryptedfile для расшифровки на стороне сервера.Как видите, пароль, используемый openssl, хранится в текстовом файле (password.txt).

Есть ли более безопасный способ сохранить этот пароль OpenSSL?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2011

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

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

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

Кажется, что сервер получает зашифрованный файл плюс какой-то тип пароля.Рассматривается ли защита пароля на этапе передачи или как хранилище на сервере?Протокол HTTPS может помочь защититься от угроз, связанных с передачей файла / данных.Как я вижу из вашего описания, похоже, что проблема заключается в хранении на стороне сервера.

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

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

0 голосов
/ 12 апреля 2011

Пропустите его через более высокий FD и используйте этот FD в командной строке.Обратите внимание, что вам нужно использовать аргумент preexec_fn для настройки FD до запуска процесса.

subprocess.Popen(['openssl', ..., 'file:/dev/fd/12', ...], ...,
  preexec_fn=passtofd12(password), ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...