You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  1. Automatic regression and interoperability testing of wpa_supplicant's
  2. IEEE 802.1X/EAPOL authentication
  3. Test program:
  4. - Linked some parts of IEEE 802.1X Authenticator implementation from
  5. hostapd (RADIUS client and RADIUS processing, EAP<->RADIUS
  6. encapsulation/decapsulation) into wpa_supplicant.
  7. - Replaced wpa_supplicant.c and wpa.c with test code that trigger
  8. IEEE 802.1X authentication automatically without need for wireless
  9. client card or AP.
  10. - For EAP methods that generate keying material, the key derived by the
  11. Supplicant is verified to match with the one received by the (now
  12. integrated) Authenticator.
  13. The full automated test suite can now be run in couple of seconds, but
  14. I'm more than willing to add new RADIUS authentication servers to make
  15. this take a bit more time.. ;-) As an extra bonus, this can also be
  16. seen as automatic regression/interoperability testing for the RADIUS
  17. server, too.
  18. In order for me to be able to use a new authentication server, the
  19. server need to be available from Internet (at least from one static IP
  20. address) and I will need to get suitable user name/password pairs,
  21. certificates, and private keys for testing use. Other alternative
  22. would be to get an evaluation version of the server so that I can
  23. install it on my own test setup. If you are interested in providing
  24. either server access or evaluation version, please contact me
  25. (j@w1.fi).
  26. Test matrix
  27. +) tested successfully
  28. F) failed
  29. -) server did not support
  30. ?) not tested
  31. Cisco ACS ----------------------------------------------------------.
  32. hostapd --------------------------------------------------------. |
  33. Cisco Aironet 1200 AP (local RADIUS server) ----------------. | |
  34. Periodik Labs Elektron ---------------------------------. | | |
  35. Lucent NavisRadius ---------------------------------. | | | |
  36. Interlink RAD-Series ---------------------------. | | | | |
  37. Radiator -----------------------------------. | | | | | |
  38. Meetinghouse Aegis ---------------------. | | | | | | |
  39. Funk Steel-Belted ------------------. | | | | | | | |
  40. Funk Odyssey -------------------. | | | | | | | | |
  41. Microsoft IAS --------------. | | | | | | | | | |
  42. FreeRADIUS -------------. | | | | | | | | | | |
  43. | | | | | | | | | | | |
  44. EAP-MD5 + - - + + + + + - - + +
  45. EAP-GTC + - - ? + + + + - - + -
  46. EAP-OTP - - - - - + - - - - - -
  47. EAP-MSCHAPv2 + - - + + + + + - - + -
  48. EAP-TLS + + + + + + + + - - + +
  49. EAP-PEAPv0/MSCHAPv2 + + + + + + + + + - + +
  50. EAP-PEAPv0/GTC + - + - + + + + - - + +
  51. EAP-PEAPv0/OTP - - - - - + - - - - - -
  52. EAP-PEAPv0/MD5 + - - + + + + + - - + -
  53. EAP-PEAPv0/TLS + + - + + + F + - - + +
  54. EAP-PEAPv0/SIM - - - - - - - - - - + -
  55. EAP-PEAPv0/AKA - - - - - - - - - - + -
  56. EAP-PEAPv0/PSK - - - - - - - - - - + -
  57. EAP-PEAPv0/PAX - - - - - - - - - - + -
  58. EAP-PEAPv0/SAKE - - - - - - - - - - + -
  59. EAP-PEAPv0/GPSK - - - - - - - - - - + -
  60. EAP-PEAPv1/MSCHAPv2 - - + + + +1 + +5 +8 - + +
  61. EAP-PEAPv1/GTC - - + + + +1 + +5 +8 - + +
  62. EAP-PEAPv1/OTP - - - - - +1 - - - - - -
  63. EAP-PEAPv1/MD5 - - - + + +1 + +5 - - + -
  64. EAP-PEAPv1/TLS - - - + + +1 F +5 - - + +
  65. EAP-PEAPv1/SIM - - - - - - - - - - + -
  66. EAP-PEAPv1/AKA - - - - - - - - - - + -
  67. EAP-PEAPv1/PSK - - - - - - - - - - + -
  68. EAP-PEAPv1/PAX - - - - - - - - - - + -
  69. EAP-PEAPv1/SAKE - - - - - - - - - - + -
  70. EAP-PEAPv1/GPSK - - - - - - - - - - + -
  71. EAP-TTLS/CHAP + - +2 + + + + + + - + -
  72. EAP-TTLS/MSCHAP + - + + + + + + + - + -
  73. EAP-TTLS/MSCHAPv2 + - + + + + + + + - + -
  74. EAP-TTLS/PAP + - + + + + + + + - + -
  75. EAP-TTLS/EAP-MD5 + - +2 + + + + + + - + -
  76. EAP-TTLS/EAP-GTC + - +2 ? + + + + - - + -
  77. EAP-TTLS/EAP-OTP - - - - - + - - - - - -
  78. EAP-TTLS/EAP-MSCHAPv2 + - +2 + + + + + + - + -
  79. EAP-TTLS/EAP-TLS + - +2 + F + + + - - + -
  80. EAP-TTLS/EAP-SIM - - - - - - - - - - + -
  81. EAP-TTLS/EAP-AKA - - - - - - - - - - + -
  82. EAP-TTLS/EAP-PSK - - - - - - - - - - + -
  83. EAP-TTLS/EAP-PAX - - - - - - - - - - + -
  84. EAP-TTLS/EAP-SAKE - - - - - - - - - - + -
  85. EAP-TTLS/EAP-GPSK - - - - - - - - - - + -
  86. EAP-TTLS + TNC - - - - - + - - - - + -
  87. EAP-SIM + - - ? - + - ? - - + -
  88. EAP-AKA - - - - - + - - - - + -
  89. EAP-AKA' - - - - - - - - - - + -
  90. EAP-PSK +7 - - - - + - - - - + -
  91. EAP-PAX - - - - - + - - - - + -
  92. EAP-SAKE - - - - - - - - - - + -
  93. EAP-GPSK - - - - - - - - - - + -
  94. EAP-FAST/MSCHAPv2(prov) - - - + - + - - - + + +
  95. EAP-FAST/GTC(auth) - - - + - + - - - + + +
  96. EAP-FAST/MSCHAPv2(aprov)- - - - - + - - - - + +
  97. EAP-FAST/GTC(aprov) - - - - - + - - - - + +
  98. EAP-FAST/MD5(aprov) - - - - - + - - - - + -
  99. EAP-FAST/TLS(aprov) - - - - - - - - - - + +
  100. EAP-FAST/SIM(aprov) - - - - - - - - - - + -
  101. EAP-FAST/AKA(aprov) - - - - - - - - - - + -
  102. EAP-FAST/MSCHAPv2(auth) - - - - - + - - - - + +
  103. EAP-FAST/MD5(auth) - - - - - + - - - - + -
  104. EAP-FAST/TLS(auth) - - - - - - - - - - + +
  105. EAP-FAST/SIM(auth) - - - - - - - - - - + -
  106. EAP-FAST/AKA(auth) - - - - - - - - - - + -
  107. EAP-FAST + TNC - - - - - - - - - - + -
  108. LEAP + - + + + + F +6 - + - +
  109. EAP-TNC +9 - - - - + - - - - + -
  110. EAP-IKEv2 +10 - - - - - - - - - + -
  111. 1) PEAPv1 required new label, "client PEAP encryption" instead of "client EAP
  112. encryption", during key derivation (requires phase1="peaplabel=1" in the
  113. network configuration in wpa_supplicant.conf)
  114. 2) used FreeRADIUS as inner auth server
  115. 5) PEAPv1 required termination of negotiation on tunneled EAP-Success and new
  116. label in key deriviation
  117. (phase1="peap_outer_success=0 peaplabel=1") (in "IETF Draft 5" mode)
  118. 6) Authenticator simulator required patching for handling Access-Accept within
  119. negotiation (for the first EAP-Success of LEAP)
  120. 7) tested only with an older (incompatible) draft of EAP-PSK; FreeRADIUS does
  121. not support the current EAP-PSK (RFC) specification
  122. 8) PEAPv1 used non-standard version negotiation (client had to force v1 even
  123. though server reported v0 as the highest supported version)
  124. 9) only EAP-TTLS/EAP-TNC tested, i.e., test did not include proper sequence of
  125. client authentication followed by TNC inside the tunnel
  126. 10) worked only with special compatibility code to match the IKEv2 server
  127. implementation
  128. Automated tests:
  129. FreeRADIUS (2.0-beta/CVS snapshot)
  130. - EAP-MD5-Challenge
  131. - EAP-GTC
  132. - EAP-MSCHAPv2
  133. - EAP-TLS
  134. - EAP-PEAPv0 / MSCHAPv2
  135. - EAP-PEAPv0 / GTC
  136. - EAP-PEAPv0 / MD5-Challenge
  137. - EAP-PEAPv0 / TLS
  138. - EAP-TTLS / EAP-MD5-Challenge
  139. - EAP-TTLS / EAP-GTC
  140. - EAP-TTLS / EAP-MSCHAPv2
  141. - EAP-TTLS / EAP-TLS
  142. - EAP-TTLS / CHAP
  143. - EAP-TTLS / PAP
  144. - EAP-TTLS / MSCHAP
  145. - EAP-TTLS / MSCHAPv2
  146. - EAP-TTLS / EAP-TNC (partial support; no authentication sequence)
  147. - EAP-SIM
  148. - LEAP
  149. Microsoft Windows Server 2003 / IAS
  150. - EAP-TLS
  151. - EAP-PEAPv0 / MSCHAPv2
  152. - EAP-PEAPv0 / TLS
  153. - EAP-MD5
  154. * IAS does not seem to support other EAP methods
  155. Funk Odyssey 2.01.00.653
  156. - EAP-TLS
  157. - EAP-PEAPv0 / MSCHAPv2
  158. - EAP-PEAPv0 / GTC
  159. - EAP-PEAPv1 / MSCHAPv2
  160. - EAP-PEAPv1 / GTC
  161. Note: PEAPv1 requires TLS key derivation to use label "client EAP encryption"
  162. - EAP-TTLS / CHAP (using FreeRADIUS as inner auth srv)
  163. - EAP-TTLS / MSCHAP
  164. - EAP-TTLS / MSCHAPv2
  165. - EAP-TTLS / PAP
  166. - EAP-TTLS / EAP-MD5-Challenge (using FreeRADIUS as inner auth srv)
  167. - EAP-TTLS / EAP-GTC (using FreeRADIUS as inner auth srv)
  168. - EAP-TTLS / EAP-MSCHAPv2 (using FreeRADIUS as inner auth srv)
  169. - EAP-TTLS / EAP-TLS (using FreeRADIUS as inner auth srv)
  170. * not supported in Odyssey:
  171. - EAP-MD5-Challenge
  172. - EAP-GTC
  173. - EAP-MSCHAPv2
  174. - EAP-PEAP / MD5-Challenge
  175. - EAP-PEAP / TLS
  176. Funk Steel-Belted Radius Enterprise Edition v4.71.739
  177. - EAP-MD5-Challenge
  178. - EAP-MSCHAPv2
  179. - EAP-TLS
  180. - EAP-PEAPv0 / MSCHAPv2
  181. - EAP-PEAPv0 / MD5
  182. - EAP-PEAPv0 / TLS
  183. - EAP-PEAPv1 / MSCHAPv2
  184. - EAP-PEAPv1 / MD5
  185. - EAP-PEAPv1 / GTC
  186. - EAP-PEAPv1 / TLS
  187. Note: PEAPv1 requires TLS key derivation to use label "client EAP encryption"
  188. - EAP-TTLS / CHAP
  189. - EAP-TTLS / MSCHAP
  190. - EAP-TTLS / MSCHAPv2
  191. - EAP-TTLS / PAP
  192. - EAP-TTLS / EAP-MD5-Challenge
  193. - EAP-TTLS / EAP-MSCHAPv2
  194. - EAP-TTLS / EAP-TLS
  195. Meetinghouse Aegis 1.1.4
  196. - EAP-MD5-Challenge
  197. - EAP-GTC
  198. - EAP-MSCHAPv2
  199. - EAP-TLS
  200. - EAP-PEAPv0 / MSCHAPv2
  201. - EAP-PEAPv0 / TLS
  202. - EAP-PEAPv0 / GTC
  203. - EAP-PEAPv0 / MD5-Challenge
  204. - EAP-PEAPv1 / MSCHAPv2
  205. - EAP-PEAPv1 / TLS
  206. - EAP-PEAPv1 / GTC
  207. - EAP-PEAPv1 / MD5-Challenge
  208. Note: PEAPv1 requires TLS key derivation to use label "client EAP encryption"
  209. - EAP-TTLS / CHAP
  210. - EAP-TTLS / MSCHAP
  211. - EAP-TTLS / MSCHAPv2
  212. - EAP-TTLS / PAP
  213. - EAP-TTLS / EAP-MD5-Challenge
  214. - EAP-TTLS / EAP-GTC
  215. - EAP-TTLS / EAP-MSCHAPv2
  216. * did not work
  217. - EAP-TTLS / EAP-TLS
  218. (Server rejects authentication without any reason in debug log. It
  219. looks like the inner TLS negotiation starts properly and the last
  220. packet from Supplicant looks like the one sent in the Phase 1. The
  221. server generates a valid looking reply in the same way as in Phase
  222. 1, but then ends up sending Access-Reject. Maybe an issue with TTLS
  223. fragmentation in the Aegis server(?) The packet seems to include
  224. 1328 bytes of EAP-Message and this may go beyond the fragmentation
  225. limit with AVP encapsulation and TLS tunneling. Note: EAP-PEAP/TLS
  226. did work, so this issue seems to be with something TTLS specific.)
  227. Radiator 3.17.1 (eval, with all patches up to and including 2007-05-25)
  228. - EAP-MD5-Challenge
  229. - EAP-GTC
  230. - EAP-OTP
  231. - EAP-MSCHAPv2
  232. - EAP-TLS
  233. - EAP-PEAPv0 / MSCHAPv2
  234. - EAP-PEAPv0 / GTC
  235. - EAP-PEAPv0 / OTP
  236. - EAP-PEAPv0 / MD5-Challenge
  237. - EAP-PEAPv0 / TLS
  238. Note: Needed to use unknown identity in outer auth and some times the server
  239. seems to get confused and fails to send proper Phase 2 data.
  240. - EAP-PEAPv1 / MSCHAPv2
  241. - EAP-PEAPv1 / GTC
  242. - EAP-PEAPv1 / OTP
  243. - EAP-PEAPv1 / MD5-Challenge
  244. - EAP-PEAPv1 / TLS
  245. Note: This has some additional requirements for EAPTLS_MaxFragmentSize.
  246. Using 1300 for outer auth and 500 for inner auth seemed to work.
  247. Note: Needed to use unknown identity in outer auth and some times the server
  248. seems to get confused and fails to send proper Phase 2 data.
  249. - EAP-TTLS / CHAP
  250. - EAP-TTLS / MSCHAP
  251. - EAP-TTLS / MSCHAPv2
  252. - EAP-TTLS / PAP
  253. - EAP-TTLS / EAP-MD5-Challenge
  254. - EAP-TTLS / EAP-GTC
  255. - EAP-TTLS / EAP-OTP
  256. - EAP-TTLS / EAP-MSCHAPv2
  257. - EAP-TTLS / EAP-TLS
  258. Note: This has some additional requirements for EAPTLS_MaxFragmentSize.
  259. Using 1300 for outer auth and 500 for inner auth seemed to work.
  260. - EAP-SIM
  261. - EAP-AKA
  262. - EAP-PSK
  263. - EAP-PAX
  264. - EAP-TNC
  265. Interlink Networks RAD-Series 6.1.2.7
  266. - EAP-MD5-Challenge
  267. - EAP-GTC
  268. - EAP-MSCHAPv2
  269. - EAP-TLS
  270. - EAP-PEAPv0 / MSCHAPv2
  271. - EAP-PEAPv0 / GTC
  272. - EAP-PEAPv0 / MD5-Challenge
  273. - EAP-PEAPv1 / MSCHAPv2
  274. - EAP-PEAPv1 / GTC
  275. - EAP-PEAPv1 / MD5-Challenge
  276. Note: PEAPv1 requires TLS key derivation to use label "client EAP encryption"
  277. - EAP-TTLS / CHAP
  278. - EAP-TTLS / MSCHAP
  279. - EAP-TTLS / MSCHAPv2
  280. - EAP-TTLS / PAP
  281. - EAP-TTLS / EAP-MD5-Challenge
  282. - EAP-TTLS / EAP-GTC
  283. - EAP-TTLS / EAP-MSCHAPv2
  284. - EAP-TTLS / EAP-TLS
  285. * did not work
  286. - EAP-PEAPv0 / TLS
  287. - EAP-PEAPv1 / TLS
  288. (Failed to decrypt Phase 2 data)
  289. Lucent NavisRadius 4.4.0
  290. - EAP-MD5-Challenge
  291. - EAP-GTC
  292. - EAP-MSCHAPv2
  293. - EAP-TLS
  294. - EAP-PEAPv0 / MD5-Challenge
  295. - EAP-PEAPv0 / MSCHAPv2
  296. - EAP-PEAPv0 / GTC
  297. - EAP-PEAPv0 / TLS
  298. - EAP-PEAPv1 / MD5-Challenge
  299. - EAP-PEAPv1 / MSCHAPv2
  300. - EAP-PEAPv1 / GTC
  301. - EAP-PEAPv1 / TLS
  302. "IETF Draft 5" mode requires phase1="peap_outer_success=0 peaplabel=1"
  303. 'Cisco ACU 5.05' mode works without phase1 configuration
  304. - EAP-TTLS / CHAP
  305. - EAP-TTLS / MSCHAP
  306. - EAP-TTLS / MSCHAPv2
  307. - EAP-TTLS / PAP
  308. - EAP-TTLS / EAP-MD5-Challenge
  309. - EAP-TTLS / EAP-MSCHAPv2
  310. - EAP-TTLS / EAP-GTC
  311. - EAP-TTLS / EAP-TLS
  312. Note: user certificate from NavisRadius had private key in a format
  313. that wpa_supplicant could not use. Converting this to PKCS#12 and then
  314. back to PEM allowed wpa_supplicant to use the key.
  315. hostapd v0.3.3
  316. - EAP-MD5-Challenge
  317. - EAP-GTC
  318. - EAP-MSCHAPv2
  319. - EAP-TLS
  320. - EAP-PEAPv0 / MSCHAPv2
  321. - EAP-PEAPv0 / GTC
  322. - EAP-PEAPv0 / MD5-Challenge
  323. - EAP-PEAPv1 / MSCHAPv2
  324. - EAP-PEAPv1 / GTC
  325. - EAP-PEAPv1 / MD5-Challenge
  326. - EAP-TTLS / CHAP
  327. - EAP-TTLS / MSCHAP
  328. - EAP-TTLS / MSCHAPv2
  329. - EAP-TTLS / PAP
  330. - EAP-TTLS / EAP-MD5-Challenge
  331. - EAP-TTLS / EAP-GTC
  332. - EAP-TTLS / EAP-MSCHAPv2
  333. - EAP-SIM
  334. - EAP-PAX
  335. PEAPv1:
  336. Funk Odyssey 2.01.00.653:
  337. - uses tunneled EAP-Success, expects reply in tunnel or TLS ACK, sends MPPE
  338. keys with outer EAP-Success message after this
  339. - uses label "client EAP encryption"
  340. - (peap_outer_success 1 and 2 work)
  341. Funk Steel-Belted Radius Enterprise Edition v4.71.739
  342. - uses tunneled EAP-Success, expects reply in tunnel or TLS ACK, sends MPPE
  343. keys with outer EAP-Success message after this
  344. - uses label "client EAP encryption"
  345. - (peap_outer_success 1 and 2 work)
  346. Radiator 3.9:
  347. - uses TLV Success and Reply, sends MPPE keys with outer EAP-Success message
  348. after this
  349. - uses label "client PEAP encryption"
  350. Lucent NavisRadius 4.4.0 (in "IETF Draft 5" mode):
  351. - sends tunneled EAP-Success with MPPE keys and expects the authentication to
  352. terminate at this point (gets somewhat confused with reply to this)
  353. - uses label "client PEAP encryption"
  354. - phase1="peap_outer_success=0 peaplabel=1"
  355. Lucent NavisRadius 4.4.0 (in "Cisco ACU 5.05" mode):
  356. - sends tunneled EAP-Success with MPPE keys and expects to receive TLS ACK
  357. as a reply
  358. - uses label "client EAP encryption"
  359. Meetinghouse Aegis 1.1.4
  360. - uses tunneled EAP-Success, expects reply in tunnel or TLS ACK, sends MPPE
  361. keys with outer EAP-Success message after this
  362. - uses label "client EAP encryption"
  363. - peap_outer_success 1 and 2 work