eap_testing.txt 14 KB

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