Рейтинг:0

Выбор параметров для PBKDF2 с помощью SHA3

флаг cn

Я использую PBKDF2 для создания ключа подписи ED448 и пытаюсь определить оптимальный размер соли для SHA-3. Я помню, как читал рекомендацию использовать размер соли, равный размеру блока внутреннего состояния PRF, для PBKDF2. Насколько я понимаю, Keccak/SHA-3 не использует блоки так, как это делают хэши SHA/MD. Итак, как мне выбрать или рассчитать длину соли на основе параметров Кекчака? Следует ли увеличить число итераций, поскольку Keccak работает быстрее, чем SHA2?

Текущий код:

const uint32_t SaltLen = 64; // что здесь выбрать?
const uint32_t PBKDFIterations = 10000;
uint8_t Соль[SaltLen];
uint8_t SigningKeyBytes[ED448_KEYLEN];
RAND_bytes(Соль, sizeof(Соль));
PKCS5_PBKDF2_HMAC (Пароль, Длина пароля, Salt, SaltLen, PBKDFIterations, EVP_sha3_512(), sizeof (SigningKeyBytes), SigningKeyBytes);

Я видел существующий вопрос от 2015 года об использовании SHA-3 в PBKDF2, однако этому вопросу почти 7 лет, и я ожидаю, что с тех пор рекомендации изменились.

Рейтинг:1
флаг vu

Для целей этого поста давайте определим размер блока итерируемой хеш-функции следующим образом:

количество данных, которые при подаче на алгоритм хэширования вызовут итерирующую функцию (функция сжатия для MD и перестановка для Sponge).

Имея это в виду, размер блока SHA-3 и SHAKE-* будет их параметром «скорости».

Теперь вернемся к соли. Обычно 128-битных (16-байтовых) солей было бы достаточно (для предотвращения атак с предварительным вычислением, таких как атака с радужными таблицами), 256-битных было бы достаточно. Связанный пост на Переполнение стека

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.