Каким должен быть тип данных для хэшированного значения пароля, зашифрованного с использованием 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 байт

Другие вопросы по тегам