Должен ли я зашифровать свой пароль после его хеширования?Если да, то как правильно это сделать? - PullRequest
0 голосов
/ 18 декабря 2018

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

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

Теперь предположим, что я хочу защитить нового зарегистрированного пользователя ..

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

    $safePassword; // Already filled with safe password. $hash = password_hash($safePassword,PASSWORD_ARGON2I);

  3. Затем вставьте его в базу данных.

Теперь здесь возникают вопросы.

  1. Нужно ли мне шифровать хешированный пароль?

  2. Если это так, как мне безопасно зашифровать пароль?(Я собираюсь использовать AES)

AES_ENCRYPT(str, key_str);

Где str - это строка, которую мы хотели зашифровать, а key_str - это ключ шифрования.

Еще один вопрос возникает

Как сохранить key_str в безопасности, чтобы я мог использовать его для дальнейшего использования (для аутентификации)?

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Теперь предположим, что я хочу защитить нового зарегистрированного пользователя ..

  1. Сначала мне нужно его отфильтровать.(Пропущено из-за несвязанных)

Если под «фильтром» вы подразумеваете как-то изменить этот пароль .... нет! Мало того, что вам не нужно делатьэто то, что вы на самом деле причиняете себе настоящую головную боль в будущем и снижаете безопасность пароля.

Теперь это то, где возникают вопросы.

  1. Нужно ли мне шифровать хешированный пароль?

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

Ничего не получено, зашифровав этот хеш.

Другой вопрос встает

Как сохранить key_str в безопасности, чтобы я мог использовать его для дальнейшего использования (для аутентификации)?

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

0 голосов
/ 18 декабря 2018

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

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

Придерживайтесь только Argon2, ничего более ненужного.

...