EAP-EKE

What is Expansion of EAP‑EKE?

EAP‑EKE stands for Extensible Authentication Protocol – Encrypted Key Exchange. It is an EAP method based on the Encrypted Key Exchange (EKE) protocol, enabling mutual authentication and key exchange using a shared password.

What is EAP‑EKE?

EAP‑EKE is an EAP authentication method that performs a password-authenticated key exchange (PAKE), providing mutual authentication using a short, human-memorable password without relying on certificates.

Why is EAP‑EKE useful?

  • Enables mutual authentication using only a shared password.

  • Resistant to dictionary attacks, even with weak passwords.

  • Does not require public-key certificates, simplifying deployments.

How it works?

  • Identity exchange: Peer and server exchange identities and negotiate cryptographic algorithms.

  • Commit exchange: Each side generates ephemeral values and exchanges encrypted commitments based on the shared password.

  • Confirm exchange: Both parties prove knowledge of the password and liveness, then derive a shared secret.

Where is EAP‑EKE used?

  • In Wi‑Fi (802.1X / WPA‑Enterprise) environments where password-based mutual authentication is needed and certificate infrastructure is not available.

  • In networks using RADIUS for centralized authentication.

Which OSI layer does this protocol belong to?

EAP‑EKE operates at the Application Layer (Layer 7), although it is transported via the EAP framework over lower-layer protocols such as 802.1X or RADIUS.

Is EAP‑EKE Windows specific?

No. EAP‑EKE is not Windows-specific. It is a general EAP method, though support depends on platform and supplicant implementations.

Is EAP‑EKE Linux specific?

No. It is not Linux-specific, although implementations like hostapd and wpa_supplicant can provide support on Linux systems.

Which Transport Protocol is used by EAP‑EKE?

EAP‑EKE uses the EAP framework (RFC 3748), typically carried over IEEE 802.1X EAPOL for Wi‑Fi, and RADIUS (via UDP) in the backend.

Which Port is used by EAP‑EKE?

There is no dedicated port for EAP‑EKE. When used with RADIUS, UDP port 1812 is used for authentication messages.

Is EAP‑EKE using Client‑server model?

Yes. It follows a client-server model: the client (peer) and the server mutually authenticate via commits and confirms, with the authenticator (like an AP) forwarding messages to the backend.

Does EAP‑EKE protocol use certificates?

No. EAP‑EKE does not use certificates for authentication. It leverages password-based cryptographic exchanges instead.

How many message exchanges happen during EAP‑EKE authentication?

There are typically three main message exchanges (plus identity exchange): * Identity exchange * Commit exchange * Confirm exchange If successful, it ends with an EAP Success message.

What is the final output of the connection procedure?

Establishment of mutual authentication and derivation of a shared key (e.g., MSK) used for securing subsequent communication.

What cryptographic primitives are used?

  • Uses Diffie-Hellman groups for ephemeral key exchanges.

  • Uses a pseudo-random function (PRF) built on HMAC-SHA1 or HMAC-SHA256.

  • Encryption (e.g., AES‑128‑CBC) and integrity protection (MAC) are used for certain fields.

  • 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=EKE
identity="user6"
password="123456"
}

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