2013-12-18 3 views
4

Сегодня я прочитал о AES ( dvanced E ncryption S tandard), и я задавал себе вопросы, которые у меня нет знаний, чтобы ответить на их сам.PHP AES шифрования паролей и хэшей

В Википедии я читал, что AES безопасен для использования даже для файлов Top Secret, и до сих пор никто не нашел способ взломать его. Действительно, некоторые попытки использовать атаки Side-chanel, но это не так, потому что он не атакует само шифрование.

В свете того, что я читал об этом, мне было интересно, следует ли использовать AES для шифрования паролей в моей БД? Я могу сохранить зашифрованный пароль или, скорее, использовать функцию hash() для шифрования AES-шифрования строки в базе данных, которая дает ей как-то «двухслойную» защиту. Я мог бы быть совершенно неправ здесь, мне просто интересно, в чем причина, почему это не так часто, когда дело доходит до хранения зашифрованных строк в БД. Я думаю, это потому, что есть метод дешифрования, но все же, чтобы расшифровать его, вам нужно будет знать, сколько раундов используется для шифрования кода.

Заранее благодарен!

+2

Почему бы не просто сохранить соленый хэш пароля? Какую возможную цель вы должны были бы получить, чтобы получить пароль в первую очередь? Если пользователь забудет пароль, просто попробуйте перезагрузить его. – Julio

+0

@Louis Это больше похоже на то, что я пытаюсь это понять. Если использование хэширования + шифрование может существенно улучшить безопасность. Кстати, зачем сохранять соль в БД? зачем даже использовать соль? если хакер взломает БД, он сможет увидеть соль в БД, которую он теперь может добавить к своим попыткам получить пароль – kfirba

+0

Этот вопрос может быть лучше подходит для безопасности .SE – Maerlyn

ответ

5

Должен ли я использовать AES для шифрования паролей в моей БД?

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

Я могу сохранить зашифрованный пароль, или, вернее, использовать хэш-функции() для шифрования AES шифрование строки в базе данных, которая дает ему как-то «двойной» слоистую защиту.

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

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

Я чувствую, что если бы зашифрованные хэши стоили того, это была бы стандартная практика, и это не так.

+0

Чтобы добавить к вашему ответу, лучший способ обеспечить «двухслойную» защиту - использовать случайную соль. –

+0

Да, единственным требованием соли является то, что она случайна. –

+0

Хорошо объяснил, спасибо большое! – kfirba

Смежные вопросы