Я знаю, что «как безопасно хранить пароль?» вопросы были заданы много раз здесь; и я знаю, что ответ всегда «Никогда не делай этого! Храните хэши, никогда не храните пароли! Используйте bcrypt!»Лучшая практика хранения паролей для автоматизации
Но как насчет того, когда вы не можете использовать хэш для аутентификации? Например: автоматизированные процессы. Скажем, я написал приложение автоматизации, которое должно войти в SFTP-сайт или какую-то внешнюю службу, для которой требуется имя пользователя/пароль. Я не могу использовать хеш для аутентификации с помощью внешней службы, так что я должен делать?
Я отметил этот вопрос C#
и ASP.NET
, поскольку это две области, к которым этот вопрос относится конкретно к моей ситуации.
Редактировать: Из-за обсуждения, поднятого в комментариях, позвольте мне пояснить угрозу, которую я пытаюсь решить: я хочу, чтобы злоумышленник не мог прочитать пароль открытого текста, используемый для доступа к внешней службе , Это означает, что если они каким-то образом получили доступ к нашей сети или базе данных без доступа администратора, даже с дампом базы данных они не смогут читать пароли в виде обычного текста.
Зависит ли вам пароль, хранящийся на одной машине или хранящийся в базе данных, поэтому любой компьютер в кластере мог бы использовать его? Кроме того, вам нужна модель угрозы, вам нужно четко указать, кто вы пытаетесь запретить чтение пароля. Это кто-то, кто получил базу данных базы данных? Дамп базы данных + источник, но нет способа выполнить код на сервере? Злоумышленник, который может выполнять код в том же контексте, что и IIS? Злоумышленник, имеющий стандартные права пользователя? Злоумышленник, у которого есть права администратора на машине? Мы не можем рассказать вам о лучшей практике, не зная, в какой ситуации вы находитесь. –
@ScottChamberlain Спасибо за ваш комментарий. Я думаю, что лучший случай - это хранить его там, где любой компьютер в кластере может получить к нему доступ, поскольку автоматизированные приложения распространяются на разных машинах. Что касается вопросов модели угрозы, почему бы вам не попытаться защитить от всего вышеперечисленного? Я бы не хотел, чтобы пароли были скомпрометированы в любой из этих ситуаций ... –
Поскольку «злоумышленник, у которого есть права администратора на машине», невозможно выполнить, они могут просто запустить Wireshark, установить поддельный сертификат SSL, который подменяет сайт вы входите в систему и смотрите, как пароль будет передаваться на сервер, и расшифровать его и зафиксировать его таким образом. Или, если это не SSL или каким-то образом защищено от этого, они могут вставлять DLL, которая печатает пароль в файл журнала, когда он отправляется на вызов API, который его использует. –