Проще говоря, алгоритм хеширования пароля $pH$ берет соль $соль$ и ввел пароль $pwd$ и вычисляет $h' = pH(соль,pwd)$ и проверить $ч$ с хешем текущего сохраненного пароля $ч$, $h \overset{?}{=} ч'$.
введет ли меня неправильный пароль, который просто хэширует к тому же?
Если вы введете произвольный пароль, он может иметь незначительное изменение, чтобы иметь тот же хэш пароля с солью. Если это произойдет, это действительно, и вы можете войти в систему.
Я не буду называть это неверным паролем, скорее назову еще один прообраз для $ч$. Помимо грубой силы (и радужных таблиц, где соль препятствует этому), это атака, которую необходимо выполнить злоумышленникам. Эта атака на самом деле является атакой предварительного изображения;
- Учитывая хэш-значение $ч$ найти и ввести такие $м$ что $ч = хэш(м)$. Общая стоимость этой атаки составляет $\mathcal{O}(2^n)$ за $n$-битные хеш-функции (хеширование пароля или криптографические хэш-функции)
Самым слабым местом при взломе паролей является человеческий фактор. Люди как правило, имеют слабые пароли и в настоящее время одним из хороших методов является игральная кость. Используйте dicewire, чтобы сгенерировать свой пароль, или лучше используйте менеджер паролей, где они генерируют действительно случайные пароли, и вы храните свою базу паролей с вашим надежным паролем, сгенерированным dicewire.
но как это работает для предотвращения взаимозаменяемого использования конфликтующих паролей?
Вы не можете предотвратить это, оно существует принцип сортировки. Скорее, алгоритм хеширования паролей по своей конструкции защищен от него, даже если вы использовали просто MD5. MD5 по-прежнему защищен от атак с предварительным образом, у вас будет ~ 128-битная устойчивость к предварительному образу. Конечно, нужно использовать современные алгоритмы хэширования, такие как Argon2.
другими словами, являются ли эти приемы причиной того, что неверный пас не пускает вас, или он все равно не работает?
Вот как это работает, это всегда будет работать. Имейте в виду, что у вас будет вероятность $\dfrac{1}{2^{128}}$ для случайного одиночного пароля, который соответствует хэшу вашего пароля (при условии 128-битного вывода). Если вероятность события $\geq \dfrac{1}{2^{100}}$ мы просто говорим, что это-не-случится.
Даже если вы этого опасаетесь, используйте двухфакторную аутентификацию, и ее действительно следует использовать при любой возможности.
Дополнительное примечание: обнаружение коллизии не имеет значения при хешировании паролей с точки зрения атаки столкновений, когда вам нужно только найти два произвольных входа $а$ и $b$ такой, что $ хеш (а) = хеш (б) $. При хешировании паролей злоумышленник имеет хэш и пытается найти тот, который производит такой же хеш.