eap_testing.txt 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396
  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-SIM + - - ? - + - ? - - + -
  87. EAP-AKA - - - - - + - - - - + -
  88. EAP-PSK +7 - - - - + - - - - + -
  89. EAP-PAX - - - - - + - - - - + -
  90. EAP-SAKE - - - - - - - - - - + -
  91. EAP-GPSK - - - - - - - - - - + -
  92. EAP-FAST/MSCHAPv2(prov) - - - + - - - - - + + +
  93. EAP-FAST/GTC(auth) - - - + - - - - - + + +
  94. EAP-FAST/MSCHAPv2(aprov)- - - - - - - - - - + +
  95. EAP-FAST/GTC(aprov) - - - - - - - - - - + +
  96. EAP-FAST/MD5(aprov) - - - - - - - - - - + -
  97. EAP-FAST/TLS(aprov) - - - - - - - - - - + +
  98. EAP-FAST/SIM(aprov) - - - - - - - - - - + -
  99. EAP-FAST/AKA(aprov) - - - - - - - - - - + -
  100. EAP-FAST/MSCHAPv2(auth) - - - - - - - - - - + +
  101. EAP-FAST/MD5(auth) - - - - - - - - - - + -
  102. EAP-FAST/TLS(auth) - - - - - - - - - - + +
  103. EAP-FAST/SIM(auth) - - - - - - - - - - + -
  104. EAP-FAST/AKA(auth) - - - - - - - - - - + -
  105. LEAP + - + + + + F +6 - + - +
  106. EAP-TNC +9 - - - - + - - - - - -
  107. EAP-IKEv2 +10 - - - - - - - - - + -
  108. 1) PEAPv1 required new label, "client PEAP encryption" instead of "client EAP
  109. encryption", during key derivation (requires phase1="peaplabel=1" in the
  110. network configuration in wpa_supplicant.conf)
  111. 2) used FreeRADIUS as inner auth server
  112. 5) PEAPv1 required termination of negotiation on tunneled EAP-Success and new
  113. label in key deriviation
  114. (phase1="peap_outer_success=0 peaplabel=1") (in "IETF Draft 5" mode)
  115. 6) Authenticator simulator required patching for handling Access-Accept within
  116. negotiation (for the first EAP-Success of LEAP)
  117. 7) tested only with an older (incompatible) draft of EAP-PSK; FreeRADIUS does
  118. not support the current EAP-PSK (RFC) specification
  119. 8) PEAPv1 used non-standard version negotiation (client had to force v1 even
  120. though server reported v0 as the highest supported version)
  121. 9) only EAP-TTLS/EAP-TNC tested, i.e., test did not include proper sequence of
  122. client authentication followed by TNC inside the tunnel
  123. 10) worked only with special compatibility code to match the IKEv2 server
  124. implementation
  125. Automated tests:
  126. FreeRADIUS (2.0-beta/CVS snapshot)
  127. - EAP-MD5-Challenge
  128. - EAP-GTC
  129. - EAP-MSCHAPv2
  130. - EAP-TLS
  131. - EAP-PEAPv0 / MSCHAPv2
  132. - EAP-PEAPv0 / GTC
  133. - EAP-PEAPv0 / MD5-Challenge
  134. - EAP-PEAPv0 / TLS
  135. - EAP-TTLS / EAP-MD5-Challenge
  136. - EAP-TTLS / EAP-GTC
  137. - EAP-TTLS / EAP-MSCHAPv2
  138. - EAP-TTLS / EAP-TLS
  139. - EAP-TTLS / CHAP
  140. - EAP-TTLS / PAP
  141. - EAP-TTLS / MSCHAP
  142. - EAP-TTLS / MSCHAPv2
  143. - EAP-TTLS / EAP-TNC (partial support; no authentication sequence)
  144. - EAP-SIM
  145. - LEAP
  146. Microsoft Windows Server 2003 / IAS
  147. - EAP-TLS
  148. - EAP-PEAPv0 / MSCHAPv2
  149. - EAP-PEAPv0 / TLS
  150. - EAP-MD5
  151. * IAS does not seem to support other EAP methods
  152. Funk Odyssey 2.01.00.653
  153. - EAP-TLS
  154. - EAP-PEAPv0 / MSCHAPv2
  155. - EAP-PEAPv0 / GTC
  156. - EAP-PEAPv1 / MSCHAPv2
  157. - EAP-PEAPv1 / GTC
  158. Note: PEAPv1 requires TLS key derivation to use label "client EAP encryption"
  159. - EAP-TTLS / CHAP (using FreeRADIUS as inner auth srv)
  160. - EAP-TTLS / MSCHAP
  161. - EAP-TTLS / MSCHAPv2
  162. - EAP-TTLS / PAP
  163. - EAP-TTLS / EAP-MD5-Challenge (using FreeRADIUS as inner auth srv)
  164. - EAP-TTLS / EAP-GTC (using FreeRADIUS as inner auth srv)
  165. - EAP-TTLS / EAP-MSCHAPv2 (using FreeRADIUS as inner auth srv)
  166. - EAP-TTLS / EAP-TLS (using FreeRADIUS as inner auth srv)
  167. * not supported in Odyssey:
  168. - EAP-MD5-Challenge
  169. - EAP-GTC
  170. - EAP-MSCHAPv2
  171. - EAP-PEAP / MD5-Challenge
  172. - EAP-PEAP / TLS
  173. Funk Steel-Belted Radius Enterprise Edition v4.71.739
  174. - EAP-MD5-Challenge
  175. - EAP-MSCHAPv2
  176. - EAP-TLS
  177. - EAP-PEAPv0 / MSCHAPv2
  178. - EAP-PEAPv0 / MD5
  179. - EAP-PEAPv0 / TLS
  180. - EAP-PEAPv1 / MSCHAPv2
  181. - EAP-PEAPv1 / MD5
  182. - EAP-PEAPv1 / GTC
  183. - EAP-PEAPv1 / TLS
  184. Note: PEAPv1 requires TLS key derivation to use label "client EAP encryption"
  185. - EAP-TTLS / CHAP
  186. - EAP-TTLS / MSCHAP
  187. - EAP-TTLS / MSCHAPv2
  188. - EAP-TTLS / PAP
  189. - EAP-TTLS / EAP-MD5-Challenge
  190. - EAP-TTLS / EAP-MSCHAPv2
  191. - EAP-TTLS / EAP-TLS
  192. Meetinghouse Aegis 1.1.4
  193. - EAP-MD5-Challenge
  194. - EAP-GTC
  195. - EAP-MSCHAPv2
  196. - EAP-TLS
  197. - EAP-PEAPv0 / MSCHAPv2
  198. - EAP-PEAPv0 / TLS
  199. - EAP-PEAPv0 / GTC
  200. - EAP-PEAPv0 / MD5-Challenge
  201. - EAP-PEAPv1 / MSCHAPv2
  202. - EAP-PEAPv1 / TLS
  203. - EAP-PEAPv1 / GTC
  204. - EAP-PEAPv1 / MD5-Challenge
  205. Note: PEAPv1 requires TLS key derivation to use label "client EAP encryption"
  206. - EAP-TTLS / CHAP
  207. - EAP-TTLS / MSCHAP
  208. - EAP-TTLS / MSCHAPv2
  209. - EAP-TTLS / PAP
  210. - EAP-TTLS / EAP-MD5-Challenge
  211. - EAP-TTLS / EAP-GTC
  212. - EAP-TTLS / EAP-MSCHAPv2
  213. * did not work
  214. - EAP-TTLS / EAP-TLS
  215. (Server rejects authentication without any reason in debug log. It
  216. looks like the inner TLS negotiation starts properly and the last
  217. packet from Supplicant looks like the one sent in the Phase 1. The
  218. server generates a valid looking reply in the same way as in Phase
  219. 1, but then ends up sending Access-Reject. Maybe an issue with TTLS
  220. fragmentation in the Aegis server(?) The packet seems to include
  221. 1328 bytes of EAP-Message and this may go beyond the fragmentation
  222. limit with AVP encapsulation and TLS tunneling. Note: EAP-PEAP/TLS
  223. did work, so this issue seems to be with something TTLS specific.)
  224. Radiator 3.17.1 (eval, with all patches up to and including 2007-05-25)
  225. - EAP-MD5-Challenge
  226. - EAP-GTC
  227. - EAP-OTP
  228. - EAP-MSCHAPv2
  229. - EAP-TLS
  230. - EAP-PEAPv0 / MSCHAPv2
  231. - EAP-PEAPv0 / GTC
  232. - EAP-PEAPv0 / OTP
  233. - EAP-PEAPv0 / MD5-Challenge
  234. - EAP-PEAPv0 / TLS
  235. Note: Needed to use unknown identity in outer auth and some times the server
  236. seems to get confused and fails to send proper Phase 2 data.
  237. - EAP-PEAPv1 / MSCHAPv2
  238. - EAP-PEAPv1 / GTC
  239. - EAP-PEAPv1 / OTP
  240. - EAP-PEAPv1 / MD5-Challenge
  241. - EAP-PEAPv1 / TLS
  242. Note: This has some additional requirements for EAPTLS_MaxFragmentSize.
  243. Using 1300 for outer auth and 500 for inner auth seemed to work.
  244. Note: Needed to use unknown identity in outer auth and some times the server
  245. seems to get confused and fails to send proper Phase 2 data.
  246. - EAP-TTLS / CHAP
  247. - EAP-TTLS / MSCHAP
  248. - EAP-TTLS / MSCHAPv2
  249. - EAP-TTLS / PAP
  250. - EAP-TTLS / EAP-MD5-Challenge
  251. - EAP-TTLS / EAP-GTC
  252. - EAP-TTLS / EAP-OTP
  253. - EAP-TTLS / EAP-MSCHAPv2
  254. - EAP-TTLS / EAP-TLS
  255. Note: This has some additional requirements for EAPTLS_MaxFragmentSize.
  256. Using 1300 for outer auth and 500 for inner auth seemed to work.
  257. - EAP-SIM
  258. - EAP-AKA
  259. - EAP-PSK
  260. - EAP-PAX
  261. - EAP-TNC
  262. Interlink Networks RAD-Series 6.1.2.7
  263. - EAP-MD5-Challenge
  264. - EAP-GTC
  265. - EAP-MSCHAPv2
  266. - EAP-TLS
  267. - EAP-PEAPv0 / MSCHAPv2
  268. - EAP-PEAPv0 / GTC
  269. - EAP-PEAPv0 / MD5-Challenge
  270. - EAP-PEAPv1 / MSCHAPv2
  271. - EAP-PEAPv1 / GTC
  272. - EAP-PEAPv1 / MD5-Challenge
  273. Note: PEAPv1 requires TLS key derivation to use label "client EAP encryption"
  274. - EAP-TTLS / CHAP
  275. - EAP-TTLS / MSCHAP
  276. - EAP-TTLS / MSCHAPv2
  277. - EAP-TTLS / PAP
  278. - EAP-TTLS / EAP-MD5-Challenge
  279. - EAP-TTLS / EAP-GTC
  280. - EAP-TTLS / EAP-MSCHAPv2
  281. - EAP-TTLS / EAP-TLS
  282. * did not work
  283. - EAP-PEAPv0 / TLS
  284. - EAP-PEAPv1 / TLS
  285. (Failed to decrypt Phase 2 data)
  286. Lucent NavisRadius 4.4.0
  287. - EAP-MD5-Challenge
  288. - EAP-GTC
  289. - EAP-MSCHAPv2
  290. - EAP-TLS
  291. - EAP-PEAPv0 / MD5-Challenge
  292. - EAP-PEAPv0 / MSCHAPv2
  293. - EAP-PEAPv0 / GTC
  294. - EAP-PEAPv0 / TLS
  295. - EAP-PEAPv1 / MD5-Challenge
  296. - EAP-PEAPv1 / MSCHAPv2
  297. - EAP-PEAPv1 / GTC
  298. - EAP-PEAPv1 / TLS
  299. "IETF Draft 5" mode requires phase1="peap_outer_success=0 peaplabel=1"
  300. 'Cisco ACU 5.05' mode works without phase1 configuration
  301. - EAP-TTLS / CHAP
  302. - EAP-TTLS / MSCHAP
  303. - EAP-TTLS / MSCHAPv2
  304. - EAP-TTLS / PAP
  305. - EAP-TTLS / EAP-MD5-Challenge
  306. - EAP-TTLS / EAP-MSCHAPv2
  307. - EAP-TTLS / EAP-GTC
  308. - EAP-TTLS / EAP-TLS
  309. Note: user certificate from NavisRadius had private key in a format
  310. that wpa_supplicant could not use. Converting this to PKCS#12 and then
  311. back to PEM allowed wpa_supplicant to use the key.
  312. hostapd v0.3.3
  313. - EAP-MD5-Challenge
  314. - EAP-GTC
  315. - EAP-MSCHAPv2
  316. - EAP-TLS
  317. - EAP-PEAPv0 / MSCHAPv2
  318. - EAP-PEAPv0 / GTC
  319. - EAP-PEAPv0 / MD5-Challenge
  320. - EAP-PEAPv1 / MSCHAPv2
  321. - EAP-PEAPv1 / GTC
  322. - EAP-PEAPv1 / MD5-Challenge
  323. - EAP-TTLS / CHAP
  324. - EAP-TTLS / MSCHAP
  325. - EAP-TTLS / MSCHAPv2
  326. - EAP-TTLS / PAP
  327. - EAP-TTLS / EAP-MD5-Challenge
  328. - EAP-TTLS / EAP-GTC
  329. - EAP-TTLS / EAP-MSCHAPv2
  330. - EAP-SIM
  331. - EAP-PAX
  332. Cisco Secure ACS 3.3(1) for Windows Server
  333. - PEAPv1/GTC worked, but PEAPv0/GTC failed in the end after password was
  334. sent successfully; ACS is replying with empty PEAP packet (TLS ACK);
  335. wpa_supplicant tries to decrypt this.. Replying with TLS ACK and and
  336. marking the connection completed was enough to make this work.
  337. PEAPv1:
  338. Funk Odyssey 2.01.00.653:
  339. - uses tunneled EAP-Success, expects reply in tunnel or TLS ACK, sends MPPE
  340. keys with outer EAP-Success message after this
  341. - uses label "client EAP encryption"
  342. - (peap_outer_success 1 and 2 work)
  343. Funk Steel-Belted Radius Enterprise Edition v4.71.739
  344. - uses tunneled EAP-Success, expects reply in tunnel or TLS ACK, sends MPPE
  345. keys with outer EAP-Success message after this
  346. - uses label "client EAP encryption"
  347. - (peap_outer_success 1 and 2 work)
  348. Radiator 3.9:
  349. - uses TLV Success and Reply, sends MPPE keys with outer EAP-Success message
  350. after this
  351. - uses label "client PEAP encryption"
  352. Lucent NavisRadius 4.4.0 (in "IETF Draft 5" mode):
  353. - sends tunneled EAP-Success with MPPE keys and expects the authentication to
  354. terminate at this point (gets somewhat confused with reply to this)
  355. - uses label "client PEAP encryption"
  356. - phase1="peap_outer_success=0 peaplabel=1"
  357. Lucent NavisRadius 4.4.0 (in "Cisco ACU 5.05" mode):
  358. - sends tunneled EAP-Success with MPPE keys and expects to receive TLS ACK
  359. as a reply
  360. - uses label "client EAP encryption"
  361. Meetinghouse Aegis 1.1.4
  362. - uses tunneled EAP-Success, expects reply in tunnel or TLS ACK, sends MPPE
  363. keys with outer EAP-Success message after this
  364. - uses label "client EAP encryption"
  365. - peap_outer_success 1 and 2 work