Как сделать так, чтобы мое развернутое приложение надежно шифровало пароль, а затем расшифровывало его позже для автоматизации - PullRequest
0 голосов
/ 04 августа 2011

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

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

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

1 Ответ

0 голосов
/ 05 августа 2011

Чтобы прямо ответить на вопрос, вы ищете асимметричное шифрование (а не хеширование, которое является односторонним процессом), если вы хотите зашифровать, а затем расшифровать ваши данные. OWASP Top 10 по небезопасному криптографическому хранилищу - хорошая отправная точка, чтобы узнать больше об этом.

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

...