Хранение паролей PHP с HMAC + nonce - Важна ли случайность nonce?

Несколько лет я спрашивал здесь, в stackoverflow, о том, как сделать хранение паролей PHP безопасным. Основной ответ предполагает использование следующего алгоритма хеширования:

function hash_password($password, $nonce) {
  global $site_key;
  return hash_hmac('sha512', $password . $nonce, $site_key);
}

Ответ предлагает использовать случайный одноразовый номер. Есть ли какое-либо преимущество в наличии случайного одноразового номера перед простыми уникальными одноразовыми номерами?

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

Теперь каждый пользователь может выбрать имя пользователя. У каждого пользователя есть собственное имя пользователя, которое не меняется, и два разных пользователя не могут иметь одно и то же имя пользователя. Имена пользователей по-прежнему не случайны, но и не являются последовательными. Подойдут ли имена пользователей в качестве одноразового использования? Было бы лучше, чем использовать идентификатор пользователя?

6
задан Community 23 May 2017 в 10:33
поделиться