WLAN:如何在 wpa_supplicant.conf 中配置熵文件

WLAN:如何在 wpa_supplicant.conf 中配置熵文件

wpa_passphrase为创建网络登录信息wpa_supplicant.confwpa_supplicant选择-e在重启时存储熵。

我理解内部存储的熵是使连接更加安全的,因为攻击者很难正确猜出它。

-e当我手动调用时,该选项可以很好地工作wpa_supplicant,但是 Raspberry Piwpa_supplicant在启动时已经调用该服务,因此我想保留这个选项。

  • RasPi(运行 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=”参数严格来说只是您的密码和网络 SSID 的 PBKDF2 哈希值。

每次身份验证握手时都需要用到熵(随机数据),

我理解内部存储的熵是一种使连接更安全的方法,因为攻击者很难正确猜出它。

是的,但故事还远不止于此。

在大多数 Linux 系统中,程序可以询问操作系统获得高质量随机数据,例如通过从 /dev/[u]random 虚拟设备读取或使用 getentropy() 系统调用。wpa_supplicant 拥有自己的内部存储的原因更为具体,如下所述。

RasPi(运行 Raspbian GNU/Linux 11)上的默认熵存储在哪里?

操作系统提供的随机数据功能默认没有永久的“熵存储”——每次启动时都会使用来自各种硬件源的数据重新初始化熵池。

但问题在于,当硬件平台没有任何好的来源来收集熵时(例如,Raspberry Pi 没有实时时钟;许多基于 Linux 的接入点都是微型 SoC,只有很少的外部输入),在这种情况下,熵池初始化可能需要长的时间。一些 Linux 发行版为此目的添加了一个操作系统范围的“熵存储”文件(通常位于 /var/lib 中的某个位置),从而允许程序在此类系统上继续使用 /dev/[u]random。

(这在旧版 Linux 中尤其成问题,因为 /dev/random 和 /dev/urandom 的工作方式不同——前者读取会很快耗尽操作系统的“熵池”,迫使程序等待,而后者如果读取过早则会提供低质量的随机数据。)

因此,wpa_supplicant 的内部熵池和“熵文件”选项专门用于以下系统:不要拥有一个功能齐全的操作系统范围的熵池,例如廉价的基于 MIPS 的 SoC。(wpa_supplicant 来自用于构建接入点的“hostapd”项目。)您通常不需要-e在常规 Linux 系统上使用该选项。

此外,如果您在 Raspberry Pi 上运行基于 systemd 的 Linux 发行版,它已经使用 /var/lib/systemd/random-seed 来帮助启动时初始化 OS 熵池(并且它可能运行最新的内核,并对熵收集进行了改进)。

我可以在 RPi 的哪里为 wpa_supplicant 服务配置该位置?

您配置选项wpa_supplicant 服务。

如果您运行的是带有 systemd 的 Linux,请使用systemctl cat它来查看服务定义;ExecStart=特别是该行。根据发行版,有两个选项:

  • 有时配置的命令行将包含一个变量,例如$WPA_ARGS。它来自同一服务定义中的 EnvironmentFile= 设置中指定的文件(通常位于 /etc/default/ 或 /etc/sysconfig/),因此请编辑该文件并运行systemctl daemon-reload

  • 有时并非如此,所有选项都直接在 ExecStart= 参数中定义。在这种情况下,运行systemctl edit --full wpa_supplicant以直接编辑它 - 您的自定义服务文件将存储在 /etc/systemd/system/ 中以覆盖分发文件。

相关内容