Каким должен быть тип данных для хэшированного значения пароля, зашифрованного с использованием PBKDF2?
Я пытаюсь научиться использовать хеш-функции PBKDF2 для хранения паролей в базе данных. У меня есть черновой вариант процедуры, который я буду использовать для создания хешированной функции. Но пока я создаю таблицу в PL/SQL Developer, которая будет содержать сгенерированный хешированный пароль, что я должен объявить тип данных для зашифрованной переменной пароля?
Это может быть глупый вопрос, но я пытаюсь учиться онлайн. Было бы очень полезно, если бы я мог получить ссылки для дальнейшего изучения. благодарю вас. пожалуйста помоги
1 ответ
Первая ссылка, как всегда, - это канонический ответ Томаса Порнина на вопрос "Как надежно хэшировать пароли".
Хранение в базе данных
Хэш может быть сохранен в формате BINARY для наименьших преобразований и наименьшего количества байтов; см. размеры ниже.
Кроме того, сохраните его в CHAR после преобразования в hex, что стоит преобразования и удвоить байты размера BINARY.
В качестве альтернативы, сохраните его в CHAR после преобразования в Base64, что стоит преобразование и 4/3rds количество байтов размера BINARY плюс заполнение
то есть PBKDF2-HMAC-SHA-512, где используются все 64 байта вывода, будет
Двоичный (64) как двоичный
CHAR(128) в шестнадцатеричном виде
CHAR(88) как Base64
Количество итераций должно быть сохранено в INT, чтобы его можно было тривиально увеличить позже.
Соль, которая должна представлять собой криптографически случайное значение для каждого пользователя, может храниться в двоичном формате для наименьшего числа байтов и должна иметь длину не менее 12, а предпочтительно 16-24 байта.
т.е. для 16-байтовой двоичной соли
BINARY(16) как двоичный файл
CHAR(32) в шестнадцатеричном виде
CHAR(24) как Base64
Опционально версия алгоритма хеширования пароля в виде небольшого типа INT
- т. е. 1 для PBKDF2-HMAC-SHA-512, а затем позже, если вы перейдете на BCrypt, 2 для BCrypt и т. д.
Нормальные соображения PBKDF2
Подумайте об использовании PBKDF2-HMAC-SHA-512, поскольку SHA-512, в частности, имеет 64-битные операции, которые уменьшают преимущество, которое большинство злоумышленников на основе графических процессоров имеют по сравнению с вами в начале 2016 года.
Используйте высокую (сотни тысяч или десятки тысяч) итераций.
Не запрашивайте большее количество выходных байтов PBKDF2, чем поддерживает встроенная хеш-функция
SHA-512 <= 64 байта
SHA-384 <= 48 байтов
SHA-256 <= 32 байта
SHA-224 <= 28 байтов
MD5 <= 20 байт