Каковы технические требования для парольной фразы WPA-PSK?


8

Я думал о создании парольной фразы WPA-PSK, и я вижу в справочной странице OpenBSD для wpa-psk(8):

The passphrase must be a sequence of between 8 and 63
ASCII-encoded characters.

Что именно является критерием для «ASCII-кодирования» здесь? Просто они должны быть 8-битными символами с неустановленным старшим битом? Разрешены ли непечатные символы?

Если подумать об этом ... Имеет ли смысл мой подход случайной генерации ключевой фразы? Было бы лучше просто сгенерировать 64 случайных байта и использовать их в качестве ключа?

Ответы:


12

> Что именно является критерием для «ASCII-кодирования» здесь? Просто они должны быть 8-битными символами с неустановленным старшим битом? Разрешены ли непечатные символы?

Защищенный доступ Wi-Fi в Википедии гласит, что пароль WPA-PSK содержит от 8 до 63 печатаемых символов ASCII и включает эту ссылку в качестве сноски:

Каждый символ в парольной фразе должен иметь кодировку в диапазоне от 32 до 126 (десятичное число) включительно. (
Стандарт IEEE 802.11i-2004, Приложение H.4.1) В этот диапазон входит пробел.

> Если подумать ... Есть ли смысл в моем подходе к генерации парольной фразы? Было бы лучше просто сгенерировать 64 случайных байта и использовать их в качестве ключа?

> Я думаю, что я все еще буду генерировать 256 бит, используя безопасный RNG ...

Позволяет ли беспроводной маршрутизатор и каждое устройство, которое вы хотите подключить к беспроводной сети, вручную ввести ключ WPA-PSK в виде 64 шестнадцатеричных символов? Если нет, то вам, возможно, придется использовать кодовую фразу ASCII, чтобы иметь возможность вводить ее на всех ваших устройствах.


Из RFC2898, цитируемого @studiohack - В этом документе пароль считается строкой октетов произвольной длины, интерпретация которой как текстовой строки не указана. Однако в интересах совместимости рекомендуется, чтобы приложения следовали некоторым общим правилам кодирования текста. ASCII и UTF-8 [27] - две возможности. (ASCII является подмножеством UTF-8.)
asveikau

Также кажется, что OpenBSD, Linux, Windows и Mac OS X поддерживают использование шестнадцатеричных ключей. Единственная проблема, с которой я столкнулся, - это то, что пользовательскому интерфейсу Maemo он не нравится, но его поддерживает XML-файл, который поддерживает конфигурацию.
asveikau

Хорошо, я вижу ту часть 802.11i-2004, которая говорит это. Вы правы.
asveikau

1

От http://www.xs4all.nl/~rjoris/wpapsk.html - «Расчет ключа WPA - от парольной фразы до шестнадцатеричного ключа Подробности расчета»:

Для шифрования WPA-PSK двоичный ключ извлекается из ключевой фразы в соответствии со следующей формулой:

Функция PBKDF2 - это стандартизированный метод получения ключа из ключевой фразы. Это указано в RFC2898 с четким объяснением того, как его вычислять. Функция нуждается в базовой псевдослучайной функции. В случае WPA основной функцией является HMAC-SHA1. SHA1 - это функция, которая вычисляет 160-битный хэш из произвольного количества входных данных. Это ясно объяснено в RFC3174. HMAC - это стандартизированный метод превращения криптографической хеш-функции в функцию аутентификации сообщений с ключами. Это указано в RFC2104.

Подводя итог, можно сказать, что процесс получения ключа включает в себя итерацию функции HMAC-SHA1 4096 раз, а затем повторение, чтобы получить больше битов ключа. Объем вычислений эквивалентен вычислению хэша SHA1 для 1 МБ данных. Возможно, это объясняет, почему Javascript на этой странице такой медленный.

Что касается вашего вопроса: Does my approach of randomly generating a passphrase make any sense? Would it be better to just generate 64 random bytes and use that as a key?Любой из них будет очень сильным, если вы используете все виды символов, чисел и случайных символов алфавита в вашей парольной фразе случайных байтов. Как я на это смотрю: их обоих (сгенерированных или случайных) было бы невозможно угадать / взломать ...


1
Гектометр Таким образом, на основании моего прочтения RFC может показаться, что функция PBKDF2 не зависит от того, являются ли она печатными символами ASCII, и должна нормально работать с двоичными данными. Я думаю, что я все еще просто сгенерирую 256 битов, используя безопасный RNG ... (Я не настолько уверен, что было бы невозможно догадаться, хотя. Есть небольшие шансы, что это приведет к тому, что произойдет столкновение со слабым парольная фраза.: P)
asveikau
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.