хранение пароля в таблицах django и Rainbow

В документах django говорится, что django создает пароль в виде строки algo$hash

где algo по умолчанию равен pbkdf2, а hash — это sha256 хэш строки пароля.

В некоторых статьях я прочитал, что безопасный пароль создается с использованием случайного salt, который затем сохраняется в базу данных для каждого пользователя. Это затрудняет работу злоумышленника, который пытается взломать пароль с помощью rainbow tables. Но когда я проверил таблицу auth_user для своего проекта django, я смог найти только одну строку, которая начинается с 'pbkdf2_sha256$' для каждого пользователя. не мог найти никакой сохраненной соли.

Означает ли это, что сохраненный пароль уязвим для атаки с использованием таблицы raibow?


person damon    schedule 22.02.2013    source источник
comment
Как выглядит ваша единственная строка? У меня есть что-то вроде 'pbkdf2_sha256$10000$GDDpkxbrqR4j$DnpLSj4P91ylVfYvtWFs69cdhJiSnLP1G1rw9m4CLCY=', которое содержит солевую часть "GDDpkxbrqR4j", по умолчанию алгоритм pbkdf2_sha256.   -  person okm    schedule 22.02.2013
comment
хорошо, мой тоже начинается с pbkdf2_sha256$, но почему соль не хранится в базе данных?   -  person damon    schedule 22.02.2013


Ответы (1)


В документации Django прямо указано, что пароли хэшируются с солью здесь и здесь:

Атрибут пароля объекта User представляет собой строку в следующем формате:

хэш-тип $ соль $ хэш

Это хэш-тип, соль и хэш, разделенные знаком доллара.

Hashtype — либо sha1 (по умолчанию), либо md5, либо crypt — алгоритм, используемый для выполнения одностороннего хеширования пароля. Salt — это случайная строка, используемая для добавления соли к необработанному паролю для создания хэша. Обратите внимание, что метод шифрования поддерживается только на платформах, на которых доступен стандартный модуль шифрования Python.

так что будет 2 знака доллара, а между ними соль.

person almalki    schedule 22.02.2013