Сейчас я использую 128, это достаточно безопасно?
dnssec-keygen -a hmac-md5 -b 128 -n host foobar.com
Также я не уверен, что "host" - правильное значение для -n
арг. Я считаю, что последний аргумент «foobar.com» предназначен только для имени файла, верно?
HMAC-XXX ограничен количеством битов. Если вы используете HMAC-MD5 и решили использовать более 128 бит реальных случайных данных (сгенерированных с помощью командной строки вашего примера), они будут потрачены впустую. Первое, что сделает HMAC, это если ключ длиннее, чем длина хеш-функции (MD5 в вашем случае), он сначала будет прогоняться через хеш, который вернет 128 бит.
Если ваш пароль представляет собой текст ASCII, например, набранный пароль, то, возможно, будет полезно использовать более длинный пароль, но для вашего использования 128 - это максимум, который вам понадобится.
BIND также поддерживает другие функции HMAC: HMAC-SHA1, HMAC-SHA256 и HMAC-512. Для SHA1 максимальная полезная длина составляет 160 бит, для SHA256 и SHA512 - 256 и 512 бит.
Обратите внимание, что для всех практических целей с HMAC, вероятно, достаточно MD5.
Я также считаю, что ваша командная строка верна.