
wpa_passphrase
создает информацию для входа в сеть wpa_supplicant.conf
.
wpa_supplicant
принимает опцию -e
сохранения энтропии между перезапусками.
Я понимаю, что внутренне сохраненная энтропия — это способ сделать связи болеебезопасный, поскольку злоумышленнику сложно его правильно угадать.
Эта опция -e
отлично работает, когда я вызываю ее вручную wpa_supplicant
, но Raspberry Pi вызывает wpa_supplicant
службу уже при запуске, а я хотел бы это сохранить.
- Где находится хранилище энтропии по умолчанию на Raspbian GNU/Linux 11?
- Где в RPi я могу настроить это местоположение для
wpa_supplicant
сервиса? - Могу ли я сделать это в
/etc/wpa_supplicant/wpa_supplicant.conf
?
решение1
wpa_passphrase создает информацию для входа в сеть для wpa_supplicant.conf. wpa_supplicant принимает опцию -e для сохранения энтропии между перезапусками.
Эти два параметра не имеют ничего общего друг с другом. Информация, хранящаяся в wpa_supplicant.conf, является детерминированной – параметр "psk=" – это просто хэш PBKDF2 вашей парольной фразы и сетевого SSID.
Энтропия (случайные данные) понадобится позже – во время каждого рукопожатия аутентификации, где оба
Я понимаю, что внутренняя энтропия позволяет сделать соединения более безопасными, поскольку злоумышленнику сложно ее правильно угадать.
Да, но в этой истории есть нечто большее.
В большинстве систем Linux программы могут простоспросите ОСдля высококачественных случайных данных, например, путем чтения из виртуального устройства /dev/[u]random или с помощью системного вызова getentropy(). Причина, по которой wpa_supplicant имеет собственное внутреннее хранилище, более конкретна, как описано ниже.
Где находится хранилище энтропии по умолчанию на Raspbian GNU/Linux 11?
Функция случайных данных, предоставляемая ОС, по умолчанию не имеет постоянного «хранилища энтропии» — пул энтропии инициализируется заново при каждой загрузке, используя данные из различных аппаратных источников.
Но проблема возникает, когда у аппаратной платформы нет хороших источников для сбора энтропии (например, у Raspberry Pi нет часов реального времени; многие точки доступа на базе Linux представляют собой крошечные SoC с небольшим количеством внешних входов), и в этом случае инициализация пула энтропии может занятьдлинныйвремя. Некоторые дистрибутивы Linux добавляют для этой цели общесистемный файл «хранилища энтропии» (обычно где-то в /var/lib), что позволяет программам продолжать использовать /dev/[u]random в таких системах.
(Это было особенно актуально в старых версиях Linux, где /dev/random и /dev/urandom работали по-разному — чтение из первого быстро истощало «пул энтропии» ОС, заставляя программы ждать, в то время как второе могло предоставлять случайные данные низкого качества, если считывалось слишком рано.)
Таким образом, внутренний пул энтропии wpa_supplicant и параметры «файла энтропии» предназначены специально для использования в системах, которыенеиметь функционирующий пул энтропии для всей ОС, например, дешевые SoC на базе MIPS. (wpa_supplicant взят из проекта «hostapd», который используется для создания точек доступа.) Обычно вам не нужно использовать эту -e
опцию в обычных системах Linux.
Кроме того, если вы используете на своем Raspberry Pi дистрибутив Linux на основе systemd, он уже использует /var/lib/systemd/random-seed для инициализации пула энтропии ОС при запуске (и, вероятно, он также использует последнее ядро с улучшениями в сборе энтропии).
Где в RPi я могу настроить это местоположение для службы wpa_supplicant?
Вы настраиваете параметрывслужба wpa_supplicant.
Если вы используете Linux с systemd, используйте systemctl cat
для просмотра определения сервиса; ExecStart=
в частности, строки. В зависимости от дистрибутива есть два варианта:
Иногда настроенная командная строка будет включать переменную, такую как
$WPA_ARGS
. Она берется из файла, указанного в настройке EnvironmentFile= в том же определении службы (обычно расположенном в /etc/default/ или /etc/sysconfig/), поэтому отредактируйте этот файл и запуститеsystemctl daemon-reload
.Иногда это не так, и все параметры определяются непосредственно в параметре ExecStart=. В этом случае запустите,
systemctl edit --full wpa_supplicant
чтобы редактировать его напрямую – ваш настроенный файл службы будет сохранен в /etc/systemd/system/, чтобы переопределить файл дистрибутива.