У меня есть приложение PHP, которое должно запускать сценарии bash и предоставлять имя пользователя и пароль (для удаленных систем). Мне нужно хранить эти учетные данные где-нибудь, доступном моему PHP (веб-приложению). Логичным местом является база данных (в настоящее время MySQL, но будет независимой). Проблема со «стандартным» способом хеширования и хранения учетных данных заключается в том, что он необратим. Я должен иметь возможность получить учетные данные в виде незашифрованного открытого текста, чтобы иметь возможность вставлять данные в сценарии bash.
Есть ли у кого-нибудь предложения по безопасному способу сделать это?
Я подумал, может быть, PKI использует учетные данные и сохраняет результат в БД. Затем используйте закрытый ключ для расшифровки (PHP может это сделать). Храните сценарии для этого за пределами корневого веб-узла.
Любые мысли очень ценятся.
Решение проблемы
Во-первых, чтобы заявить (надеюсь) очевидное, если вы можете каким-либо образом избежать хранения имен пользователей и паролей, сделайте это; это большая ответственность, и если ваше хранилище учетных данных будет взломано, это может предоставить доступ ко многим другим местам для тех же пользователей (из-за совместного использования пароля).
Во-вторых, если вы должны хранить учетные данные, предпочтите хранить пароли с использованием необратимого криптографического хэша с солью, поэтому, если ваши данные скомпрометированы, пароли не могут быть легко реконструированы, и вообще нет необходимости хранить ключ дешифрования.
Если вы должны хранить дешифруемые учетные данные:
Если имя пользователя не требуется для поиска записи учетной записи (что в вашем случае не требуется), зашифруйте и имя пользователя, и пароль. Если вы шифруете оба, зашифруйте их как один запуск шифрования, например
userAndPass=(пользователь+":"+пароль);
шифрованиеInit();
зашифровать (соль);
зашифровать (userAndPass);
cipherText=encryptFinal();
и сохраните единственный большой двоичный объект, чтобы было меньше коротких зашифрованных текстов, которые легче взломать, а имя пользователя еще больше увеличивает пароль.
PS: я не программирую на PHP, поэтому не могу комментировать подходящее криптографическое ПО в этой среде.
Комментариев нет:
Отправить комментарий