Запрос, связанный с моим шифрованием
Поэтому у меня есть система входа в систему, и я использовал некоторые меры безопасности, чтобы сделать ее безопасной. Во-первых, я солю свои пароли:
$salt = openssl_random_pseudo_bytes(1024);
file_put_contents("salt.txt", $salt);
Далее я хэширую его, используя алгоритм джакузи:
function myhash($password){
$salt = file_get_contents("private/salt.txt");
$password = hash_hmac('whirlpool',$password,$salt);
return $password;
}
Это пример пароля, который будет возвращен и сохранен в базе данных:
56a8cf545750eec78cb58582829636b1e0378cf0fff4982305a7171f06593fb92735d3576f0ad7ba8aec40c914abc38424885cb7ac2672b1d8da36e3b95c80ce
Теперь мой вопрос: если хакер сможет восстановить эту длинную строку, указанную выше, сможет ли он каким-то образом перевернуть / расшифровать ее, чтобы вернуть действительный пароль. Дайте мне знать, что вы, ребята, думаете / знаете, это невозможно?
Люди не могут предлагать мне другие вещи, поэтому держите ответы, строго связанные с одним вопросом.
2 ответа
Краткий ответ "НЕТ". Whirlpool - довольно сильный алгоритм хеширования (не алгоритм шифрования, поскольку шифрование предполагает способность дешифровать каким-либо образом). Соль (общий ключ AKA) только делает еще сильнее. Но наличие одной соли для всех не делает ее намного слабее, но позволяет выяснить, кто имеет такой же пароль (не зная самого пароля).
Лучшее использование соли заключается в том, что она генерируется случайным образом перед использованием в хэш-функции (и для нее не требуется 1024 байта - 8 байт более чем достаточно для соли), а затем добавляется к результирующему хешу. Таким образом, функция, которая будет проверять пароль, знает, какую соль нужно использовать и какой хеш ожидается.
Алгоритм Whirlpool не имеет известных недостатков и использует 512 бит. Поэтому это считается безопасным. Однако у меня лично есть два отрицательных взгляда на это:
- Он претерпел две модификации с момента своего создания в 2000 году
- Он менее используется, чем другие алгоритмы (а именно SHA512).
Поэтому я считаю, что с вашим кодом все в порядке, и он совершенно безопасен. Но вам может быть лучше перейти на SHA512.
Единственный способ восстановить пароль из этой длинной строки - это грубой силой в течение ОЧЕНЬ ДОЛГОГО ВРЕМЕНИ (если пароль надежен) или может быть использована какая-то технология от АНБ:)
Похоже, что одной из областей атаки является то, что два одинаковых пароля приводят к одной и той же строке, потому что вы используете одну и ту же соль для всех.
Поэтому, ничего не расшифровывая, они уже могут сказать, у кого тот же пароль. Это, вероятно, указывает на слабые пароли, и они могут начать перебор там.