123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- hostapd and Wi-Fi Protected Setup (WPS)
- =======================================
- This document describes how the WPS implementation in hostapd can be
- configured and how an external component on an AP (e.g., web UI) is
- used to enable enrollment of client devices.
- Introduction to WPS
- -------------------
- Wi-Fi Protected Setup (WPS) is a mechanism for easy configuration of a
- wireless network. It allows automated generation of random keys (WPA
- passphrase/PSK) and configuration of an access point and client
- devices. WPS includes number of methods for setting up connections
- with PIN method and push-button configuration (PBC) being the most
- commonly deployed options.
- While WPS can enable more home networks to use encryption in the
- wireless network, it should be noted that the use of the PIN and
- especially PBC mechanisms for authenticating the initial key setup is
- not very secure. As such, use of WPS may not be suitable for
- environments that require secure network access without chance for
- allowing outsiders to gain access during the setup phase.
- WPS uses following terms to describe the entities participating in the
- network setup:
- - access point: the WLAN access point
- - Registrar: a device that control a network and can authorize
- addition of new devices); this may be either in the AP ("internal
- Registrar") or in an external device, e.g., a laptop, ("external
- Registrar")
- - Enrollee: a device that is being authorized to use the network
- It should also be noted that the AP and a client device may change
- roles (i.e., AP acts as an Enrollee and client device as a Registrar)
- when WPS is used to configure the access point.
- More information about WPS is available from Wi-Fi Alliance:
- http://www.wi-fi.org/wifi-protected-setup
- hostapd implementation
- ----------------------
- hostapd includes an optional WPS component that can be used as an
- internal WPS Registrar to manage addition of new WPS enabled clients
- to the network. In addition, WPS Enrollee functionality in hostapd can
- be used to allow external WPS Registrars to configure the access
- point, e.g., for initial network setup. The current version of hostapd
- does not support use of external WPS Registrars for adding new client
- devices.
- hostapd configuration
- ---------------------
- WPS is an optional component that needs to be enabled in hostapd build
- configuration (.config). Here is an example configuration that
- includes WPS support and uses madwifi driver interface:
- CONFIG_DRIVER_MADWIFI=y
- CFLAGS += -I/usr/src/madwifi-0.9.3
- CONFIG_EAP=y
- CONFIG_WPS=y
- Following section shows an example runtime configuration
- (hostapd.conf) that enables WPS:
- # Configure the driver and network interface
- driver=madwifi
- interface=ath0
- # WPA2-Personal configuration for the AP
- ssid=wps-test
- wpa=2
- wpa_key_mgmt=WPA-PSK
- wpa_pairwise=CCMP
- # Default WPA passphrase for legacy (non-WPS) clients
- wpa_passphrase=12345678
- # Enable random per-device PSK generation for WPS clients
- # Please note that the file has to exists for hostapd to start (i.e., create an
- # empty file as a starting point).
- wpa_psk_file=/etc/hostapd.psk
- # Enable control interface for PBC/PIN entry
- ctrl_interface=/var/run/hostapd
- # Enable internal EAP server for EAP-WSC (part of Wi-Fi Protected Setup)
- eap_server=1
- # WPS configuration (AP configured, do not allow external WPS Registrars)
- wps_state=2
- ap_setup_locked=1
- # If UUID is not configured, it will be generated based on local MAC address.
- uuid=87654321-9abc-def0-1234-56789abc0000
- wps_pin_requests=/var/run/hostapd.pin-req
- device_name=Wireless AP
- manufacturer=Company
- model_name=WAP
- model_number=123
- serial_number=12345
- device_type=6-0050F204-1
- os_version=01020300
- config_methods=label display push_button keypad
- External operations
- -------------------
- WPS requires either a device PIN code (usually, 8-digit number) or a
- pushbutton event (for PBC) to allow a new WPS Enrollee to join the
- network. hostapd uses the control interface as an input channel for
- these events.
- When a client device (WPS Enrollee) connects to hostapd (WPS
- Registrar) in order to start PIN mode negotiation for WPS, an
- identifier (Enrollee UUID) is sent. hostapd will need to be configured
- with a device password (PIN) for this Enrollee. This is an operation
- that requires user interaction (assuming there are no pre-configured
- PINs on the AP for a set of Enrollee).
- The PIN request with information about the device is appended to the
- wps_pin_requests file (/var/run/hostapd.pin-req in this example). In
- addition, hostapd control interface event is sent as a notification of
- a new device. The AP could use, e.g., a web UI for showing active
- Enrollees to the user and request a PIN for an Enrollee.
- The PIN request file has one line for every Enrollee that connected to
- the AP, but for which there was no PIN. Following information is
- provided for each Enrollee (separated with tabulators):
- - timestamp (seconds from 1970-01-01)
- - Enrollee UUID
- - MAC address
- - Device name
- - Manufacturer
- - Model Name
- - Model Number
- - Serial Number
- - Device category
- Example line in the /var/run/hostapd.pin-req file:
- 1200188391 53b63a98-d29e-4457-a2ed-094d7e6a669c Intel(R) Centrino(R) Intel Corporation Intel(R) Centrino(R) - - 1-0050F204-1
- When the user enters a PIN for a pending Enrollee, e.g., on the web
- UI), hostapd needs to be notified of the new PIN over the control
- interface. This can be done either by using the UNIX domain socket
- -based control interface directly (src/common/wpa_ctrl.c provides
- helper functions for using the interface) or by calling hostapd_cli.
- Example command to add a PIN (12345670) for an Enrollee:
- hostapd_cli wps_pin 53b63a98-d29e-4457-a2ed-094d7e6a669c 12345670
- If the UUID-E is not available (e.g., Enrollee waits for the Registrar
- to be selected before connecting), wildcard UUID may be used to allow the PIN to be used once with any UUID:
- hostapd_cli wps_pin any 12345670
- After this, the Enrollee can connect to the AP again and complete WPS
- negotiation. At that point, a new, random WPA PSK is generated for the
- client device and the client can then use that key to connect to the
- AP to access the network.
- If the AP includes a pushbutton, WPS PBC mode can be used. It is
- enabled by pushing a button on both the AP and the client at about the
- same time (2 minute window). hostapd needs to be notified about the AP
- button pushed event over the control interface, e.g., by calling
- hostapd_cli:
- hostapd_cli wps_pbc
- At this point, the client has two minutes to complete WPS negotiation
- which will generate a new WPA PSK in the same way as the PIN method
- described above.
|