EAP-PWD

What is Expansion of EAP‑PWD?

EAP‑PWD stands for Extensible Authentication Protocol – Password. It is an EAP method that uses a shared password for mutual authentication between a client (peer) and server (authenticator), designed to resist dictionary attacks.

What is EAP‑PWD?

EAP‑PWD is a method within the EAP framework that authenticates using only a password (no certificates required), while performing a password-authenticated key exchange (PAKE) so that even if the password is weak, the exchange is resistant to passive, active, and dictionary attacks.

Why is EAP‑PWD useful?

  • Provides mutual authentication while only using a shared password.

  • Resists dictionary attacks, including when passwords are low‑entropy.

  • Avoids need for certificates, simplifying deployment in some environments.

  • Derives secure session keys (MSK/EMSK) usable for subsequent encrypted communication.

How it works?

  • Client (“peer”) and server exchange identities and agree on parameters (ciphersuite, password processing method).

  • Commit exchange: both sides commit to random values and a “password element” (PWE) based on shared password, in a cryptographic group.

  • Confirm exchange: they exchange confirmation values proving knowledge of PWE and randomness, preventing man‑in‑the‑middle and replay attacks.

  • When confirmed, both derive the shared key material: Master Session Key (MSK) and Extended MSK (EMSK), etc.

Where is EAP‑PWD used?

  • Wi‑Fi networks with 802.1X / RADIUS / WPA‑Enterprise, especially when certificate infrastructure is unavailable or undesirable. :contentReference[oaicite:10]{index=10}

  • University or eduroam‑type networks. :contentReference[oaicite:11]{index=11}

  • Any PPP‑based or network access system requiring username/password mutual authentication. :contentReference[oaicite:12]{index=12}

Which OSI layer does this protocol belong to?

EAP‑PWD operates at the Application Layer (Layer 7) in the OSI model. It is part of the authentication framework, carried over lower layers like IEEE 802.11 (for Wi‑Fi) or PPP.

Is EAP‑PWD Windows specific?

No, EAP‑PWD is not Windows‑specific. It’s implemented in multiple platforms including Linux (hostapd, wpa_supplicant), Android, etc.

Is EAP‑PWD Linux Specific?

No, EAP‑PWD is supported on Linux, but it’s also supported on other OSes (e.g. Android). It’s not limited to Linux.

Which Transport Protocol is used by EAP‑PWD?

EAP‑PWD messages are carried over the EAP framework, which works over IEEE 802.1X in many cases for Wi‑Fi, and/or via RADIUS for backend. The transport between the client (peer) and authenticator is not TCP or UDP by itself but uses EAP over lower‑layer protocols; if RADIUS is used, that uses UDP.

Which Port is used by EAP‑PWD?

There is no EAP‑PWD‑specific port; when used via RADIUS, the port is typically UDP 1812 for authentication requests.

Is EAP‑PWD using Client‑server model?

Yes. EAP‑PWD uses a client-server model where the “peer” (client) communicates via an authenticator (often an AP) to a server (RADIUS or similar), exchanging messages to mutually authenticate and derive keys.

Does EAP‑PWD protocol use certificates?

No, EAP‑PWD does not require certificates. Authentication is based on shared password and cryptographic operations (PAKE).

How many frame exchanges are seen during connection for EAP‑PWD protocol?

EAP‑PWD typically involves three main message‑exchange phases (exchanges), aside from identity request/response:

  • Identity exchange

  • Commit exchange

  • Confirm exchange

  • If successful, then EAP‑Success is sent.

Does EAP‑PWD Protocol use client certificates?

No, client certificates are not used. The method relies only on the shared password and cryptographic group operations.

Does EAP‑PWD Protocol use Server Certificates?

No, server certificates are not required for EAP‑PWD itself. However, infrastructure (e.g. an AP or RADIUS server) might still use TLS or certificates for other parts (but not in EAP‑PWD method).

Does EAP‑PWD Protocol depend on TCP?

No, EAP‑PWD method itself does not depend on TCP. It operates within EAP messages over a lower layer (802.11, etc.). When RADIUS is used, the latter uses UDP.

Does EAP‑PWD Protocol depend on UDP?

Not inherently; only when the backend uses RADIUS (which is UDP). The EAP‑PWD method itself is transported via EAP over whatever lower layer is used.

What are the roles involved when testing EAP‑PWD Protocol?

  • Client (Peer): Initiates EAP request, participates in exchanges.

  • Server: Responds, verifies the exchanges, derives shared keys.

  • Authenticator / AP: Passes EAP messages between peer and server (if separated).

  • RADIUS (if used): Backend authentication server.

What is the RFC version used for EAP‑PWD Protocol?

EAP‑PWD is specified in RFC 5931 (EAP Authentication Using Only a Password). It is further updated/extended by RFC 8146 which adds support for salted password databases.

During Connection Procedure which EAP packets are encrypted?

The actual commit and confirm exchanges include cryptographic computations; while identity packets are not encrypted, the commit/confirm steps derive and verify secret values. The derived keys (MSK/EMSK) are used to provide confidentiality/integrity for further communication.

What is the final output of Connection Procedure?

The final output is successful mutual authentication and derivation of shared secret keys such as MSK (Master Session Key) and EMSK (Extended MSK), which are used for securing subsequent traffic.

What is the format of the key generated after the connection procedure?

The format of the keys is binary, of length dependent on chosen ciphersuite / group. The keys are generated using key derivation functions (KDF) specified in RFC 5931.

Where is the use of the MSK / EMSK generated by the connection procedure?

The MSK is used by the authenticator/RADIUS for session encryption and derivation of further keys (e.g. for 802.11i / WPA/WPA2) and EMSK for additional protection / extended uses.

  • In this section, you are going to learn

  • Terminology

  • Version Info

  • rfc details

  • Run AP mode operation with hostapd

AP : Download hostapd

Note

  • Make sure internet is available in laptop to download hostapd package

test:~$ wget http://w1.fi/releases/hostapd-2.9.tar.gz

AP: Install required packages

test:~$ sudo apt install libnl-genl-3-dev libnl-3-dev libdbus-glib-1-dev

AP : Extract hostapd

test:~$ tar -xzvf hostapd-2.9.tar.gz

AP : Change directory to hostapd

test:~$ cd hostapd-2.9/hostapd/

AP : Check the current working directory using pwd command

Note

  • Make sure your current working directory is hostapd

test:~$ pwd
/home/test/hostapd-2.9/hostapd

AP : Copy the contents of defconfig file to .config file

Note

  • .config file is required for make to start compilation of hostapd

test:~$ sudo cp defconfig .config

AP : Complile hostapd

Note

  • Compile hostapd by running make command

test:~$ make

AP : Check for the binaries created

Note

  • Make sure hostapd and hostapd_cli are present

test:~$ ls
hostapd
hostapd_cli

AP : Create a hostapd.conf file in /etc/hostapd folder with below content

test:~$ sudo vim /etc/hostapd/hostapd.conf

ctrl_interface=/var/run/hostapd
interface=enp0s8
driver=wired
logger_stdout=1
logger_stdout_level=1
ieee8021x=1
eap_server=1
eap_user_file=/etc/hostapd/hostapd.eap_user
eap_reauth_period=3600
auth_algs=1
macaddr_acl=0

AP : Create a file eap_user in /etc/hostapd/ folder with below content

test:~$ sudo vim /etc/hostapd/hostapd.eap_user

AP : Run hostapd

test:~$ sudo ./hostapd /etc/hostapd/hostapd.conf
enp0s8: interface state UNINITIALIZED->ENABLED
enp0s8: AP-ENABLED

STA : Download wpa_supplicant

Note

  • Make sure internet is available in laptop to download supplicant package

test:~$ wget https://w1.fi/releases/wpa_supplicant-2.9.tar.gz

STA: Install required packages

test:~$ sudo apt install libnl-genl-3-dev libnl-3-dev libdbus-glib-1-dev

STA : Extract wpa_supplicant

test:~$ tar -xvf wpa_supplicant-2.9.tar.gz

STA : Change directory to wpa_supplicant

test:~$ cd wpa_supplicant-2.9/wpa_supplicant/

STA : Check the current working directory using pwd command

Note

  • Make sure your current working directory is wpa_supplicant

test:~$ pwd
/home/test/wpa_supplicant-2.9/wpa_supplicant

STA : Copy the contents of defconfig file to .config file

Note

  • .config file is required for make to start compilation of supplicant

test:~$ cp defconfig .config

STA : Compile wpa_supplicant

Note

  • Compile supplicant by running make command.

test:~$ make

STA: You might get errors while make regarding openssl headers in that case install the openssl headers and then do make clean and then do make again.

test:~$ sudo apt install libssl-dev
test:~$ make clean
test:~$ make

STA : Check for the binaries created

Note

  • Make sure wpa_supplicant and wpa_cli are present

test:~$ ls
wpa_supplicant
wpa_cli

STA: Copy required certificates from hostapd to wpa_supplicant

STA : Create wpa_supplicant.conf

test:~$ sudo vim wpa_supplicant.conf

ctrl_interface=/run/wpa_supplicant
update_config=1
network={
key_mgmt=WPA-EAP
eap=PWD
identity="user7"
password="abc@123"
}

STA : Run wpa_supplicant

test:~$ sudo ./wpa_supplicant -D wired -i enp0s8 -c wpa_supplicant.conf
enp0s8: CTRL-EVENT-EAP-SUCCESS EAP authentication completed successfully

STA: Test

test:sudo ./wpa_cli -i enp0s8
> status
  • setup

  • setup

  • packet details

  • usecases

  • features

  • Reference links