index.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <title>Linux WPA Supplicant (IEEE 802.1X, WPA, WPA2, RSN, IEEE 802.11i)</title>
  5. <meta name="description" content="WPA Supplicant for Linux, BSD, and Windows (IEEE 802.1X, WPA, WPA2, RSN, IEEE 802.11i)">
  6. <meta name="keywords" content="WPA, WPA2, IEEE 802.11i, IEEE 802.1X, WPA Supplicant, wpa_supplicant, TKIP, CCMP, EAP-PEAP, EAP-TLS, EAP-TTLS, EAP-SIM, EAP-AKA, EAP-PSK, EAP-GTC, EAP-MSCHAPv2, EAP-MD5, EAP-FAST, EAP-PAX, EAP-IKEv2IEEE 802.1X Supplicant, IEEE 802.1aa, EAPOL, RSN, pre-authentication, PMKSA caching, BSD WPA Supplicant, FreeBSD WPA Supplicant, wireless, WinXP WPA Supplicant, EAP-TNC, TNCC, IF-IMC, IF-TNCCS">
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  8. </head>
  9. <body>
  10. <h2>Linux WPA/WPA2/IEEE 802.1X Supplicant</h2>
  11. <p>wpa_supplicant is a WPA Supplicant for Linux, BSD, Mac OS X, and
  12. Windows with
  13. support for WPA and WPA2 (IEEE 802.11i / RSN). It is suitable for both
  14. desktop/laptop computers and embedded systems. Supplicant is the IEEE
  15. 802.1X/WPA component that is used in the client stations. It
  16. implements key negotiation with a WPA Authenticator and it controls
  17. the roaming and IEEE 802.11 authentication/association of the wlan
  18. driver.</p>
  19. <p>wpa_supplicant is designed to be a "daemon" program that runs in the
  20. background and acts as the backend component controlling the wireless
  21. connection. wpa_supplicant supports separate frontend programs and a
  22. text-based frontend (wpa_cli) and a GUI (wpa_gui) are included with
  23. wpa_supplicant.</p>
  24. <p>wpa_supplicant uses a flexible build configuration that can be used
  25. to select which features are included. This allows minimal code size
  26. (from ca. 50 kB binary for WPA/WPA2-Personal and 130 kB binary for
  27. WPA/WPA2-Enterprise without debugging code to 450 kB with most
  28. features and full debugging support; these example sizes are from a
  29. build for x86 target).</p>
  30. <h4>Supported WPA/IEEE 802.11i features</h4>
  31. <ul>
  32. <li>WPA-PSK ("WPA-Personal")</li>
  33. <li>WPA with EAP (e.g., with RADIUS authentication server) ("WPA-Enterprise")</li>
  34. <li>key management for CCMP, TKIP, WEP104, WEP40</li>
  35. <li>WPA and full IEEE 802.11i/RSN/WPA2</li>
  36. <li>RSN: PMKSA caching, pre-authentication</li>
  37. </ul>
  38. <h4>Supported EAP methods (IEEE 802.1X Supplicant)</h4>
  39. <ul>
  40. <li>EAP-TLS</li>
  41. <li>EAP-PEAP/MSCHAPv2 (both PEAPv0 and PEAPv1)</li>
  42. <li>EAP-PEAP/TLS (both PEAPv0 and PEAPv1)</li>
  43. <li>EAP-PEAP/GTC (both PEAPv0 and PEAPv1)</li>
  44. <li>EAP-PEAP/OTP (both PEAPv0 and PEAPv1)</li>
  45. <li>EAP-PEAP/MD5-Challenge (both PEAPv0 and PEAPv1)</li>
  46. <li>EAP-TTLS/EAP-MD5-Challenge</li>
  47. <li>EAP-TTLS/EAP-GTC</li>
  48. <li>EAP-TTLS/EAP-OTP</li>
  49. <li>EAP-TTLS/EAP-MSCHAPv2</li>
  50. <li>EAP-TTLS/EAP-TLS</li>
  51. <li>EAP-TTLS/MSCHAPv2</li>
  52. <li>EAP-TTLS/MSCHAP</li>
  53. <li>EAP-TTLS/PAP</li>
  54. <li>EAP-TTLS/CHAP</li>
  55. <li>EAP-SIM</li>
  56. <li>EAP-AKA</li>
  57. <li>EAP-AKA'</li>
  58. <li>EAP-PSK</li>
  59. <li>EAP-FAST</li>
  60. <li>EAP-PAX</li>
  61. <li>EAP-SAKE</li>
  62. <li>EAP-IKEv2</li>
  63. <li>EAP-GPSK (experimental)</li>
  64. <li>LEAP (note: requires special support from the driver)</li>
  65. </ul>
  66. <p>Following methods are also supported, but since they do not generate keying
  67. material, they cannot be used with WPA or IEEE 802.1X WEP keying.</p>
  68. <ul>
  69. <li>EAP-MD5-Challenge</li>
  70. <li>EAP-MSCHAPv2</li>
  71. <li>EAP-GTC</li>
  72. <li>EAP-OTP</li>
  73. <li>EAP-TNC (Trusted Network Connect; TNCC, IF-IMC, IF-T, IF-TNCCS)</li>
  74. </ul>
  75. <p>More information about EAP methods and interoperability testing is
  76. available in <a href="/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/eap_testing.txt">eap_testing.txt</a>.</p>
  77. <h4>Supported TLS/crypto libraries</h4>
  78. <ul>
  79. <li>OpenSSL (default)</li>
  80. <li>GnuTLS</li>
  81. </ul>
  82. <h4>Internal TLS/crypto implementation (optional)</h4>
  83. <ul>
  84. <li>can be used in place of an external TLS/crypto library</li>
  85. <li>TLSv1</li>
  86. <li>X.509 certificate processing</li>
  87. <li>PKCS #1</li>
  88. <li>ASN.1</li>
  89. <li>RSA</li>
  90. <li>bignum</li>
  91. <li>minimal size (ca. 50 kB binary, parts of which are already needed for WPA;
  92. TLSv1/X.509/ASN.1/RSA/bignum parts are about 25 kB on x86)</li>
  93. </ul>
  94. <h4>Supported wireless cards/drivers</h4>
  95. <ul>
  96. <li>Linux drivers that support Linux Wireless Extensions v19 or newer with
  97. WPA/WPA2 extensions</li>
  98. <li><a href="http://hostap.epitest.fi/">Host AP driver for Prism2/2.5/3</a> (WPA and WPA2)</li>
  99. <li><a href="http://www.linuxant.com/driverloader/">Linuxant DriverLoader</a> with Windows NDIS driver supporting WPA/WPA2</li>
  100. <li><a href="http://www.agere.com/support/drivers/">Agere Systems Inc. Linux Driver</a> (Hermes-I/Hermes-II chipset) (WPA, but not WPA2)</li>
  101. <li><a href="http://sourceforge.net/projects/madwifi/">madwifi (Atheros ar521x)</a></li>
  102. <li><a href="http://atmelwlandriver.sourceforge.net/">ATMEL AT76C5XXx</a></li>
  103. <li><a href="http://ndiswrapper.sourceforge.net/">Linux ndiswrapper</a></li>
  104. <li>Broadcom wl.o driver</li>
  105. <li><a href="http://sourceforge.net/projects/ipw2100/">Intel ipw2100</a></li>
  106. <li><a href="http://sourceforge.net/projects/ipw2200/">Intel ipw2200</a></li>
  107. <li>Wired Ethernet drivers</li>
  108. <li>BSD net80211 layer (e.g., Atheros driver) (FreeBSD 6-CURRENT and NetBSD current)</li>
  109. <li>Windows NDIS drivers (Windows; at least XP and 2000, others not tested)</li>
  110. </ul>
  111. <p>wpa_supplicant was designed to be portable for different drivers and
  112. operating systems. Hopefully, support for more wlan cards and OSes will be
  113. added in the future. See <a href="devel/">developers' documentation</a>
  114. for more information about the design of wpa_supplicant and porting to
  115. other drivers.</p>
  116. <h3><a name="download">Download</a></h3>
  117. <p>
  118. <b>wpa_supplicant</b><br>
  119. Copyright (c) 2003-2008, Jouni Malinen &lt;j@w1.fi&gt;
  120. and contributors.
  121. </p>
  122. <p>
  123. This program is free software; you can redistribute it and/or modify
  124. it under the terms of the GNU General Public License version 2 as
  125. published by the Free Software Foundation. See
  126. <a href="/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=COPYING">COPYING</a>
  127. for more details.
  128. </p>
  129. <p>Alternatively, this software may be distributed, used, and modified
  130. under the terms of BSD license. See <a href="/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/README">README</a>
  131. for more details.</p>
  132. <p>
  133. <b>Please see
  134. <a href="/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/README">README</a>
  135. for the current documentation.</b><br>
  136. <a href="/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/README-Windows.txt">README-Windows.txt</a>
  137. has some more information about the Windows port of wpa_supplicant.</p>
  138. <ul>
  139. <li><a href="../releases.html">Release graph</a></li>
  140. <li>Latest stable release:
  141. <ul>
  142. <li><a href="../releases/wpa_supplicant-0.5.11.tar.gz">wpa_supplicant-0.5.11.tar.gz</a></li>
  143. <li><a href="../releases/wpa_supplicant-windows-bin-0.5.11.zip">wpa_supplicant-windows-bin-0.5.11.zip</a> (binaries for Windows)</li>
  144. </ul>
  145. <li>Older stable release:
  146. <ul>
  147. <li><a href="../releases/wpa_supplicant-0.4.11.tar.gz">wpa_supplicant-0.4.11.tar.gz</a> (source code for all versions)</li>
  148. <li><a href="../releases/wpa_supplicant-windows-bin-0.4.11.zip">wpa_supplicant-windows-bin-0.4.11.zip</a> (binaries for Windows)</li>
  149. </ul>
  150. <li>Older stable release:
  151. <ul>
  152. <li><a href="../releases/wpa_supplicant-0.3.11.tar.gz">wpa_supplicant-0.3.11.tar.gz</a> (source code for all versions)</li>
  153. <li><a href="../releases/wpa_supplicant-windows-bin-0.3.11.zip">wpa_supplicant-windows-bin-0.3.11.zip</a> (binaries for Windows)</li>
  154. </ul>
  155. <li>Obsolete stable release<BR>
  156. (note: 0.2.x branch is not supported anymore - please upgrade to 0.4.x or 0.5.x):
  157. <ul>
  158. <li><a href="../releases/wpa_supplicant-0.2.8.tar.gz">wpa_supplicant-0.2.8.tar.gz</a></li>
  159. </ul>
  160. <li>Latest development release:
  161. <ul>
  162. <li><a href="../releases/wpa_supplicant-0.6.6.tar.gz">wpa_supplicant-0.6.6.tar.gz</a> (source code for all versions)</li>
  163. <li><a href="../releases/wpa_supplicant-windows-bin-0.6.6.zip">wpa_supplicant-windows-bin-0.6.6.zip</a> (binaries for Windows)</li>
  164. <li><a href="qt4/wpa_gui-qt433-windows-dll.zip">wpa_gui-qt433-windows-dll.zip</a> (Qt4 libraries from wpa_gui/Windows)</li>
  165. </ul>
  166. <li>ChangeLog:
  167. <ul>
  168. <li><a href="/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/ChangeLog">development branch</a></li>
  169. <li><a href="/cgi-bin/viewcvs.cgi/*checkout*/hostap/wpa_supplicant/ChangeLog?rev=stable&amp;content-type=text/plain">stable branch</a>
  170. </ul>
  171. <li><a href="../releases/">Old releases</a></li>
  172. <li><a href="http://lists.shmoo.com/mailman/listinfo/hostap">Mailing list</a></li>
  173. <li><a href="http://lists.shmoo.com/pipermail/hostap/">New mailing list archives</a></li>
  174. <li><a href="/gitweb/gitweb.cgi">Web interface to GIT repository (0.6.x and newer)</a></li>
  175. <li><a href="/cgi-bin/viewcvs.cgi/hostap/">Web interface to CVS repository (0.5.x and older)</a></li>
  176. <li><a href="../releases/snapshots/">Snapshot releases from all active branches</a>
  177. <li><a href="../cvs.html">GIT and read-only anonymous CVS access (pserver)</a></li>
  178. <li><a href="../bugz/">Bug and feature request tracking</a></li>
  179. <li><a href="devel/">Developers' documentation for wpa_supplicant 0.5.x</a></li>
  180. <li><a href="devel-0.4/">Developers' documentation for wpa_supplicant 0.4.x</a></li>
  181. <li><a href="wpa_gui.html">wpa_gui screenshots</a></li>
  182. </ul>
  183. <h3>WPA</h3>
  184. <p>The original security mechanism of IEEE 802.11 standard was not
  185. designed to be strong and has proven to be insufficient for most
  186. networks that require some kind of security. Task group I (Security)
  187. of <a href="http://www.ieee802.org/11/">IEEE 802.11 working group</a>
  188. has worked to address the flaws of the base standard and in
  189. practice completed its work in May 2004. The IEEE 802.11i amendment to
  190. the IEEE 802.11 standard was approved in June 2004 and published in
  191. July 2004.</p>
  192. <p><a href="http://www.wi-fi.org/">Wi-Fi Alliance</a> used a draft
  193. version of the IEEE 802.11i work (draft 3.0) to define a subset of the
  194. security enhancements that can be implemented with existing wlan
  195. hardware. This is called Wi-Fi Protected Access (WPA). This has
  196. now become a mandatory component of interoperability testing and
  197. certification done by Wi-Fi Alliance. Wi-Fi has
  198. <a href="http://www.wi-fi.org/OpenSection/protected_access.asp">information
  199. about WPA</a> at its web site.</p>
  200. <p>IEEE 802.11 standard defined wired equivalent privacy (WEP) algorithm
  201. for protecting wireless networks. WEP uses RC4 with 40-bit keys,
  202. 24-bit initialization vector (IV), and CRC32 to protect against packet
  203. forgery. All these choices have proven to be insufficient: key space is
  204. too small against current attacks, RC4 key scheduling is insufficient
  205. (beginning of the pseudorandom stream should be skipped), IV space is
  206. too small and IV reuse makes attacks easier, there is no replay
  207. protection, and non-keyed authentication does not protect against bit
  208. flipping packet data.</p>
  209. <p>WPA is an intermediate solution for the security issues. It uses
  210. Temporal Key Integrity Protocol (TKIP) to replace WEP. TKIP is a
  211. compromise on strong security and possibility to use existing
  212. hardware. It still uses RC4 for the encryption like WEP, but with
  213. per-packet RC4 keys. In addition, it implements replay protection,
  214. keyed packet authentication mechanism (Michael MIC).</p>
  215. <p>Keys can be managed using two different mechanisms. WPA can either use
  216. an external authentication server (e.g., RADIUS) and EAP just like
  217. IEEE 802.1X is using or pre-shared keys without need for additional
  218. servers. Wi-Fi calls these "WPA-Enterprise" and "WPA-Personal",
  219. respectively. Both mechanisms will generate a master session key for
  220. the Authenticator (AP) and Supplicant (client station).</p>
  221. <p>WPA implements a new key handshake (4-Way Handshake and Group Key
  222. Handshake) for generating and exchanging data encryption keys between
  223. the Authenticator and Supplicant. This handshake is also used to
  224. verify that both Authenticator and Supplicant know the master session
  225. key. These handshakes are identical regardless of the selected key
  226. management mechanism (only the method for generating master session
  227. key changes).</p>
  228. <h3>IEEE 802.11i / RSN / WPA2</h3>
  229. <p>The design for parts of IEEE 802.11i that were not included in WPA
  230. has finished (May 2004) and this amendment to IEEE 802.11 was approved
  231. in June 2004. Wi-Fi Alliance is using the final IEEE 802.11i as a new
  232. version of WPA called WPA2. This included, e.g., support for more
  233. robust encryption algorithm (CCMP: AES in Counter mode with CBC-MAC)
  234. to replace TKIP, optimizations for handoff (reduced number of messages
  235. in initial key handshake, pre-authentication, and PMKSA caching).</p>
  236. <h3>Using wpa_supplicant</h3>
  237. <p>Following steps are used when associating with an AP using WPA:<p>
  238. <ul>
  239. <li>wpa_supplicant requests the kernel driver to scan neighboring BSSes</li>
  240. <li>wpa_supplicant selects a BSS based on its configuration</li>
  241. <li>wpa_supplicant requests the kernel driver to associate with the chosen
  242. BSS</li>
  243. <li>if WPA-EAP: integrated IEEE 802.1X Supplicant completes EAP
  244. authentication with the authentication server (proxied by the
  245. Authenticator in the AP)</li>
  246. <li>If WPA-EAP: master key is received from the IEEE 802.1X Supplicant</li>
  247. <li>If WPA-PSK: wpa_supplicant uses PSK as the master session key</li>
  248. <li>wpa_supplicant completes WPA 4-Way Handshake and Group Key Handshake
  249. with the Authenticator (AP). WPA2 has integrated the initial Group Key
  250. Handshake into the 4-Way Handshake.</li>
  251. <li>wpa_supplicant configures encryption keys for unicast and broadcast</li>
  252. <li>normal data packets can be transmitted and received</li>
  253. </ul>
  254. <h4>Configuration file</h4>
  255. <p>wpa_supplicant is configured using a text file that lists all accepted
  256. networks and security policies, including pre-shared keys. See
  257. example configuration file,
  258. <a href="/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/wpa_supplicant.conf">wpa_supplicant.conf</a>,
  259. for detailed information about the configuration format and supported
  260. fields. In addition, simpler example configurations are available for
  261. <a href="/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/examples/plaintext.conf">plaintext</a>,
  262. <a href="/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/examples/wep.conf">static WEP</a>,
  263. <a href="/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/examples/ieee8021x.conf">IEEE 802.1X with dynamic WEP (EAP-PEAP/MSCHAPv2)</a>,
  264. <a href="/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/examples/wpa-psk-tkip.conf">WPA-PSK/TKIP</a>, and
  265. <a href="/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/examples/wpa2-eap-ccmp.conf">WPA2-EAP/CCMP (EAP-TLS)</a>.
  266. In addition, wpa_supplicant can use OpenSSL engine to avoid need for
  267. exposing private keys in the file system. This can be used for EAP-TLS
  268. authentication with smartcards and TPM tokens.
  269. <a href="/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/examples/openCryptoki.conf">Example configuration for using openCryptoki</a>
  270. shows an example network block and related parameters for EAP-TLS
  271. authentication using PKCS#11 TPM token.
  272. </p>
  273. <h3>Feedback, comments, mailing list</h3>
  274. <p>
  275. Any comments, reports on success/failure, ideas for further
  276. improvement, feature requests, etc. are welcome at j@w1.fi.
  277. Please note, that I often receive more email than I have time to answer.
  278. Unfortunately, some messages may not get a reply, but I'll try to go
  279. through my mail whenever time permits.
  280. </p>
  281. <p>Host AP mailing list can also be used for topics related to
  282. wpa_supplicant. Since this list has a broader audience, your likelyhood
  283. of getting responses is higher. This list is recommended for general
  284. questions about wpa_supplicant and its development. In addition, I
  285. will send release notes to it whenever a new version is available.
  286. </p>
  287. <p>
  288. The mailing list information and web archive is at <a
  289. href="http://lists.shmoo.com/mailman/listinfo/hostap">http://lists.shmoo.com/mailman/listinfo/hostap</a>.
  290. Messages to hostap@shmoo.com will be delivered to the
  291. subscribers. Please note, that due to large number of spam and virus
  292. messages sent to the list address, the list is configured to accept
  293. messages only from subscribed addresses. Messages from unsubscribed addresses
  294. may be accepted manually, but their delivery will be delayed.
  295. </p>
  296. <p>
  297. If you want to make sure your bug report of feature request does not
  298. get lost, please report it through the bug tracking system as
  299. <a href="../bugz/enter_bug.cgi">a new
  300. bug/feature request</a>.
  301. </p>
  302. <hr>
  303. The server and hosting for hostap.epitest.fi is kindly provided by
  304. Internet Systems Consortium (ISC).
  305. <a href="http://www.isc.org/"><img src="../isc.png" border="0"></a>
  306. <hr>
  307. <div>
  308. <address><a href="mailto:j@w1.fi">Jouni Malinen</a></address>
  309. <!-- Created: Sat May 22 21:41:58 PDT 2004 -->
  310. <!-- hhmts start -->
  311. Last modified: Sun Dec 7 19:24:16 EET 2008
  312. <!-- hhmts end -->
  313. </div>
  314. </body>
  315. </html>