Получите секретный ключ из более длинного секретного ключа - PullRequest
0 голосов
/ 07 июня 2018

Я использую предоставленный пользователем 32-байтовый секретный ключ для подписи некоторых данных с использованием HMAC-256.Я также хочу, чтобы мое приложение шифровало данные с помощью AES-192.Должен ли я запросить у пользователя другой секретный ключ (на этот раз размером 16 байт) или существует безопасный способ получения 16-байтового секретного ключа из другого 32-байтового ключа?Второй метод сделает настройку приложения немного проще.Любые рекомендации или советы?Или такой подход полная чушь?

1 Ответ

0 голосов
/ 07 июня 2018

Инструмент для этого - HKDF .Это очень хороший способ получить несколько ключей из одного исходного материала ключей.Я бы порекомендовал вам использовать HKDF для получения обоих ключей из исходного 32-байтового секрета, а не для получения ключа AES непосредственно из ключа HMAC.Обычно вы растягиваете свой 32-байтовый IKM до 48 байт, а затем разделяете его на два ключа.

Предполагается, что исходный материал 32-байтового ключа является случайным.Если это не так, вы должны использовать PBKDF2 (или другой расширитель паролей, такой как scrypt или bcrypt), чтобы растянуть материал ключа до 48 байт, а затем разделить его на два ключа.HKDF слишком быстрый алгоритм, чтобы использовать его с созданными человеком паролями.

...