Есть ли какие-либо недостатки наследования с этим алгоритмом?
Он не открыт для радужных атак (из-за случайной соли).Sha512 - довольно новый алгоритм, но в настоящее время нет известных коллизий, поэтому он, вероятно, довольно безопасен.Ваш пароль хранится хорошо.Кроме того, важен процесс проверки (ограничение скорости атак грубой силы) и блокирование серверов от атак с других сторон, которые могут попытаться получить доступ к базе данных.Если злоумышленник сможет получить доступ к базе данных, он, вероятно, сможет довольно быстро извлечь простые пароли, но любой сложный пароль, вероятно, выйдет за рамки простой атаки грубой силы (даже если у него будет прямой доступ к хэшам).
Можно ли хранить соль в той же базе данных и таблице, что и хэш соли + пароля?
Вы должны хранить их вместе, если хотите иметь возможность проверитьпароли (я полагаю, вы хотите).Основная причина засолки пароля - исключить возможность радужной атаки.Часто эти данные даже хранятся в том же столбце, что и хешированный пароль, с использованием символа для их разделения.
Будет ли большой пароль длиной 128 символов вызывать проблемы с производительностью входа (с точностью до нескольких секунд), еслиУ меня в таблице несколько сотен тысяч пользователей?
Ориентир: сколько времени (в секундах) требуется для проверки пароля (hash('sha512', $salt.$password_attempt )
).Найдите обратное значение этого числа, и это, вероятно, близко к тому, сколько попыток ввода пароля вы можете обработать в секунду на ядро ЦП.
Можно ли перевернуть эти данные для получения исходного пароля?
Да, но это потребует много усилий, так как использование случайной соли, радужных таблиц больше не будет работать, а sha512 требует изрядного количества процессора для запуска и не имеет известных коллизий.Если бы пароль был достаточно простым, его можно было бы угадать.Если вы беспокоитесь о том, чтобы поменять хэши, было бы неплохо установить низкую границу сложности пароля (проверяя его по словарю, содержит ли он верхние / нижние / цифры / символы).