Соль должна быть уникальной. Соль предназначена для предотвращения разделения затрат на атаку, то есть злоумышленник пытается атаковать два хешированных пароля менее чем вдвое дороже, чем атака одного.
Одним из решений для обеспечения уникальности является генерирование случайной соли в достаточно широком пространстве. Поэтому получить дважды одинаковую соль для двух разных экземпляров пароля достаточно маловероятно, чтобы на практике этого не произошло.
Имя пользователя не соответственно уникально:
- Имя пользователя не меняется, когда пользователь меняет свой пароль. Злоумышленник, увидев старый хешированный пароль и новый хешированный пароль, может атаковать как по стоимости, вдвое превышающей стоимость атаки одного.
- В данный момент имена пользователей уникальны для всей системы, а не для всего мира. Существует множество «bob» (в системе Unix рассмотрим «root»). Использование имени пользователя может позволить атакующему атаковать несколько систем одновременно.
Энтропия соли на самом деле не важна, за исключением того, что она обеспечивает уникальность при случайной генерации.