| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427 | 
							
- Network Working Group                                           J. Arkko
 
- Request for Comments: 4187                                      Ericsson
 
- Category: Informational                                     H. Haverinen
 
-                                                                    Nokia
 
-                                                             January 2006
 
-       Extensible Authentication Protocol Method for 3rd Generation
 
-                Authentication and Key Agreement (EAP-AKA)
 
- Status of This Memo
 
-    This memo provides information for the Internet community.  It does
 
-    not specify an Internet standard of any kind.  Distribution of this
 
-    memo is unlimited.
 
- Copyright Notice
 
-    Copyright (C) The Internet Society (2006).
 
- IESG Note
 
-    The EAP-AKA protocol was developed by 3GPP.  The documentation of
 
-    EAP-AKA is provided as information to the Internet community.  While
 
-    the EAP WG has verified that EAP-AKA is compatible with EAP as
 
-    defined in RFC 3748, no other review has been done, including
 
-    validation of the security claims.  The IETF has also not reviewed
 
-    the security of the underlying UMTS AKA algorithms.
 
- Abstract
 
-    This document specifies an Extensible Authentication Protocol (EAP)
 
-    mechanism for authentication and session key distribution that uses
 
-    the Authentication and Key Agreement (AKA) mechanism.  AKA is used in
 
-    the 3rd generation mobile networks Universal Mobile
 
-    Telecommunications System (UMTS) and CDMA2000.  AKA is based on
 
-    symmetric keys, and typically runs in a Subscriber Identity Module,
 
-    which is a UMTS Subscriber Identity Module, USIM, or a (Removable)
 
-    User Identity Module, (R)UIM, similar to a smart card.
 
-    EAP-AKA includes optional identity privacy support, optional result
 
-    indications, and an optional fast re-authentication procedure.
 
- Arkko & Haverinen            Informational                      [Page 1]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- Table of Contents
 
-    1. Introduction and Motivation .....................................4
 
-    2. Terms and Conventions Used in This Document .....................5
 
-    3. Protocol Overview ...............................................9
 
-    4. Operation ......................................................15
 
-       4.1. Identity Management .......................................15
 
-            4.1.1. Format, Generation, and Usage of Peer Identities ...15
 
-            4.1.2. Communicating the Peer Identity to the Server ......21
 
-            4.1.3. Choice of Identity for the EAP-Response/Identity ...23
 
-            4.1.4. Server Operation in the Beginning of
 
-                   EAP-AKA Exchange ...................................23
 
-            4.1.5. Processing of EAP-Request/AKA-Identity by
 
-                   the Peer ...........................................24
 
-            4.1.6. Attacks against Identity Privacy ...................25
 
-            4.1.7. Processing of AT_IDENTITY by the Server ............26
 
-       4.2. Message Sequence Examples (Informative) ...................27
 
-            4.2.1. Usage of AT_ANY_ID_REQ .............................27
 
-            4.2.2. Fall Back on Full Authentication ...................28
 
-            4.2.3. Requesting the Permanent Identity 1 ................29
 
-            4.2.4. Requesting the Permanent Identity 2 ................30
 
-            4.2.5. Three EAP/AKA-Identity Round Trips .................30
 
-    5. Fast Re-Authentication .........................................32
 
-       5.1. General ...................................................32
 
-       5.2. Comparison to AKA .........................................33
 
-       5.3. Fast Re-Authentication Identity ...........................33
 
-       5.4. Fast Re-Authentication Procedure ..........................35
 
-       5.5. Fast Re-Authentication Procedure when Counter is
 
-            Too Small .................................................37
 
-    6. EAP-AKA Notifications ..........................................38
 
-       6.1. General ...................................................38
 
-       6.2. Result Indications ........................................39
 
-       6.3. Error Cases ...............................................40
 
-            6.3.1. Peer Operation .....................................41
 
-            6.3.2. Server Operation ...................................41
 
-            6.3.3. EAP-Failure ........................................42
 
-            6.3.4. EAP-Success ........................................42
 
-    7. Key Generation .................................................43
 
-    8. Message Format and Protocol Extensibility ......................45
 
-       8.1. Message Format ............................................45
 
-       8.2. Protocol Extensibility ....................................47
 
-    9. Messages .......................................................48
 
-       9.1. EAP-Request/AKA-Identity ..................................48
 
-       9.2. EAP-Response/AKA-Identity .................................48
 
-       9.3. EAP-Request/AKA-Challenge .................................49
 
-       9.4. EAP-Response/AKA-Challenge ................................49
 
-       9.5. EAP-Response/AKA-Authentication-Reject ....................50
 
-       9.6. EAP-Response/AKA-Synchronization-Failure ..................50
 
- Arkko & Haverinen            Informational                      [Page 2]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-       9.7. EAP-Request/AKA-Reauthentication ..........................50
 
-       9.8. EAP-Response/AKA-Reauthentication .........................51
 
-       9.9. EAP-Response/AKA-Client-Error .............................52
 
-       9.10. EAP-Request/AKA-Notification .............................52
 
-       9.11. EAP-Response/AKA-Notification ............................52
 
-    10. Attributes ....................................................53
 
-       10.1. Table of Attributes ......................................53
 
-       10.2. AT_PERMANENT_ID_REQ ......................................54
 
-       10.3. AT_ANY_ID_REQ ............................................54
 
-       10.4. AT_FULLAUTH_ID_REQ .......................................54
 
-       10.5. AT_IDENTITY ..............................................55
 
-       10.6. AT_RAND ..................................................55
 
-       10.7. AT_AUTN ..................................................56
 
-       10.8. AT_RES ...................................................56
 
-       10.9. AT_AUTS ..................................................57
 
-       10.10. AT_NEXT_PSEUDONYM .......................................57
 
-       10.11. AT_NEXT_REAUTH_ID .......................................58
 
-       10.12. AT_IV, AT_ENCR_DATA, and AT_PADDING .....................58
 
-       10.13. AT_CHECKCODE ............................................60
 
-       10.14. AT_RESULT_IND ...........................................62
 
-       10.15. AT_MAC ..................................................63
 
-       10.16. AT_COUNTER ..............................................64
 
-       10.17. AT_COUNTER_TOO_SMALL ....................................64
 
-       10.18. AT_NONCE_S ..............................................65
 
-       10.19. AT_NOTIFICATION .........................................65
 
-       10.20. AT_CLIENT_ERROR_CODE ....................................66
 
-    11. IANA and Protocol Numbering Considerations ....................66
 
-    12. Security Considerations .......................................68
 
-       12.1. Identity Protection ......................................69
 
-       12.2. Mutual Authentication ....................................69
 
-       12.3. Flooding the Authentication Centre .......................69
 
-       12.4. Key Derivation ...........................................70
 
-       12.5. Brute-Force and Dictionary Attacks .......................70
 
-       12.6. Protection, Replay Protection, and Confidentiality .......70
 
-       12.7. Negotiation Attacks ......................................71
 
-       12.8. Protected Result Indications .............................72
 
-       12.9. Man-in-the-Middle Attacks ................................72
 
-       12.10. Generating Random Numbers ...............................73
 
-    13. Security Claims ...............................................73
 
-    14. Acknowledgements and Contributions ............................74
 
-    15. References ....................................................74
 
-       15.1. Normative References .....................................74
 
-       15.2. Informative References ...................................76
 
-    Appendix A.  Pseudo-Random Number Generator .......................77
 
- Arkko & Haverinen            Informational                      [Page 3]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 1.  Introduction and Motivation
 
-    This document specifies an Extensible Authentication Protocol (EAP)
 
-    mechanism for authentication and session key distribution that uses
 
-    the 3rd generation Authentication and Key Agreement mechanism,
 
-    specified for Universal Mobile Telecommunications System (UMTS) in
 
-    [TS33.102] and for CDMA2000 in [S.S0055-A].  UMTS and CDMA2000 are
 
-    global 3rd generation mobile network standards that use the same AKA
 
-    mechanism.
 
-    2nd generation mobile networks and 3rd generation mobile networks use
 
-    different authentication and key agreement mechanisms.  The Global
 
-    System for Mobile communications (GSM) is a 2nd generation mobile
 
-    network standard, and EAP-SIM [EAP-SIM] specifies an EAP mechanism
 
-    that is based on the GSM authentication and key agreement primitives.
 
-    AKA is based on challenge-response mechanisms and symmetric
 
-    cryptography.  AKA typically runs in a UMTS Subscriber Identity
 
-    Module (USIM) or a CDMA2000 (Removable) User Identity Module
 
-    ((R)UIM).  In this document, both modules are referred to as identity
 
-    modules.  Compared to the 2nd generation mechanisms such as GSM AKA,
 
-    the 3rd generation AKA provides substantially longer key lengths and
 
-    mutual authentication.
 
-    The introduction of AKA inside EAP allows several new applications.
 
-    These include the following:
 
-    o  The use of the AKA also as a secure PPP authentication method in
 
-       devices that already contain an identity module.
 
-    o  The use of the 3rd generation mobile network authentication
 
-       infrastructure in the context of wireless LANs
 
-    o  Relying on AKA and the existing infrastructure in a seamless way
 
-       with any other technology that can use EAP.
 
-    AKA works in the following manner:
 
-    o  The identity module and the home environment have agreed on a
 
-       secret key beforehand.  (The "home environment" refers to the home
 
-       operator's authentication network infrastructure.)
 
-    o  The actual authentication process starts by having the home
 
-       environment produce an authentication vector, based on the secret
 
-       key and a sequence number.  The authentication vector contains a
 
-       random part RAND, an authenticator part AUTN used for
 
-       authenticating the network to the identity module, an expected
 
-       result part XRES, a 128-bit session key for integrity check IK,
 
-       and a 128-bit session key for encryption CK.
 
- Arkko & Haverinen            Informational                      [Page 4]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    o  The RAND and the AUTN are delivered to the identity module.
 
-    o  The identity module verifies the AUTN, again based on the secret
 
-       key and the sequence number.  If this process is successful (the
 
-       AUTN is valid and the sequence number used to generate AUTN is
 
-       within the correct range), the identity module produces an
 
-       authentication result RES and sends it to the home environment.
 
-    o  The home environment verifies the correct result from the identity
 
-       module.  If the result is correct, IK and CK can be used to
 
-       protect further communications between the identity module and the
 
-       home environment.
 
-    When verifying AUTN, the identity module may detect that the sequence
 
-    number the network uses is not within the correct range.  In this
 
-    case, the identity module calculates a sequence number
 
-    synchronization parameter AUTS and sends it to the network.  AKA
 
-    authentication may then be retried with a new authentication vector
 
-    generated using the synchronized sequence number.
 
-    For a specification of the AKA mechanisms and how the cryptographic
 
-    values AUTN, RES, IK, CK and AUTS are calculated, see [TS33.102] for
 
-    UMTS and [S.S0055-A] for CDMA2000.
 
-    In EAP-AKA, the EAP server node obtains the authentication vectors,
 
-    compares RES and XRES, and uses CK and IK in key derivation.
 
-    In the 3rd generation mobile networks, AKA is used for both radio
 
-    network authentication and IP multimedia service authentication
 
-    purposes.  Different user identities and formats are used for these;
 
-    the radio network uses the International Mobile Subscriber Identifier
 
-    (IMSI), whereas the IP multimedia service uses the Network Access
 
-    Identifier (NAI) [RFC4282].
 
- 2.  Terms and Conventions Used in This Document
 
-    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
 
-    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
 
-    document are to be interpreted as described in [RFC2119].
 
-    The terms and abbreviations "authenticator", "backend authentication
 
-    server", "EAP server", "peer", "Silently Discard", "Master Session
 
-    Key (MSK)", and "Extended Master Session Key (EMSK)" in this document
 
-    are to be interpreted as described in [RFC3748].
 
-    This document frequently uses the following terms and abbreviations.
 
-    The AKA parameters are specified in detail in [TS33.102] for UMTS and
 
-    [S.S0055-A] for CDMA2000.
 
- Arkko & Haverinen            Informational                      [Page 5]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    AAA protocol
 
-          Authentication, Authorization and Accounting protocol
 
-    AKA
 
-          Authentication and Key Agreement
 
-    AuC
 
-          Authentication Centre.  The mobile network element that can
 
-          authenticate subscribers in the mobile networks.
 
-    AUTN
 
-          AKA parameter.  AUTN is an authentication value generated by
 
-          the AuC, which, together with the RAND, authenticates the
 
-          server to the peer, 128 bits.
 
-    AUTS
 
-          AKA parameter.  A value generated by the peer upon
 
-          experiencing a synchronization failure, 112 bits.
 
-    EAP
 
-          Extensible Authentication Protocol [RFC3748]
 
-    Fast Re-Authentication
 
-          An EAP-AKA authentication exchange that is based on keys
 
-          derived upon a preceding full authentication exchange.  The
 
-          3rd Generation AKA is not used in the fast re-authentication
 
-          procedure.
 
-    Fast Re-Authentication Identity
 
-          A fast re-authentication identity of the peer, including an
 
-          NAI realm portion in environments where a realm is used.
 
-          Used on re-authentication only.
 
-    Fast Re-Authentication Username
 
-          The username portion of fast re-authentication identity,
 
-          i.e., not including any realm portions.
 
- Arkko & Haverinen            Informational                      [Page 6]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    Full Authentication
 
-          An EAP-AKA authentication exchange that is based on the
 
-          3rd Generation AKA procedure.
 
-    GSM
 
-          Global System for Mobile communications.
 
-    NAI
 
-          Network Access Identifier [RFC4282]
 
-    Identity Module
 
-          Identity module is used in this document to refer to the
 
-          part of the mobile device that contains authentication and
 
-          key agreement primitives.  The identity module may be an
 
-          integral part of the mobile device or it may be an application
 
-          on a smart card distributed by a mobile operator.  USIM and
 
-          (R)UIM are identity modules.
 
-    Nonce
 
-          A value that is used at most once or that is never repeated
 
-          within the same cryptographic context.  In general, a nonce can
 
-          be predictable (e.g., a counter) or unpredictable (e.g., a
 
-          random value).  Because some cryptographic properties may
 
-          depend on the randomness of the nonce, attention should be paid
 
-          to whether a nonce is required to be random or not.  In this
 
-          document, the term nonce is only used to denote random nonces,
 
-          and it is not used to denote counters.
 
-    Permanent Identity
 
-          The permanent identity of the peer, including an NAI realm
 
-          portion in environments where a realm is used.  The permanent
 
-          identity is usually based on the IMSI.  Used on full
 
-          authentication only.
 
-    Permanent Username
 
-          The username portion of permanent identity, i.e., not including
 
-          any realm portions.
 
- Arkko & Haverinen            Informational                      [Page 7]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    Pseudonym Identity
 
-          A pseudonym identity of the peer, including an NAI realm
 
-          portion in environments where a realm is used.  Used on full
 
-          authentication only.
 
-    Pseudonym Username
 
-          The username portion of pseudonym identity, i.e., not including
 
-          any realm portions.
 
-    RAND
 
-          An AKA parameter.  Random number generated by the AuC,
 
-          128 bits.
 
-    RES
 
-          Authentication result from the peer, which, together with
 
-          the RAND, authenticates the peer to the server,
 
-          128 bits.
 
-    (R)UIM
 
-          CDMA2000 (Removable) User Identity Module.  (R)UIM is an
 
-          application that is resident on devices such as smart cards,
 
-          which may be fixed in the terminal or distributed by CDMA2000
 
-          operators (when removable).
 
-    SQN
 
-          An AKA parameter.  Sequence number used in the authentication
 
-          process, 48 bits.
 
-    SIM
 
-          Subscriber Identity Module.  The SIM is traditionally a smart
 
-          card distributed by a GSM operator.
 
-    SRES
 
-          The authentication result parameter in GSM, corresponds to
 
-          the RES parameter in 3G AKA, 32 bits.
 
- Arkko & Haverinen            Informational                      [Page 8]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    UAK
 
-          UIM Authentication Key, used in CDMA2000 AKA.  Both the
 
-          identity module and the network can optionally generate the UAK
 
-          during the AKA computation in CDMA2000.  UAK is not used in
 
-          this version of EAP-AKA.
 
-    UIM
 
-          Please see (R)UIM.
 
-    USIM
 
-          UMTS Subscriber Identity Module.  USIM is an application that
 
-          is resident on devices such as smart cards distributed by UMTS
 
-          operators.
 
- 3.  Protocol Overview
 
-    Figure 1 shows the basic, successful full authentication exchange in
 
-    EAP-AKA, when optional result indications are not used.  The
 
-    authenticator typically communicates with an EAP server that is
 
-    located on a backend authentication server using an AAA protocol.
 
-    The authenticator shown in the figure is often simply relaying EAP
 
-    messages to and from the EAP server, but these backend AAA
 
-    communications are not shown.  At the minimum, EAP-AKA uses two
 
-    roundtrips to authenticate and authorize the peer and generate
 
-    session keys.  As in other EAP schemes, an identity request/response
 
-    message pair is usually exchanged first.  On full authentication, the
 
-    peer's identity response includes either the user's International
 
-    Mobile Subscriber Identity (IMSI), or a temporary identity
 
-    (pseudonym) if identity privacy is in effect, as specified in
 
-    Section 4.1.  (As specified in [RFC3748], the initial identity
 
-    request is not required, and MAY be bypassed in cases where the
 
-    network can presume the identity, such as when using leased lines,
 
-    dedicated dial-ups, etc.  Please see Section 4.1.2 for specification
 
-    of how to obtain the identity via EAP AKA messages.)
 
-    After obtaining the subscriber identity, the EAP server obtains an
 
-    authentication vector (RAND, AUTN, RES, CK, IK) for use in
 
-    authenticating the subscriber.  From the vector, the EAP server
 
-    derives the keying material, as specified in Section 6.4.  The vector
 
-    may be obtained by contacting an Authentication Centre (AuC) on the
 
-    mobile network; for example, per UMTS specifications, several vectors
 
-    may be obtained at a time.  Vectors may be stored in the EAP server
 
-    for use at a later time, but they may not be reused.
 
- Arkko & Haverinen            Informational                      [Page 9]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    In CDMA2000, the vector may include a sixth value called the User
 
-    Identity Module Authentication Key (UAK).  This key is not used in
 
-    EAP-AKA.
 
-    Next, the EAP server starts the actual AKA protocol by sending an
 
-    EAP-Request/AKA-Challenge message.  EAP-AKA packets encapsulate
 
-    parameters in attributes, encoded in a Type, Length, Value format.
 
-    The packet format and the use of attributes are specified in
 
-    Section 8.  The EAP-Request/AKA-Challenge message contains a RAND
 
-    random number (AT_RAND), a network authentication token (AT_AUTN),
 
-    and a message authentication code (AT_MAC).  The EAP-Request/
 
-    AKA-Challenge message MAY optionally contain encrypted data, which is
 
-    used for identity privacy and fast re-authentication support, as
 
-    described in Section 4.1.  The AT_MAC attribute contains a message
 
-    authentication code covering the EAP packet.  The encrypted data is
 
-    not shown in the figures of this section.
 
-    The peer runs the AKA algorithm (typically using an identity module)
 
-    and verifies the AUTN.  If this is successful, the peer is talking to
 
-    a legitimate EAP server and proceeds to send the EAP-Response/
 
-    AKA-Challenge.  This message contains a result parameter that allows
 
-    the EAP server, in turn, to authenticate the peer, and the AT_MAC
 
-    attribute to integrity protect the EAP message.
 
-    The EAP server verifies that the RES and the MAC in the EAP-Response/
 
-    AKA-Challenge packet are correct.  Because protected success
 
-    indications are not used in this example, the EAP server sends the
 
-    EAP-Success packet, indicating that the authentication was
 
-    successful.  (Protected success indications are discussed in
 
-    Section 6.2.)  The EAP server may also include derived keying
 
-    material in the message it sends to the authenticator.  The peer has
 
-    derived the same keying material, so the authenticator does not
 
-    forward the keying material to the peer along with EAP-Success.
 
- Arkko & Haverinen            Informational                     [Page 10]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-        Peer                                             Authenticator
 
-           |                      EAP-Request/Identity             |
 
-           |<------------------------------------------------------|
 
-           |                                                       |
 
-           | EAP-Response/Identity                                 |
 
-           | (Includes user's NAI)                                 |
 
-           |------------------------------------------------------>|
 
-           |                            +------------------------------+
 
-           |                            | Server runs AKA algorithms,  |
 
-           |                            | generates RAND and AUTN.     |
 
-           |                            +------------------------------+
 
-           |                         EAP-Request/AKA-Challenge     |
 
-           |                         (AT_RAND, AT_AUTN, AT_MAC)    |
 
-           |<------------------------------------------------------|
 
-       +-------------------------------------+                     |
 
-       | Peer runs AKA algorithms,           |                     |
 
-       | verifies AUTN and MAC, derives RES  |                     |
 
-       | and session key                     |                     |
 
-       +-------------------------------------+                     |
 
-           | EAP-Response/AKA-Challenge                            |
 
-           | (AT_RES, AT_MAC)                                      |
 
-           |------------------------------------------------------>|
 
-           |                          +--------------------------------+
 
-           |                          | Server checks the given RES,   |
 
-           |                          | and MAC and finds them correct.|
 
-           |                          +--------------------------------+
 
-           |                                          EAP-Success  |
 
-           |<------------------------------------------------------|
 
-               Figure 1: EAP-AKA full authentication procedure
 
- Arkko & Haverinen            Informational                     [Page 11]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    Figure 2 shows how the EAP server rejects the Peer due to a failed
 
-    authentication.
 
-        Peer                                              Authenticator
 
-           |                      EAP-Request/Identity             |
 
-           |<------------------------------------------------------|
 
-           |                                                       |
 
-           | EAP-Response/Identity                                 |
 
-           | (Includes user's NAI)                                 |
 
-           |------------------------------------------------------>|
 
-           |                            +------------------------------+
 
-           |                            | Server runs AKA algorithms,  |
 
-           |                            | generates RAND and AUTN.     |
 
-           |                            +------------------------------+
 
-           |                      EAP-Request/AKA-Challenge        |
 
-           |                      (AT_RAND, AT_AUTN, AT_MAC)       |
 
-           |<------------------------------------------------------|
 
-       +-------------------------------------+                     |
 
-       | Peer runs AKA algorithms,           |                     |
 
-       | possibly verifies AUTN, and sends an|                     |
 
-       | invalid response                    |                     |
 
-       +-------------------------------------+                     |
 
-           | EAP-Response/AKA-Challenge                            |
 
-           | (AT_RES, AT_MAC)                                      |
 
-           |------------------------------------------------------>|
 
-           |              +------------------------------------------+
 
-           |              | Server checks the given RES and the MAC, |
 
-           |              | and finds one of them incorrect.         |
 
-           |              +------------------------------------------+
 
-           |                      EAP-Request/AKA-Notification     |
 
-           |<------------------------------------------------------|
 
-           | EAP-Response/AKA-Notification                         |
 
-           |------------------------------------------------------>|
 
-           |                                          EAP-Failure  |
 
-           |<------------------------------------------------------|
 
-                     Figure 2: Peer authentication fails
 
- Arkko & Haverinen            Informational                     [Page 12]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    Figure 3 shows the peer rejecting the AUTN of the EAP server.
 
-    The peer sends an explicit error message (EAP-Response/
 
-    AKA-Authentication-Reject) to the EAP server, as usual in AKA when
 
-    AUTN is incorrect.  This allows the EAP server to produce the same
 
-    error statistics that AKA generally produces in UMTS or CDMA2000.
 
-         Peer                                             Authenticator
 
-           |                      EAP-Request/Identity             |
 
-           |<------------------------------------------------------|
 
-           | EAP-Response/Identity                                 |
 
-           | (Includes user's NAI)                                 |
 
-           |------------------------------------------------------>|
 
-           |                            +------------------------------+
 
-           |                            | Server runs AKA algorithms,  |
 
-           |                            | generates RAND and a bad AUTN|
 
-           |                            +------------------------------+
 
-           |                         EAP-Request/AKA-Challenge     |
 
-           |                         (AT_RAND, AT_AUTN, AT_MAC)    |
 
-           |<------------------------------------------------------|
 
-       +-------------------------------------+                     |
 
-       | Peer runs AKA algorithms            |                     |
 
-       | and discovers AUTN that can not be  |                     |
 
-       | verified                            |                     |
 
-       +-------------------------------------+                     |
 
-           | EAP-Response/AKA-Authentication-Reject                |
 
-           |------------------------------------------------------>|
 
-           |                                          EAP-Failure  |
 
-           |<------------------------------------------------------|
 
-                   Figure 3: Network authentication fails
 
-    The AKA uses shared secrets between the Peer and the Peer's home
 
-    operator, together with a sequence number, to actually perform an
 
-    authentication.  In certain circumstances, shown in Figure 4, it is
 
-    possible for the sequence numbers to get out of sequence.
 
- Arkko & Haverinen            Informational                     [Page 13]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-         Peer                                             Authenticator
 
-           |                      EAP-Request/Identity             |
 
-           |<------------------------------------------------------|
 
-           | EAP-Response/Identity                                 |
 
-           | (Includes user's NAI)                                 |
 
-           |------------------------------------------------------>|
 
-           |                            +------------------------------+
 
-           |                            | Server runs AKA algorithms,  |
 
-           |                            | generates RAND and AUTN.     |
 
-           |                            +------------------------------+
 
-           |                         EAP-Request/AKA-Challenge     |
 
-           |                         (AT_RAND, AT_AUTN, AT_MAC)    |
 
-           |<------------------------------------------------------|
 
-       +-------------------------------------+                     |
 
-       | Peer runs AKA algorithms            |                     |
 
-       | and discovers AUTN that contains an |                     |
 
-       | inappropriate sequence number       |                     |
 
-       +-------------------------------------+                     |
 
-           | EAP-Response/AKA-Synchronization-Failure              |
 
-           | (AT_AUTS)                                             |
 
-           |------------------------------------------------------>|
 
-           |                              +---------------------------+
 
-           |                              | Perform resynchronization |
 
-           |                              | Using AUTS and            |
 
-           |                              | the sent RAND             |
 
-           |                              +---------------------------+
 
-           |                                                       |
 
-                  Figure 4: Sequence number synchronization
 
-    After the resynchronization process has taken place in the server and
 
-    AAA side, the process continues by the server side sending a new
 
-    EAP-Request/AKA-Challenge message.
 
-    In addition to the full authentication scenarios described above,
 
-    EAP-AKA includes a fast re-authentication procedure, which is
 
-    specified in Section 5.  Fast re-authentication is based on keys
 
-    derived on full authentication.  If the peer has maintained state
 
-    information for re-authentication and wants to use fast
 
-    re-authentication, then the peer indicates this by using a specific
 
-    fast re-authentication identity instead of the permanent identity or
 
-    a pseudonym identity.
 
- Arkko & Haverinen            Informational                     [Page 14]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 4.  Operation
 
- 4.1.  Identity Management
 
- 4.1.1.  Format, Generation, and Usage of Peer Identities
 
- 4.1.1.1.  General
 
-    In the beginning of EAP authentication, the Authenticator or the EAP
 
-    server usually issues the EAP-Request/Identity packet to the peer.
 
-    The peer responds with EAP-Response/Identity, which contains the
 
-    user's identity.  The formats of these packets are specified in
 
-    [RFC3748].
 
-    Subscribers of mobile networks are identified with the International
 
-    Mobile Subscriber Identity (IMSI) [TS23.003].  The IMSI is a string
 
-    of not more than 15 digits.  It is composed of a Mobile Country Code
 
-    (MCC) of 3 digits, a Mobile Network Code (MNC) of 2 or 3 digits, and
 
-    a Mobile Subscriber Identification Number (MSIN) of not more than 10
 
-    digits.  MCC and MNC uniquely identify the GSM operator and help
 
-    identify the AuC from which the authentication vectors need to be
 
-    retrieved for this subscriber.
 
-    Internet AAA protocols identify users with the Network Access
 
-    Identifier (NAI) [RFC4282].  When used in a roaming environment, the
 
-    NAI is composed of a username and a realm, separated with "@"
 
-    (username@realm).  The username portion identifies the subscriber
 
-    within the realm.
 
-    This section specifies the peer identity format used in EAP-AKA.  In
 
-    this document, the term identity or peer identity refers to the whole
 
-    identity string that is used to identify the peer.  The peer identity
 
-    may include a realm portion.  "Username" refers to the portion of the
 
-    peer identity that identifies the user, i.e., the username does not
 
-    include the realm portion.
 
- 4.1.1.2.  Identity Privacy Support
 
-    EAP-AKA includes optional identity privacy (anonymity) support that
 
-    can be used to hide the cleartext permanent identity and thereby make
 
-    the subscriber's EAP exchanges untraceable to eavesdroppers.  Because
 
-    the permanent identity never changes, revealing it would help
 
-    observers to track the user.  The permanent identity is usually based
 
-    on the IMSI, which may further help the tracking, because the same
 
-    identifier may be used in other contexts as well.  Identity privacy
 
-    is based on temporary identities, or pseudonyms, which are equivalent
 
- Arkko & Haverinen            Informational                     [Page 15]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    to but separate from the Temporary Mobile Subscriber Identities
 
-    (TMSI) that are used on cellular networks.  Please see Section 12.1
 
-    for security considerations regarding identity privacy.
 
- 4.1.1.3.  Username Types in EAP-AKA Identities
 
-    There are three types of usernames in EAP-AKA peer identities:
 
-    (1) Permanent usernames.  For example,
 
-    0123456789098765@myoperator.com might be a valid permanent identity.
 
-    In this example, 0123456789098765 is the permanent username.
 
-    (2) Pseudonym usernames.  For example, 2s7ah6n9q@myoperator.com might
 
-    be a valid pseudonym identity.  In this example, 2s7ah6n9q is the
 
-    pseudonym username.
 
-    (3) Fast re-authentication usernames.  For example,
 
-    43953754@myoperator.com might be a valid fast re-authentication
 
-    identity.  In this case, 43953754 is the fast re-authentication
 
-    username.  Unlike permanent usernames and pseudonym usernames, fast
 
-    re-authentication usernames are one-time identifiers, which are not
 
-    re-used across EAP exchanges.
 
-    The first two types of identities are used only on full
 
-    authentication, and the last type only on fast re-authentication.
 
-    When the optional identity privacy support is not used, the
 
-    non-pseudonym permanent identity is used on full authentication.  The
 
-    fast re-authentication exchange is specified in Section 5.
 
- 4.1.1.4.  Username Decoration
 
-    In some environments, the peer may need to decorate the identity by
 
-    prepending or appending the username with a string, in order to
 
-    indicate supplementary AAA routing information in addition to the NAI
 
-    realm.  (The usage of an NAI realm portion is not considered to be
 
-    decoration.)  Username decoration is out of the scope of this
 
-    document.  However, it should be noted that username decoration might
 
-    prevent the server from recognizing a valid username.  Hence,
 
-    although the peer MAY use username decoration in the identities that
 
-    the peer includes in EAP-Response/Identity, and although the EAP
 
-    server MAY accept a decorated peer username in this message, the peer
 
-    or the EAP server MUST NOT decorate any other peer identities that
 
-    are used in various EAP-AKA attributes.  Only the identity used in
 
-    EAP-Response/Identity may be decorated.
 
- Arkko & Haverinen            Informational                     [Page 16]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 4.1.1.5.  NAI Realm Portion
 
-    The peer MAY include a realm portion in the peer identity, as per the
 
-    NAI format.  The use of a realm portion is not mandatory.
 
-    If a realm is used, the realm MAY be chosen by the subscriber's home
 
-    operator and it MAY be a configurable parameter in the EAP-AKA peer
 
-    implementation.  In this case, the peer is typically configured with
 
-    the NAI realm of the home operator.  Operators MAY reserve a specific
 
-    realm name for EAP-AKA users.  This convention makes it easy to
 
-    recognize that the NAI identifies an AKA subscriber.  Such a reserved
 
-    NAI realm may be useful as a hint of the first authentication method
 
-    to use during method negotiation.  When the peer is using a pseudonym
 
-    username instead of the permanent username, the peer selects the
 
-    realm name portion similarly to how it selects the realm portion when
 
-    using the permanent username.
 
-    If no configured realm name is available, the peer MAY derive the
 
-    realm name from the MCC and MNC portions of the IMSI.  A RECOMMENDED
 
-    way to derive the realm from the IMSI, using the realm
 
-    3gppnetwork.org, will be specified in [TS23.003].
 
-    Some old implementations derive the realm name from the IMSI by
 
-    concatenating "mnc", the MNC digits of IMSI, ".mcc", the MCC digits
 
-    of IMSI, and ".owlan.org".  For example, if the IMSI is
 
-    123456789098765, and the MNC is three digits long, then the derived
 
-    realm name is "mnc456.mcc123.owlan.org".  As there are no DNS servers
 
-    running at owlan.org, these realm names can only be used with
 
-    manually configured AAA routing.  New implementations SHOULD use the
 
-    mechanism specified in [TS23.003] instead of owlan.org.
 
-    The IMSI is a string of digits without any explicit structure, so the
 
-    peer may not be able to determine the length of the MNC portion.  If
 
-    the peer is not able to determine whether the MNC is two or three
 
-    digits long, the peer MAY use a 3-digit MNC.  If the correct length
 
-    of the MNC is two, then the MNC used in the realm name includes the
 
-    first digit of MSIN.  Hence, when configuring AAA networks for
 
-    operators that have 2-digit MNC's, the network SHOULD also be
 
-    prepared for realm names with incorrect 3-digit MNC's.
 
- 4.1.1.6.  Format of the Permanent Username
 
-    The non-pseudonym permanent username SHOULD be derived from the IMSI.
 
-    In this case, the permanent username MUST be of the format "0" |
 
-    IMSI, where the character "|" denotes concatenation.  In other words,
 
-    the first character of the username is the digit zero (ASCII value 30
 
-    hexadecimal), followed by the IMSI.  The IMSI is an ASCII string that
 
-    consists of not more than 15 decimal digits (ASCII values between 30
 
- Arkko & Haverinen            Informational                     [Page 17]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    and 39 hexadecimal), one character per IMSI digit, in the order as
 
-    specified in [TS23.003].  For example, a permanent username derived
 
-    from the IMSI 295023820005424 would be encoded as the ASCII string
 
-    "0295023820005424" (byte values in hexadecimal notation: 30 32 39 35
 
-    30 32 33 38 32 30 30 30 35 34 32 34)
 
-    The EAP server MAY use the leading "0" as a hint to try EAP-AKA as
 
-    the first authentication method during method negotiation, rather
 
-    than using, for example, EAP-SIM.  The EAP-AKA server MAY propose
 
-    EAP-AKA even if the leading character was not "0".
 
-    Alternatively, an implementation MAY choose a permanent username that
 
-    is not based on the IMSI.  In this case the selection of the
 
-    username, its format, and its processing is out of the scope of this
 
-    document.  In this case, the peer implementation MUST NOT prepend any
 
-    leading characters to the username.
 
- 4.1.1.7.  Generating Pseudonyms and Fast Re-Authentication Identities by
 
-           the Server
 
-    Pseudonym usernames and fast re-authentication identities are
 
-    generated by the EAP server.  The EAP server produces pseudonym
 
-    usernames and fast re-authentication identities in an
 
-    implementation-dependent manner.  Only the EAP server needs to be
 
-    able to map the pseudonym username to the permanent identity, or to
 
-    recognize a fast re-authentication identity.
 
-    EAP-AKA includes no provisions to ensure that the same EAP server
 
-    that generated a pseudonym username will be used on the
 
-    authentication exchange when the pseudonym username is used.  It is
 
-    recommended that the EAP servers implement some centralized mechanism
 
-    to allow all EAP servers of the home operator to map pseudonyms
 
-    generated by other severs to the permanent identity.  If no such
 
-    mechanism is available, then the EAP server, failing to understand a
 
-    pseudonym issued by another server, can request the peer to send the
 
-    permanent identity.
 
-    When issuing a fast re-authentication identity, the EAP server may
 
-    include a realm name in the identity that will cause the fast
 
-    re-authentication request to be forwarded to the same EAP server.
 
-    When generating fast re-authentication identities, the server SHOULD
 
-    choose a fresh, new fast re-authentication identity that is different
 
-    from the previous ones that were used after the same full
 
-    authentication exchange.  A full authentication exchange and the
 
-    associated fast re-authentication exchanges are referred to here as
 
-    the same "full authentication context".  The fast re-authentication
 
-    identity SHOULD include a random component.  The random component
 
- Arkko & Haverinen            Informational                     [Page 18]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    works as a full authentication context identifier.  A context-
 
-    specific fast re-authentication identity can help the server to
 
-    detect whether its fast re-authentication state information matches
 
-    the peer's fast re-authentication state information (in other words,
 
-    whether the state information is from the same full authentication
 
-    exchange).  The random component also makes the fast re-
 
-    authentication identities unpredictable, so an attacker cannot
 
-    initiate a fast re-authentication exchange to get the server's
 
-    EAP-Request/AKA-Reauthentication packet.
 
-    Transmitting pseudonyms and fast re-authentication identities from
 
-    the server to the peer is discussed in Section 4.1.1.8.  The
 
-    pseudonym is transmitted as a username, without an NAI realm, and the
 
-    fast re-authentication identity is transmitted as a complete NAI,
 
-    including a realm portion if a realm is required.  The realm is
 
-    included in the fast re-authentication identity in order to allow the
 
-    server to include a server-specific realm.
 
-    Regardless of construction method, the pseudonym username MUST
 
-    conform to the grammar specified for the username portion of an NAI.
 
-    Also, the fast re-authentication identity MUST conform to the NAI
 
-    grammar.  The EAP servers that the subscribers of an operator can use
 
-    MUST ensure that the pseudonym usernames and the username portions
 
-    used in fast re-authentication identities that they generate are
 
-    unique.
 
-    In any case, it is necessary that permanent usernames, pseudonym
 
-    usernames, and fast re-authentication usernames are separate and
 
-    recognizable from each other.  It is also desirable that EAP-SIM and
 
-    EAP-AKA usernames be recognizable from each other as an aid to the
 
-    server when deciding which method to offer.
 
-    In general, it is the task of the EAP server and the policies of its
 
-    administrator to ensure sufficient separation of the usernames.
 
-    Pseudonym usernames and fast re-authentication usernames are both
 
-    produced and used by the EAP server.  The EAP server MUST compose
 
-    pseudonym usernames and fast re-authentication usernames so that it
 
-    can recognize if an NAI username is an EAP-AKA pseudonym username or
 
-    an EAP-AKA fast re-authentication username.  For instance, when the
 
-    usernames have been derived from the IMSI, the server could use
 
-    different leading characters in the pseudonym usernames and fast
 
-    re-authentication usernames (e.g., the pseudonym could begin with a
 
-    leading "2" character).  When mapping a fast re-authentication
 
-    identity to a permanent identity, the server SHOULD only examine the
 
-    username portion of the fast re-authentication identity and ignore
 
-    the realm portion of the identity.
 
- Arkko & Haverinen            Informational                     [Page 19]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    Because the peer may fail to save a pseudonym username that was sent
 
-    in an EAP-Request/AKA-Challenge (for example, due to malfunction),
 
-    the EAP server SHOULD maintain, at least, the most recently used
 
-    pseudonym username in addition to the most recently issued pseudonym
 
-    username.  If the authentication exchange is not completed
 
-    successfully, then the server SHOULD NOT overwrite the pseudonym
 
-    username that was issued during the most recent successful
 
-    authentication exchange.
 
- 4.1.1.8.  Transmitting Pseudonyms and Fast Re-Authentication Identities
 
-           to the Peer
 
-    The server transmits pseudonym usernames and fast re-authentication
 
-    identities to the peer in cipher, using the AT_ENCR_DATA attribute.
 
-    The EAP-Request/AKA-Challenge message MAY include an encrypted
 
-    pseudonym username and/or an encrypted fast re-authentication
 
-    identity in the value field of the AT_ENCR_DATA attribute.  Because
 
-    identity privacy support and fast re-authentication are optional to
 
-    implement, the peer MAY ignore the AT_ENCR_DATA attribute and always
 
-    use the permanent identity.  On fast re-authentication (discussed in
 
-    Section 5), the server MAY include a new, encrypted fast re-
 
-    authentication identity in the EAP-Request/AKA-Reauthentication
 
-    message.
 
-    On receipt of the EAP-Request/AKA-Challenge, the peer MAY decrypt the
 
-    encrypted data in AT_ENCR_DATA; and if a pseudonym username is
 
-    included, the peer may use the obtained pseudonym username on the
 
-    next full authentication.  If a fast re-authentication identity is
 
-    included, then the peer MAY save it together with other fast re-
 
-    authentication state information, as discussed in Section 5, for the
 
-    next fast re-authentication.
 
-    If the peer does not receive a new pseudonym username in the
 
-    EAP-Request/AKA-Challenge message, the peer MAY use an old pseudonym
 
-    username instead of the permanent username on next full
 
-    authentication.  The username portions of fast re-authentication
 
-    identities are one-time usernames, which the peer MUST NOT re-use.
 
-    When the peer uses a fast re-authentication identity in an EAP
 
-    exchange, the peer MUST discard the fast re-authentication identity
 
-    and not re-use it in another EAP authentication exchange, even if the
 
-    authentication exchange was not completed.
 
- 4.1.1.9.  Usage of the Pseudonym by the Peer
 
-    When the optional identity privacy support is used on full
 
-    authentication, the peer MAY use a pseudonym username received as
 
-    part of a previous full authentication sequence as the username
 
- Arkko & Haverinen            Informational                     [Page 20]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    portion of the NAI.  The peer MUST NOT modify the pseudonym username
 
-    received in AT_NEXT_PSEUDONYM.  However, as discussed above, the peer
 
-    MAY need to decorate the username in some environments by appending
 
-    or prepending the username with a string that indicates supplementary
 
-    AAA routing information.
 
-    When using a pseudonym username in an environment where a realm
 
-    portion is used, the peer concatenates the received pseudonym
 
-    username with the "@" character and an NAI realm portion.  The
 
-    selection of the NAI realm is discussed above.  The peer can select
 
-    the realm portion similarly, regardless of whether it uses the
 
-    permanent username or a pseudonym username.
 
- 4.1.1.10.  Usage of the Fast Re-Authentication Identity by the Peer
 
-    On fast re-authentication, the peer uses the fast re-authentication
 
-    identity received as part of the previous authentication sequence.  A
 
-    new fast re-authentication identity may be delivered as part of both
 
-    full authentication and fast re-authentication.  The peer MUST NOT
 
-    modify the username part of the fast re-authentication identity
 
-    received in AT_NEXT_REAUTH_ID, except in cases when username
 
-    decoration is required.  Even in these cases, the "root" fast
 
-    re-authentication username must not be modified, but it may be
 
-    appended or prepended with another string.
 
- 4.1.2.  Communicating the Peer Identity to the Server
 
- 4.1.2.1.  General
 
-    The peer identity MAY be communicated to the server with the
 
-    EAP-Response/Identity message.  This message MAY contain the
 
-    permanent identity, a pseudonym identity, or a fast re-authentication
 
-    identity.  If the peer uses the permanent identity or a pseudonym
 
-    identity, which the server is able to map to the permanent identity,
 
-    then the authentication proceeds as discussed in the overview of
 
-    Section 3.  If the peer uses a fast re-authentication identity, and
 
-    if the fast re-authentication identity matches with a valid fast
 
-    re-authentication identity maintained by the server, then a fast
 
-    re-authentication exchange is performed, as described in Section 5.
 
-    The peer identity can also be transmitted from the peer to the server
 
-    using EAP-AKA messages instead of EAP-Response/Identity.  In this
 
-    case, the server includes an identity requesting attribute
 
-    (AT_ANY_ID_REQ, AT_FULLAUTH_ID_REQ or AT_PERMANENT_ID_REQ) in the
 
-    EAP-Request/AKA-Identity message; and the peer includes the
 
-    AT_IDENTITY attribute, which contains the peer's identity, in the
 
-    EAP-Response/AKA-Identity message.  The AT_ANY_ID_REQ attribute is a
 
-    general identity requesting attribute, which the server uses if it
 
- Arkko & Haverinen            Informational                     [Page 21]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    does not specify which kind of an identity the peer should return in
 
-    AT_IDENTITY.  The server uses the AT_FULLAUTH_ID_REQ attribute to
 
-    request either the permanent identity or a pseudonym identity.  The
 
-    server uses the AT_PERMANENT_ID_REQ attribute to request that the
 
-    peer send its permanent identity.  The EAP-Request/AKA-Challenge,
 
-    EAP-Response/AKA-Challenge, or the packets used on fast re-
 
-    authentication may optionally include the AT_CHECKCODE attribute,
 
-    which enables the protocol peers to ensure the integrity of the
 
-    AKA-Identity packets.  AT_CHECKCODE is specified in Section 10.13.
 
-    The identity format in the AT_IDENTITY attribute is the same as in
 
-    the EAP-Response/Identity packet (except that identity decoration is
 
-    not allowed).  The AT_IDENTITY attribute contains a permanent
 
-    identity, a pseudonym identity, or a fast re-authentication identity.
 
-    Please note that only the EAP-AKA peer and the EAP-AKA server process
 
-    the AT_IDENTITY attribute and entities that pass through; EAP packets
 
-    do not process this attribute.  Hence, the authenticator and other
 
-    intermediate AAA elements (such as possible AAA proxy servers) will
 
-    continue to refer to the peer with the original identity from the
 
-    EAP-Response/Identity packet unless the identity authenticated in the
 
-    AT_IDENTITY attribute is communicated to them in another way within
 
-    the AAA protocol.
 
- 4.1.2.2.  Relying on EAP-Response/Identity Discouraged
 
-    The EAP-Response/Identity packet is not method specific; therefore,
 
-    in many implementations it may be handled by an EAP Framework.  This
 
-    introduces an additional layer of processing between the EAP peer and
 
-    EAP server.  The extra layer of processing may cache identity
 
-    responses or add decorations to the identity.  A modification of the
 
-    identity response will cause the EAP peer and EAP server to use
 
-    different identities in the key derivation, which will cause the
 
-    protocol to fail.
 
-    For this reason, it is RECOMMENDED that the EAP peer and server use
 
-    the method-specific identity attributes in EAP-AKA, and the server is
 
-    strongly discouraged from relying upon the EAP-Response/Identity.
 
-    In particular, if the EAP server receives a decorated identity in
 
-    EAP-Response/Identity, then the EAP server MUST use the
 
-    identity-requesting attributes to request the peer to send an
 
-    unmodified and undecorated copy of the identity in AT_IDENTITY.
 
- Arkko & Haverinen            Informational                     [Page 22]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 4.1.3.  Choice of Identity for the EAP-Response/Identity
 
-    If EAP-AKA peer is started upon receiving an EAP-Request/Identity
 
-    message, then the peer MAY use an EAP-AKA identity in the EAP-
 
-    Response/Identity packet.  In this case, the peer performs the
 
-    following steps.
 
-    If the peer has maintained fast re-authentication state information
 
-    and if the peer wants to use fast re-authentication, then the peer
 
-    transmits the fast re-authentication identity in
 
-    EAP-Response/Identity.
 
-    Else, if the peer has a pseudonym username available, then the peer
 
-    transmits the pseudonym identity in EAP-Response/Identity.
 
-    In other cases, the peer transmits the permanent identity in
 
-    EAP-Response/Identity.
 
- 4.1.4.  Server Operation in the Beginning of EAP-AKA Exchange
 
-    As discussed in Section 4.1.2.2, the server SHOULD NOT rely on an
 
-    identity string received in EAP-Response/Identity.  Therefore, the
 
-    RECOMMENDED way to start an EAP-AKA exchange is to ignore any
 
-    received identity strings.  The server SHOULD begin the EAP-AKA
 
-    exchange by issuing the EAP-Request/AKA-Identity packet with an
 
-    identity-requesting attribute to indicate that the server wants the
 
-    peer to include an identity in the AT_IDENTITY attribute of the EAP-
 
-    Response/AKA-Identity message.  Three methods to request an identity
 
-    from the peer are discussed below.
 
-    If the server chooses to not ignore the contents of
 
-    EAP-Response/Identity, then the server may already receive an EAP-AKA
 
-    identity in this packet.  However, if the EAP server has not received
 
-    any EAP-AKA peer identity (permanent identity, pseudonym identity, or
 
-    fast re-authentication identity) from the peer when sending the first
 
-    EAP-AKA request, or if the EAP server has received an
 
-    EAP-Response/Identity packet but the contents do not appear to be a
 
-    valid permanent identity, pseudonym identity, or a re-authentication
 
-    identity, then the server MUST request an identity from the peer
 
-    using one of the methods below.
 
-    The server sends the EAP-Request/AKA-Identity message with the
 
-    AT_PERMANENT_ID_REQ attribute to indicate that the server wants the
 
-    peer to include the permanent identity in the AT_IDENTITY attribute
 
-    of the EAP-Response/AKA-Identity message.  This is done in the
 
-    following cases:
 
- Arkko & Haverinen            Informational                     [Page 23]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    o  The server does not support fast re-authentication or identity
 
-       privacy.
 
-    o  The server decided to process a received identity, and the server
 
-       recognizes the received identity as a pseudonym identity, but the
 
-       server is not able to map the pseudonym identity to a permanent
 
-       identity.
 
-    The server issues the EAP-Request/AKA-Identity packet with the
 
-    AT_FULLAUTH_ID_REQ attribute to indicate that the server wants the
 
-    peer to include a full authentication identity (pseudonym identity or
 
-    permanent identity) in the AT_IDENTITY attribute of the
 
-    EAP-Response/AKA-Identity message.  This is done in the following
 
-    cases:
 
-    o  The server does not support fast re-authentication and the server
 
-       supports identity privacy
 
-    o  The server decided to process a received identity, and the server
 
-       recognizes the received identity as a re-authentication identity
 
-       but the server is not able to map the re-authentication identity
 
-       to a permanent identity
 
-    The server issues the EAP-Request/AKA-Identity packet with the
 
-    AT_ANY_ID_REQ attribute to indicate that the server wants the peer to
 
-    include an identity in the AT_IDENTITY attribute of the
 
-    EAP-Response/AKA-Identity message, and the server does not indicate
 
-    any preferred type for the identity.  This is done in other cases,
 
-    such as when the server ignores a received EAP-Response/Identity,
 
-    when the server does not have any identity, or when the server does
 
-    not recognize the format of a received identity.
 
- 4.1.5.  Processing of EAP-Request/AKA-Identity by the Peer
 
-    Upon receipt of an EAP-Request/AKA-Identity message, the peer MUST
 
-    perform the following steps.
 
-    If the EAP-Request/AKA-Identity includes AT_PERMANENT_ID_REQ, and if
 
-    the peer does not have a pseudonym available, then the peer MUST
 
-    respond with EAP-Response/AKA-Identity and include the permanent
 
-    identity in AT_IDENTITY.  If the peer has a pseudonym available, then
 
-    the peer MAY refuse to send the permanent identity; hence, in this
 
-    case the peer MUST either respond with EAP-Response/AKA-Identity and
 
-    include the permanent identity in AT_IDENTITY or respond with
 
-    EAP-Response/AKA-Client-Error packet with code "unable to process
 
-    packet".
 
-    If the EAP-Request/AKA-Identity includes AT_FULL_AUTH_ID_REQ, and if
 
-    the peer has a pseudonym available, then the peer SHOULD respond with
 
-    EAP-Response/AKA-Identity and include the pseudonym identity in
 
- Arkko & Haverinen            Informational                     [Page 24]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    AT_IDENTITY.  If the peer does not have a pseudonym when it receives
 
-    this message, then the peer MUST respond with EAP-Response/
 
-    AKA-Identity and include the permanent identity in AT_IDENTITY.  The
 
-    Peer MUST NOT use a fast re-authentication identity in the
 
-    AT_IDENTITY attribute.
 
-    If the EAP-Request/AKA-Identity includes AT_ANY_ID_REQ, and if the
 
-    peer has maintained fast re-authentication state information and
 
-    wants to use fast re-authentication, then the peer responds with
 
-    EAP-Response/AKA-Identity and includes the fast re-authentication
 
-    identity in AT_IDENTITY.  Else, if the peer has a pseudonym identity
 
-    available, then the peer responds with EAP-Response/AKA-Identity and
 
-    includes the pseudonym identity in AT_IDENTITY.  Else, the peer
 
-    responds with EAP-Response/AKA-Identity and includes the permanent
 
-    identity in AT_IDENTITY.
 
-    An EAP-AKA exchange may include several EAP/AKA-Identity rounds.  The
 
-    server may issue a second EAP-Request/AKA-Identity, if it was not
 
-    able to recognize the identity the peer used in the previous
 
-    AT_IDENTITY attribute.  At most three EAP/AKA-Identity rounds can be
 
-    used, so the peer MUST NOT respond to more than three
 
-    EAP-Request/AKA-Identity messages within an EAP exchange.  The peer
 
-    MUST verify that the sequence of EAP-Request/AKA-Identity packets the
 
-    peer receives comply with the sequencing rules defined in this
 
-    document.  That is, AT_ANY_ID_REQ can only be used in the first
 
-    EAP-Request/AKA-Identity; in other words, AT_ANY_ID_REQ MUST NOT be
 
-    used in the second or third EAP-Request/AKA-Identity.
 
-    AT_FULLAUTH_ID_REQ MUST NOT be used if the previous
 
-    EAP-Request/AKA-Identity included AT_PERMANENT_ID_REQ.  The peer
 
-    operation, in cases when it receives an unexpected attribute or an
 
-    unexpected message, is specified in Section 6.3.1.
 
- 4.1.6.  Attacks against Identity Privacy
 
-    The section above specifies two possible ways the peer can operate
 
-    upon receipt of AT_PERMANENT_ID_REQ because a received
 
-    AT_PERMANENT_ID_REQ does not necessarily originate from the valid
 
-    network.  However, an active attacker may transmit an
 
-    EAP-Request/AKA-Identity packet with an AT_PERMANENT_ID_REQ attribute
 
-    to the peer, in an effort to find out the true identity of the user.
 
-    If the peer does not want to reveal its permanent identity, then the
 
-    peer sends the EAP-Response/AKA-Client-Error packet with the error
 
-    code "unable to process packet", and the authentication exchange
 
-    terminates.
 
-    Basically, there are two different policies that the peer can employ
 
-    with regard to AT_PERMANENT_ID_REQ.  A "conservative" peer assumes
 
-    that the network is able to maintain pseudonyms robustly.  Therefore,
 
- Arkko & Haverinen            Informational                     [Page 25]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    if a conservative peer has a pseudonym username, the peer responds
 
-    with EAP-Response/AKA-Client-Error to the EAP packet with
 
-    AT_PERMANENT_ID_REQ, because the peer believes that the valid network
 
-    is able to map the pseudonym identity to the peer's permanent
 
-    identity.  (Alternatively, the conservative peer may accept
 
-    AT_PERMANENT_ID_REQ in certain circumstances, for example if the
 
-    pseudonym was received a long time ago.)  The benefit of this policy
 
-    is that it protects the peer against active attacks on anonymity.  On
 
-    the other hand, a "liberal" peer always accepts the
 
-    AT_PERMANENT_ID_REQ and responds with the permanent identity.  The
 
-    benefit of this policy is that it works even if the valid network
 
-    sometimes loses pseudonyms and is not able to map them to the
 
-    permanent identity.
 
- 4.1.7.  Processing of AT_IDENTITY by the Server
 
-    When the server receives an EAP-Response/AKA-Identity message with
 
-    the AT_IDENTITY (in response to the server's identity requesting
 
-    attribute), the server MUST operate as follows.
 
-    If the server used AT_PERMANENT_ID_REQ, and if the AT_IDENTITY does
 
-    not contain a valid permanent identity, then the server sends an
 
-    EAP-Request/AKA-Notification packet with AT_NOTIFICATION code
 
-    "General failure" (16384) to terminate the EAP exchange.  If the
 
-    server recognizes the permanent identity and is able to continue,
 
-    then the server proceeds with full authentication by sending
 
-    EAP-Request/AKA-Challenge.
 
-    If the server used AT_FULLAUTH_ID_REQ, and if AT_IDENTITY contains a
 
-    valid permanent identity or a pseudonym identity that the server can
 
-    map to a valid permanent identity, then the server proceeds with full
 
-    authentication by sending EAP-Request/AKA-Challenge.  If AT_IDENTITY
 
-    contains a pseudonym identity that the server is not able to map to a
 
-    valid permanent identity, or an identity that the server is not able
 
-    to recognize or classify, then the server sends EAP-Request/
 
-    AKA-Identity with AT_PERMANENT_ID_REQ.
 
-    If the server used AT_ANY_ID_REQ, and if the AT_IDENTITY contains a
 
-    valid permanent identity or a pseudonym identity that the server can
 
-    map to a valid permanent identity, then the server proceeds with full
 
-    authentication by sending EAP-Request/ AKA-Challenge.
 
-    If the server used AT_ANY_ID_REQ, and if AT_IDENTITY contains a valid
 
-    fast re-authentication identity and the server agrees on using
 
-    re-authentication, then the server proceeds with fast
 
-    re-authentication by sending EAP-Request/AKA-Reauthentication
 
-    (Section 5).
 
- Arkko & Haverinen            Informational                     [Page 26]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    If the server used AT_ANY_ID_REQ, and if the peer sent an EAP-
 
-    Response/AKA-Identity with AT_IDENTITY that contains an identity that
 
-    the server recognizes as a fast re-authentication identity, but the
 
-    server is not able to map the identity to a permanent identity, then
 
-    the server sends EAP-Request/AKA-Identity with AT_FULLAUTH_ID_REQ.
 
-    If the server used AT_ANY_ID_REQ, and if AT_IDENTITY contains a valid
 
-    fast re-authentication identity, which the server is able to map to a
 
-    permanent identity, and if the server does not want to use fast
 
-    re-authentication, then the server proceeds with full authentication
 
-    by sending EAP-Request/AKA-Challenge.
 
-    If the server used AT_ANY_ID_REQ, and AT_IDENTITY contains an
 
-    identity that the server recognizes as a pseudonym identity but the
 
-    server is not able to map the pseudonym identity to a permanent
 
-    identity, then the server sends EAP-Request/AKA-Identity with
 
-    AT_PERMANENT_ID_REQ.
 
-    If the server used AT_ANY_ID_REQ, and AT_IDENTITY contains an
 
-    identity that the server is not able to recognize or classify, then
 
-    the server sends EAP-Request/AKA-Identity with AT_FULLAUTH_ID_REQ.
 
- 4.2.  Message Sequence Examples (Informative)
 
-    This section contains non-normative message sequence examples to
 
-    illustrate how the peer identity can be communicated to the server.
 
- 4.2.1.  Usage of AT_ANY_ID_REQ
 
-    Obtaining the peer identity with EAP-AKA attributes is illustrated in
 
-    Figure 5 below.
 
-        Peer                                             Authenticator
 
-           |                                                       |
 
-           |                            +------------------------------+
 
-           |                            | Server does not have any     |
 
-           |                            | Subscriber identity available|
 
-           |                            | When starting EAP-AKA        |
 
-           |                            +------------------------------+
 
-           |          EAP-Request/AKA-Identity                     |
 
-           |          (AT_ANY_ID_REQ)                              |
 
-           |<------------------------------------------------------|
 
-           |                                                       |
 
-           | EAP-Response/AKA-Identity                             |
 
-           | (AT_IDENTITY)                                         |
 
-           |------------------------------------------------------>|
 
-           |                                                       |
 
-                      Figure 5: Usage of AT_ANY_ID_REQ
 
- Arkko & Haverinen            Informational                     [Page 27]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 4.2.2.  Fall Back on Full Authentication
 
-    Figure 6 illustrates the case when the server does not recognize the
 
-    fast re-authentication identity the peer used in AT_IDENTITY.
 
-        Peer                                             Authenticator
 
-           |                                                       |
 
-           |                            +------------------------------+
 
-           |                            | Server does not have any     |
 
-           |                            | Subscriber identity available|
 
-           |                            | When starting EAP-AKA        |
 
-           |                            +------------------------------+
 
-           |        EAP-Request/AKA-Identity                       |
 
-           |        (AT_ANY_ID_REQ)                                |
 
-           |<------------------------------------------------------|
 
-           |                                                       |
 
-           | EAP-Response/AKA-Identity                             |
 
-           | (AT_IDENTITY containing a fast re-auth. identity)     |
 
-           |------------------------------------------------------>|
 
-           |                            +------------------------------+
 
-           |                            | Server does not recognize    |
 
-           |                            | The fast re-auth.            |
 
-           |                            | Identity                     |
 
-           |                            +------------------------------+
 
-           |     EAP-Request/AKA-Identity                          |
 
-           |     (AT_FULLAUTH_ID_REQ)                              |
 
-           |<------------------------------------------------------|
 
-           | EAP-Response/AKA-Identity                             |
 
-           | (AT_IDENTITY with a full-auth. Identity)              |
 
-           |------------------------------------------------------>|
 
-           |                                                       |
 
-                 Figure 6: Fall back on full authentication
 
-    If the server recognizes the fast re-authentication identity, but
 
-    still wants to fall back on full authentication, the server may issue
 
-    the EAP-Request/AKA-Challenge packet.  In this case, the full
 
-    authentication procedure proceeds as usual.
 
- Arkko & Haverinen            Informational                     [Page 28]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 4.2.3.  Requesting the Permanent Identity 1
 
-    Figure 7 illustrates the case when the EAP server fails to decode a
 
-    pseudonym identity included in the EAP-Response/Identity packet.
 
-        Peer                                             Authenticator
 
-           |                               EAP-Request/Identity    |
 
-           |<------------------------------------------------------|
 
-           | EAP-Response/Identity                                 |
 
-           | (Includes a pseudonym)                                |
 
-           |------------------------------------------------------>|
 
-           |                            +------------------------------+
 
-           |                            | Server fails to decode the   |
 
-           |                            | Pseudonym.                   |
 
-           |                            +------------------------------+
 
-           |  EAP-Request/AKA-Identity                             |
 
-           |  (AT_PERMANENT_ID_REQ)                                |
 
-           |<------------------------------------------------------|
 
-           |                                                       |
 
-           | EAP-Response/AKA-Identity                             |
 
-           | (AT_IDENTITY with permanent identity)                 |
 
-           |------------------------------------------------------>|
 
-           |                                                       |
 
-                Figure 7: Requesting the permanent identity 1
 
-    If the server recognizes the permanent identity, then the
 
-    authentication sequence proceeds as usual with the EAP Server issuing
 
-    the EAP-Request/AKA-Challenge message.
 
- Arkko & Haverinen            Informational                     [Page 29]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 4.2.4.  Requesting the Permanent Identity 2
 
-    Figure 8 illustrates the case when the EAP server fails to decode the
 
-    pseudonym included in the AT_IDENTITY attribute.
 
-        Peer                                             Authenticator
 
-           |                                                       |
 
-           |                            +------------------------------+
 
-           |                            | Server does not have any     |
 
-           |                            | Subscriber identity available|
 
-           |                            | When starting EAP-AKA        |
 
-           |                            +------------------------------+
 
-           |        EAP-Request/AKA-Identity                       |
 
-           |        (AT_ANY_ID_REQ)                                |
 
-           |<------------------------------------------------------|
 
-           |                                                       |
 
-           |EAP-Response/AKA-Identity                              |
 
-           |(AT_IDENTITY with a pseudonym identity)                |
 
-           |------------------------------------------------------>|
 
-           |                            +------------------------------+
 
-           |                            | Server fails to decode the   |
 
-           |                            | Pseudonym in AT_IDENTITY     |
 
-           |                            +------------------------------+
 
-           |                EAP-Request/AKA-Identity               |
 
-           |                (AT_PERMANENT_ID_REQ)                  |
 
-           |<------------------------------------------------------|
 
-           | EAP-Response/AKA-Identity                             |
 
-           | (AT_IDENTITY with permanent identity)                 |
 
-           |------------------------------------------------------>|
 
-           |                                                       |
 
-                Figure 8: Requesting the permanent identity 2
 
- 4.2.5.  Three EAP/AKA-Identity Round Trips
 
-    Figure 9 illustrates the case with three EAP/AKA-Identity round
 
-    trips.
 
- Arkko & Haverinen            Informational                     [Page 30]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-        Peer                                             Authenticator
 
-           |                                                       |
 
-           |                            +------------------------------+
 
-           |                            | Server does not have any     |
 
-           |                            | Subscriber identity available|
 
-           |                            | When starting EAP-AKA        |
 
-           |                            +------------------------------+
 
-           |        EAP-Request/AKA-Identity                       |
 
-           |        (AT_ANY_ID_REQ)                                |
 
-           |<------------------------------------------------------|
 
-           |                                                       |
 
-           | EAP-Response/AKA-Identity                             |
 
-           | (AT_IDENTITY with fast re-auth. identity)             |
 
-           |------------------------------------------------------>|
 
-           |                            +------------------------------+
 
-           |                            | Server does not accept       |
 
-           |                            | The fast re-authentication   |
 
-           |                            | Identity                     |
 
-           |                            +------------------------------+
 
-           |                                                       |
 
-           :                                                       :
 
-           :                                                       :
 
-           :                                                       :
 
-           :                                                       :
 
-           |     EAP-Request/AKA-Identity                          |
 
-           |     (AT_FULLAUTH_ID_REQ)                              |
 
-           |<------------------------------------------------------|
 
-           |EAP-Response/AKA-Identity                              |
 
-           |(AT_IDENTITY with a pseudonym identity)                |
 
-           |------------------------------------------------------>|
 
-           |                            +------------------------------+
 
-           |                            | Server fails to decode the   |
 
-           |                            | Pseudonym in AT_IDENTITY     |
 
-           |                            +------------------------------+
 
-           |           EAP-Request/AKA-Identity                    |
 
-           |           (AT_PERMANENT_ID_REQ)                       |
 
-           |<------------------------------------------------------|
 
-           | EAP-Response/AKA-Identity                             |
 
-           | (AT_IDENTITY with permanent identity)                 |
 
-           |------------------------------------------------------>|
 
-           |                                                       |
 
-                    Figure 9: Three EAP-AKA Start rounds
 
-    After the last EAP-Response/AKA-Identity message, the full
 
-    authentication sequence proceeds as usual.
 
- Arkko & Haverinen            Informational                     [Page 31]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 5.  Fast Re-Authentication
 
- 5.1.  General
 
-    In some environments, EAP authentication may be performed frequently.
 
-    Because the EAP-AKA full authentication procedure uses the AKA
 
-    algorithms, and therefore requires fresh authentication vectors from
 
-    the Authentication Centre, the full authentication procedure may
 
-    result in many network operations when used very frequently.
 
-    Therefore, EAP-AKA includes a more inexpensive fast re-authentication
 
-    procedure that does not make use of the AKA algorithms and does not
 
-    need new vectors from the Authentication Centre.
 
-    Fast re-authentication is optional to implement for both the EAP-AKA
 
-    server and peer.  On each EAP authentication, either one of the
 
-    entities may fall back on full authentication if is does not want to
 
-    use fast re-authentication.
 
-    Fast re-authentication is based on the keys derived on the preceding
 
-    full authentication.  The same K_aut and K_encr keys used in full
 
-    authentication are used to protect EAP-AKA packets and attributes,
 
-    and the original Master Key from full authentication is used to
 
-    generate a fresh Master Session Key, as specified in Section 7.
 
-    The fast re-authentication exchange makes use of an unsigned 16-bit
 
-    counter, included in the AT_COUNTER attribute.  The counter has three
 
-    goals: 1) it can be used to limit the number of successive
 
-    reauthentication exchanges without full-authentication 2) it
 
-    contributes to the keying material, and 3) it protects the peer and
 
-    the server from replays.  On full authentication, both the server and
 
-    the peer initialize the counter to one.  The counter value of at
 
-    least one is used on the first fast re-authentication.  On subsequent
 
-    fast re-authentications, the counter MUST be greater than on any of
 
-    the previous fast re-authentications.  For example, on the second
 
-    fast re-authentication, counter value is two or greater, etc.  The
 
-    AT_COUNTER attribute is encrypted.
 
-    Both the peer and the EAP server maintain a copy of the counter.  The
 
-    EAP server sends its counter value to the peer in the fast
 
-    re-authentication request.  The peer MUST verify that its counter
 
-    value is less than or equal to the value sent by the EAP server.
 
-    The server includes an encrypted server random nonce (AT_NONCE_S) in
 
-    the fast re-authentication request.  The AT_MAC attribute in the
 
-    peer's response is calculated over NONCE_S to provide a
 
-    challenge/response authentication scheme.  The NONCE_S also
 
-    contributes to the new Master Session Key.
 
- Arkko & Haverinen            Informational                     [Page 32]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    Both the peer and the server SHOULD have an upper limit for the
 
-    number of subsequent fast re-authentications allowed before a full
 
-    authentication needs to be performed.  Because a 16-bit counter is
 
-    used in fast re-authentication, the theoretical maximum number of
 
-    re-authentications is reached when the counter value reaches FFFF
 
-    hexadecimal.  In order to use fast re-authentication, the peer and
 
-    the EAP server need to store the following values: Master Key, latest
 
-    counter value and the next fast re-authentication identity.  K_aut
 
-    and K_encr may either be stored or derived again from MK.  The server
 
-    may also need to store the permanent identity of the user.
 
- 5.2.  Comparison to AKA
 
-    When analyzing the fast re-authentication exchange, it may be helpful
 
-    to compare it with the 3rd generation Authentication and Key
 
-    Agreement (AKA) exchange used on full authentication.  The counter
 
-    corresponds to the AKA sequence number, NONCE_S corresponds to RAND,
 
-    the AT_MAC in EAP-Request/AKA-Reauthentication corresponds to AUTN,
 
-    the AT_MAC in EAP-Response/AKA-Reauthentication corresponds to RES,
 
-    AT_COUNTER_TOO_SMALL corresponds to AUTS, and encrypting the counter
 
-    corresponds to the usage of the Anonymity Key.  Also, the key
 
-    generation on fast re-authentication, with regard to random or fresh
 
-    material, is similar to AKA -- the server generates the NONCE_S and
 
-    counter values, and the peer only verifies that the counter value is
 
-    fresh.
 
-    It should also be noted that encrypting the AT_NONCE_S, AT_COUNTER,
 
-    or AT_COUNTER_TOO_SMALL attributes is not important to the security
 
-    of the fast re-authentication exchange.
 
- 5.3.  Fast Re-Authentication Identity
 
-    The fast re-authentication procedure makes use of separate
 
-    re-authentication user identities.  Pseudonyms and the permanent
 
-    identity are reserved for full authentication only.  If a fast
 
-    re-authentication identity is lost and the network does not recognize
 
-    it, the EAP server can fall back on full authentication.  If the EAP
 
-    server supports fast re-authentication, it MAY include the skippable
 
-    AT_NEXT_REAUTH_ID attribute in the encrypted data of EAP- Request/-
 
-    AKA-Challenge message.  This attribute contains a new
 
-    re-authentication identity for the next fast re-authentication.  The
 
-    attribute also works as a capability flag that indicates that the
 
-    server supports fast re-authentication and that the server wants to
 
-    continue using fast re-authentication within the current context.
 
-    The peer MAY ignore this attribute, in which case it will use full
 
-    authentication next time.  If the peer wants to use fast
 
-    re-authentication, it uses this fast re-authentication identity on
 
-    next authentication.  Even if the peer has a fast re-authentication
 
- Arkko & Haverinen            Informational                     [Page 33]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    identity, the peer MAY discard the re-authentication identity and use
 
-    a pseudonym or the permanent identity instead, in which case full
 
-    authentication MUST be performed.  If the EAP server does not include
 
-    the AT_NEXT_REAUTH_ID in the encrypted data of
 
-    EAP-Request/AKA-Challenge or EAP-Request/AKA-Reauthentication, then
 
-    the peer MUST discard its current fast re-authentication state
 
-    information and perform a full authentication next time.
 
-    In environments where a realm portion is needed in the peer identity,
 
-    the fast re-authentication identity received in AT_NEXT_REAUTH_ID
 
-    MUST contain both a username portion and a realm portion, as per the
 
-    NAI format.  The EAP Server can choose an appropriate realm part in
 
-    order to have the AAA infrastructure route subsequent fast
 
-    re-authentication-related requests to the same AAA server.  For
 
-    example, the realm part MAY include a portion that is specific to the
 
-    AAA server.  Hence, it is sufficient to store the context required
 
-    for fast re-authentication in the AAA server that performed the full
 
-    authentication.
 
-    The peer MAY use the fast re-authentication identity in the
 
-    EAP-Response/Identity packet or, in response to the server's
 
-    AT_ANY_ID_REQ attribute, the peer MAY use the fast re-authentication
 
-    identity in the AT_IDENTITY attribute of the EAP-Response/
 
-    AKA-Identity packet.
 
-    The peer MUST NOT modify the username portion of the fast
 
-    re-authentication identity, but the peer MAY modify the realm portion
 
-    or replace it with another realm portion.  The peer might need to
 
-    modify the realm in order to influence the AAA routing, for example,
 
-    to make sure that the correct server is reached.  It should be noted
 
-    that sharing the same fast re-authentication key among several
 
-    servers may have security risks, so changing the realm portion of the
 
-    NAI in order to change the EAP server is not desirable.
 
-    Even if the peer uses a fast re-authentication identity, the server
 
-    may want to fall back on full authentication, for example, because
 
-    the server does not recognize the fast re-authentication identity or
 
-    does not want to use fast re-authentication.  If the server was able
 
-    to decode the fast re-authentication identity to the permanent
 
-    identity, the server issues the EAP-Request/AKA-Challenge packet to
 
-    initiate full authentication.  If the server was not able to recover
 
-    the peer's identity from the fast re-authentication identity, the
 
-    server starts the full authentication procedure by issuing an
 
-    EAP-Request/AKA-Identity packet.  This packet always starts a full
 
-    authentication sequence if it does not include the AT_ANY_ID_REQ
 
-    attribute.
 
- Arkko & Haverinen            Informational                     [Page 34]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 5.4.  Fast Re-Authentication Procedure
 
-    Figure 10 illustrates the fast re-authentication procedure.  In this
 
-    example, the optional protected success indication is not used.
 
-    Encrypted attributes are denoted with '*'.  The peer uses its fast
 
-    re-authentication identity in the EAP-Response/Identity packet.  As
 
-    discussed above, an alternative way to communicate the fast
 
-    re-authentication identity to the server is for the peer to use the
 
-    AT_IDENTITY attribute in the EAP-Response/AKA-Identity message.  This
 
-    latter case is not illustrated in the figure below, and it is only
 
-    possible when the server requests that the peer send its identity by
 
-    including the AT_ANY_ID_REQ attribute in the EAP-Request/AKA-Identity
 
-    packet.
 
-    If the server recognizes the identity as a valid fast
 
-    re-authentication identity, and if the server agrees to use fast
 
-    re-authentication, then the server sends the EAP- Request/AKA-
 
-    Reauthentication packet to the peer.  This packet MUST include the
 
-    encrypted AT_COUNTER attribute, with a fresh counter value, the
 
-    encrypted AT_NONCE_S attribute that contains a random number chosen
 
-    by the server, the AT_ENCR_DATA and the AT_IV attributes used for
 
-    encryption, and the AT_MAC attribute that contains a message
 
-    authentication code over the packet.  The packet MAY also include an
 
-    encrypted AT_NEXT_REAUTH_ID attribute that contains the next fast
 
-    re-authentication identity.
 
-    Fast re-authentication identities are one-time identities.  If the
 
-    peer does not receive a new fast re-authentication identity, it MUST
 
-    use either the permanent identity or a pseudonym identity on the next
 
-    authentication to initiate full authentication.
 
-    The peer verifies that AT_MAC is correct and that the counter value
 
-    is fresh (greater than any previously used value).  The peer MAY save
 
-    the next fast re-authentication identity from the encrypted
 
-    AT_NEXT_REAUTH_ID for next time.  If all checks are successful, the
 
-    peer responds with the EAP-Response/AKA-Reauthentication packet,
 
-    including the AT_COUNTER attribute with the same counter value and
 
-    the AT_MAC attribute.
 
-    The server verifies the AT_MAC attribute and also verifies that the
 
-    counter value is the same that it used in the
 
-    EAP-Request/AKA-Reauthentication packet.  If these checks are
 
-    successful, the fast re-authentication has succeeded and the server
 
-    sends the EAP-Success packet to the peer.
 
-    If protected success indications (Section 6.2) were used, the
 
-    EAP-Success packet would be preceded by an EAP-AKA notification
 
-    round.
 
- Arkko & Haverinen            Informational                     [Page 35]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-         Peer                                             Authenticator
 
-           |                                                       |
 
-           |                               EAP-Request/Identity    |
 
-           |<------------------------------------------------------|
 
-           |                                                       |
 
-           | EAP-Response/Identity                                 |
 
-           | (Includes a fast re-authentication identity)          |
 
-           |------------------------------------------------------>|
 
-           |                          +--------------------------------+
 
-           |                          | Server recognizes the identity |
 
-           |                          | and agrees on using fast       |
 
-           |                          | re-authentication              |
 
-           |                          +--------------------------------+
 
-           |  EAP-Request/AKA-Reauthentication                     |
 
-           |  (AT_IV, AT_ENCR_DATA, *AT_COUNTER,                   |
 
-           |   *AT_NONCE_S, *AT_NEXT_REAUTH_ID, AT_MAC)            |
 
-           |<------------------------------------------------------|
 
-           |                                                       |
 
-           :                                                       :
 
-           :                                                       :
 
-           :                                                       :
 
-           :                                                       :
 
-           |                                                       |
 
-      +-----------------------------------------------+            |
 
-      | Peer verifies AT_MAC and the freshness of     |            |
 
-      | the counter. Peer MAY store the new re-       |            |
 
-      | authentication identity for next re-auth.     |            |
 
-      +-----------------------------------------------+            |
 
-           |                                                       |
 
-           | EAP-Response/AKA-Reauthentication                     |
 
-           | (AT_IV, AT_ENCR_DATA, *AT_COUNTER with same value,    |
 
-           |  AT_MAC)                                              |
 
-           |------------------------------------------------------>|
 
-           |                          +--------------------------------+
 
-           |                          | Server verifies AT_MAC and     |
 
-           |                          | the counter                    |
 
-           |                          +--------------------------------+
 
-           |                                          EAP-Success  |
 
-           |<------------------------------------------------------|
 
-           |                                                       |
 
-                         Figure 10: Reauthentication
 
- Arkko & Haverinen            Informational                     [Page 36]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 5.5.  Fast Re-Authentication Procedure when Counter is Too Small
 
-    If the peer does not accept the counter value of EAP-Request/
 
-    AKA-Reauthentication, it indicates the counter synchronization
 
-    problem by including the encrypted AT_COUNTER_TOO_SMALL in
 
-    EAP-Response/AKA-Reauthentication.  The server responds with
 
-    EAP-Request/AKA-Challenge to initiate a normal full authentication
 
-    procedure.  This is illustrated in Figure 11.  Encrypted attributes
 
-    are denoted with '*'.
 
-         Peer                                             Authenticator
 
-           |          EAP-Request/AKA-Identity                     |
 
-           |          (AT_ANY_ID_REQ)                              |
 
-           |<------------------------------------------------------|
 
-           |                                                       |
 
-           | EAP-Response/AKA-Identity                             |
 
-           | (AT_IDENTITY)                                         |
 
-           | (Includes a fast re-authentication identity)          |
 
-           |------------------------------------------------------>|
 
-           |                                                       |
 
-           |  EAP-Request/AKA-Reauthentication                     |
 
-           |  (AT_IV, AT_ENCR_DATA, *AT_COUNTER,                   |
 
-           |   *AT_NONCE_S, *AT_NEXT_REAUTH_ID, AT_MAC)            |
 
-           |<------------------------------------------------------|
 
-      +-----------------------------------------------+            |
 
-      | AT_MAC is valid but the counter is not fresh. |            |
 
-      +-----------------------------------------------+            |
 
-           | EAP-Response/AKA-Reauthentication                     |
 
-           | (AT_IV, AT_ENCR_DATA, *AT_COUNTER_TOO_SMALL,          |
 
-           |  *AT_COUNTER, AT_MAC)                                 |
 
-           |------------------------------------------------------>|
 
-           |            +----------------------------------------------+
 
-           |            | Server verifies AT_MAC but detects           |
 
-           |            | That peer has included AT_COUNTER_TOO_SMALL|
 
-           |            +----------------------------------------------+
 
-           |                        EAP-Request/AKA-Challenge      |
 
-           |<------------------------------------------------------|
 
-      +---------------------------------------------------------------+
 
-      |                Normal full authentication follows.            |
 
-      +---------------------------------------------------------------+
 
-           |                                                       |
 
-             Figure 11: Fast re-authentication counter too small
 
-    In the figure above, the first three messages are similar to the
 
-    basic fast re-authentication case.  When the peer detects that the
 
-    counter value is not fresh, it includes the AT_COUNTER_TOO_SMALL
 
-    attribute in EAP-Response/AKA-Reauthentication.  This attribute
 
- Arkko & Haverinen            Informational                     [Page 37]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    doesn't contain any data but it is a request for the server to
 
-    initiate full authentication.  In this case, the peer MUST ignore the
 
-    contents of the server's AT_NEXT_REAUTH_ID attribute.
 
-    On receipt of AT_COUNTER_TOO_SMALL, the server verifies AT_MAC and
 
-    verifies that AT_COUNTER contains the same counter value as in the
 
-    EAP-Request/AKA-Reauthentication packet.  If not, the server
 
-    terminates the authentication exchange by sending the
 
-    EAP-Request/AKA-Notification packet with AT_NOTIFICATION code
 
-    "General failure" (16384).  If all checks on the packet are
 
-    successful, the server transmits an EAP-Request/AKA-Challenge packet
 
-    and the full authentication procedure is performed as usual.  Because
 
-    the server already knows the subscriber identity, it MUST NOT use the
 
-    EAP-Request/AKA-Identity packet to request the identity.
 
-    It should be noted that in this case, peer identity is only
 
-    transmitted in the AT_IDENTITY attribute at the beginning of the
 
-    whole EAP exchange.  The fast re-authentication identity used in this
 
-    AT_IDENTITY attribute will be used in key derivation (see Section 7).
 
- 6.  EAP-AKA Notifications
 
- 6.1.  General
 
-    EAP-AKA does not prohibit the use of the EAP Notifications as
 
-    specified in [RFC3748].  EAP Notifications can be used at any time in
 
-    the EAP-AKA exchange.  It should be noted that EAP-AKA does not
 
-    protect EAP Notifications.  EAP-AKA also specifies method-specific
 
-    EAP-AKA notifications, which are protected in some cases.
 
-    The EAP server can use EAP-AKA notifications to convey notifications
 
-    and result indications (Section 6.2) to the peer.
 
-    The server MUST use notifications in cases discussed in
 
-    Section 6.3.2.  When the EAP server issues an
 
-    EAP-Request/AKA-Notification packet to the peer, the peer MUST
 
-    process the notification packet.  The peer MAY show a notification
 
-    message to the user and the peer MUST respond to the EAP server with
 
-    an EAP-Response/AKA-Notification packet, even if the peer did not
 
-    recognize the notification code.
 
-    An EAP-AKA full authentication exchange or a fast re-authentication
 
-    exchange MUST NOT include more than one EAP-AKA notification round.
 
-    The notification code is a 16-bit number.  The most significant bit
 
-    is called the Success bit (S bit).  The S bit specifies whether the
 
-    notification implies failure.  The code values with the S bit set to
 
-    zero (code values 0...32767) are used on unsuccessful cases.  The
 
- Arkko & Haverinen            Informational                     [Page 38]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    receipt of a notification code from this range implies failed EAP
 
-    exchange, so the peer can use the notification as a failure
 
-    indication.  After receiving the EAP-Response/AKA-Notification for
 
-    these notification codes, the server MUST send the EAP-Failure
 
-    packet.
 
-    The receipt of a notification code with the S bit set to one (values
 
-    32768...65536) does not imply failure.  Notification code "Success"
 
-    (32768) has been reserved as a general notification code to indicate
 
-    successful authentication.
 
-    The second most significant bit of the notification code is called
 
-    the Phase bit (P bit).  It specifies at which phase of the EAP-AKA
 
-    exchange the notification can be used.  If the P bit is set to zero,
 
-    the notification can only be used after a successful EAP/AKA-
 
-    Challenge round in full authentication or a successful EAP/AKA-
 
-    Reauthentication round in re-authentication.  A re-authentication
 
-    round is considered successful only if the peer has successfully
 
-    verified AT_MAC and AT_COUNTER attributes, and does not include the
 
-    AT_COUNTER_TOO_SMALL attribute in EAP-Response/AKA-Reauthentication.
 
-    If the P bit is set to one, the notification can only by used before
 
-    the EAP/AKA-Challenge round in full authentication or before the
 
-    EAP/AKA-Reauthentication round in reauthentication.  These
 
-    notifications can only be used to indicate various failure cases.  In
 
-    other words, if the P bit is set to one, then the S bit MUST be set
 
-    to zero.
 
-    Section 9.10 and Section 9.11 specify what other attributes must be
 
-    included in the notification packets.
 
-    Some of the notification codes are authorization related and hence
 
-    not usually considered as part of the responsibility of an EAP
 
-    method.  However, they are included as part of EAP-AKA because there
 
-    are currently no other ways to convey this information to the user in
 
-    a localizable way, and the information is potentially useful for the
 
-    user.  An EAP-AKA server implementation may decide never to send
 
-    these EAP-AKA notifications.
 
- 6.2.  Result Indications
 
-    As discussed in Section 6.3, the server and the peer use explicit
 
-    error messages in all error cases.  If the server detects an error
 
-    after successful authentication, the server uses an EAP-AKA
 
-    notification to indicate failure to the peer.  In this case, the
 
-    result indication is integrity and replay protected.
 
- Arkko & Haverinen            Informational                     [Page 39]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    By sending an EAP-Response/AKA-Challenge packet or an
 
-    EAP-Response/AKA-Reauthentication packet (without
 
-    AT_COUNTER_TOO_SMALL), the peer indicates that it has successfully
 
-    authenticated the server and that the peer's local policy accepts the
 
-    EAP exchange.  In other words, these packets are implicit success
 
-    indications from the peer to the server.
 
-    EAP-AKA also supports optional protected success indications from the
 
-    server to the peer.  If the EAP server wants to use protected success
 
-    indications, it includes the AT_RESULT_IND attribute in the
 
-    EAP-Request/AKA-Challenge or the EAP-Request/AKA-Reauthentication
 
-    packet.  This attribute indicates that the EAP server would like to
 
-    use result indications in both successful and unsuccessful cases.  If
 
-    the peer also wants this, the peer includes AT_RESULT_IND in
 
-    EAP-Response/AKA-Challenge or EAP-Response/AKA-Reauthentication.  The
 
-    peer MUST NOT include AT_RESULT_IND if it did not receive
 
-    AT_RESULT_IND from the server.  If both the peer and the server used
 
-    AT_RESULT_IND, then the EAP exchange is not complete yet, but an
 
-    EAP-AKA notification round will follow.  The following EAP-AKA
 
-    notification may indicate either failure or success.
 
-    Success indications with the AT_NOTIFICATION code "Success" (32768)
 
-    can only be used if both the server and the peer indicate they want
 
-    to use them with AT_RESULT_IND.  If the server did not include
 
-    AT_RESULT_IND in the EAP-Request/AKA-Challenge or
 
-    EAP-Request/AKA-Reauthentication packet, or if the peer did not
 
-    include AT_RESULT_IND in the corresponding response packet, then the
 
-    server MUST NOT use protected success indications.
 
-    Because the server uses the AT_NOTIFICATION code "Success" (32768) to
 
-    indicate that the EAP exchange has completed successfully, the EAP
 
-    exchange cannot fail when the server processes the EAP-AKA response
 
-    to this notification.  Hence, the server MUST ignore the contents of
 
-    the EAP-AKA response it receives to the EAP-Request/AKA-Notification
 
-    with this code.  Regardless of the contents of the EAP-AKA response,
 
-    the server MUST send EAP-Success as the next packet.
 
- 6.3.  Error Cases
 
-    This section specifies the operation of the peer and the server in
 
-    error cases.  The subsections below require the EAP-AKA peer and
 
-    server to send an error packet (EAP-Response/AKA-Client-Error,
 
-    EAP-Response/AKA-Authentication-Reject or
 
-    EAP-Response/AKA-Synchronization-Failure from the peer and
 
-    EAP-Request/AKA-Notification from the server) in error cases.
 
-    However, implementations SHOULD NOT rely upon the correct error
 
-    reporting behavior of the peer, authenticator, or server.  It is
 
-    possible for error messages and other messages to be lost in transit,
 
- Arkko & Haverinen            Informational                     [Page 40]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    or for a malicious participant to attempt to consume resources by not
 
-    issuing error messages.  Both the peer and the EAP server SHOULD have
 
-    a mechanism to clean up state even if an error message or EAP-Success
 
-    is not received after a timeout period.
 
- 6.3.1.  Peer Operation
 
-    Two special error messages have been specified for error cases that
 
-    are related to the processing of the AKA AUTN parameter, as described
 
-    in Section 3: (1) if the peer does not accept AUTN, the peer responds
 
-    with EAP-Response/AKA-Authentication-Reject (Section 9.5), and the
 
-    server issues EAP-Failure, and (2) if the peer detects that the
 
-    sequence number in AUTN is not correct, the peer responds with
 
-    EAP-Response/AKA-Synchronization-Failure (Section 9.6), and the
 
-    server proceeds with a new EAP-Request/AKA-Challenge.
 
-    In other error cases, when an EAP-AKA peer detects an error in a
 
-    received EAP-AKA packet, the EAP-AKA peer responds with the
 
-    EAP-Response/AKA-Client-Error packet.  In response to the
 
-    EAP-Response/AKA-Client-Error, the EAP server MUST issue the
 
-    EAP-Failure packet, and the authentication exchange terminates.
 
-    By default, the peer uses the client error code 0, "unable to process
 
-    packet".  This error code is used in the following cases:
 
-    o  EAP exchange is not acceptable according to the peer's local
 
-       policy.
 
-    o  The peer is not able to parse the EAP request, i.e., the EAP
 
-       request is malformed.
 
-    o  The peer encountered a malformed attribute.
 
-    o  Wrong attribute types or duplicate attributes have been included
 
-       in the EAP request.
 
-    o  A mandatory attribute is missing.
 
-    o  Unrecognized non-skippable attribute.
 
-    o  Unrecognized or unexpected EAP-AKA Subtype in the EAP request.
 
-    o  Invalid AT_MAC.  The peer SHOULD log this event.
 
-    o  Invalid AT_CHECKCODE.  The peer SHOULD log this event.
 
-    o  Invalid pad bytes in AT_PADDING.
 
-    o  The peer does not want to process AT_PERMANENT_ID_REQ.
 
- 6.3.2.  Server Operation
 
-    If an EAP-AKA server detects an error in a received EAP-AKA response,
 
-    the server MUST issue the EAP-Request/AKA-Notification packet with an
 
-    AT_NOTIFICATION code that implies failure.  By default, the server
 
-    uses one of the general failure codes ("General failure after
 
-    authentication" (0) or "General failure" (16384)).  The choice
 
- Arkko & Haverinen            Informational                     [Page 41]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    between these two codes depends on the phase of the EAP-AKA exchange,
 
-    see Section 6.  The error cases when the server issues an
 
-    EAP-Request/AKA-Notification that implies failure include the
 
-    following:
 
-    o  The server is not able to parse the peer's EAP response.
 
-    o  The server encounters a malformed attribute, a non-recognized
 
-       non-skippable attribute, or a duplicate attribute.
 
-    o  A mandatory attribute is missing or an invalid attribute was
 
-       included.
 
-    o  Unrecognized or unexpected EAP-AKA Subtype in the EAP Response.
 
-    o  Invalid AT_MAC.  The server SHOULD log this event.
 
-    o  Invalid AT_CHECKCODE.  The server SHOULD log this event.
 
-    o  Invalid AT_COUNTER.
 
- 6.3.3.  EAP-Failure
 
-    The EAP-AKA server sends EAP-Failure in three cases:
 
-    1.  In response to an EAP-Response/AKA-Client-Error packet the server
 
-        has received from the peer, or
 
-    2.  In response to an EAP-Response/AKA-Authentication-Reject packet
 
-        the server has received from the peer, or
 
-    3.  Following an EAP-AKA notification round, when the AT_NOTIFICATION
 
-        code implies failure.
 
-    The EAP-AKA server MUST NOT send EAP-Failure in other cases than
 
-    these three.  However, it should be noted that even though the
 
-    EAP-AKA server would not send an EAP-Failure, an authorization
 
-    decision that happens outside EAP-AKA, such as in the AAA server or
 
-    in an intermediate AAA proxy, may result in a failed exchange.
 
-    The peer MUST accept the EAP-Failure packet in case 1), case 2), and
 
-    case 3) above.  The peer SHOULD silently discard the EAP-Failure
 
-    packet in other cases.
 
- 6.3.4.  EAP-Success
 
-    On full authentication, the server can only send EAP-Success after
 
-    the EAP/AKA-Challenge round.  The peer MUST silently discard any
 
-    EAP-Success packets if they are received before the peer has
 
-    successfully authenticated the server and sent the
 
-    EAP-Response/AKA-Challenge packet.
 
- Arkko & Haverinen            Informational                     [Page 42]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    If the peer did not indicate that it wants to use protected success
 
-    indications with AT_RESULT_IND (as discussed in Section 6.2) on full
 
-    authentication, then the peer MUST accept EAP-Success after a
 
-    successful EAP/AKA-Challenge round.
 
-    If the peer indicated that it wants to use protected success
 
-    indications with AT_RESULT_IND (as discussed in Section 6.2), then
 
-    the peer MUST NOT accept EAP-Success after a successful EAP/
 
-    AKA-Challenge round.  In this case, the peer MUST only accept
 
-    EAP-Success after receiving an EAP-AKA Notification with the
 
-    AT_NOTIFICATION code "Success" (32768).
 
-    On fast re-authentication, EAP-Success can only be sent after the
 
-    EAP/AKA-Reauthentication round.  The peer MUST silently discard any
 
-    EAP-Success packets if they are received before the peer has
 
-    successfully authenticated the server and sent the
 
-    EAP-Response/AKA-Reauthentication packet.
 
-    If the peer did not indicate that it wants to use protected success
 
-    indications with AT_RESULT_IND (as discussed in Section 6.2) on fast
 
-    re-authentication, then the peer MUST accept EAP-Success after a
 
-    successful EAP/AKA-Reauthentication round.
 
-    If the peer indicated that it wants to use protected success
 
-    indications with AT_RESULT_IND (as discussed in Section 6.2), then
 
-    the peer MUST NOT accept EAP-Success after a successful EAP/AKA-
 
-    Reauthentication round.  In this case, the peer MUST only accept
 
-    EAP-Success after receiving an EAP-AKA Notification with the
 
-    AT_NOTIFICATION code "Success" (32768).
 
-    If the peer receives an EAP-AKA notification (Section 6) that
 
-    indicates failure, then the peer MUST no longer accept the
 
-    EAP-Success packet, even if the server authentication was
 
-    successfully completed.
 
- 7.  Key Generation
 
-    This section specifies how keying material is generated.
 
-    On EAP-AKA full authentication, a Master Key (MK) is derived from the
 
-    underlying AKA values (CK and IK keys), and the identity, as follows.
 
-    MK = SHA1(Identity|IK|CK)
 
-    In the formula above, the "|" character denotes concatenation.
 
-    Identity denotes the peer identity string without any terminating
 
-    null characters.  It is the identity from the last AT_IDENTITY
 
-    attribute sent by the peer in this exchange, or, if AT_IDENTITY was
 
- Arkko & Haverinen            Informational                     [Page 43]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    not used, the identity from the EAP-Response/Identity packet.  The
 
-    identity string is included as-is, without any changes.  As discussed
 
-    in Section 4.1.2.2, relying on EAP-Response/Identity for conveying
 
-    the EAP-AKA peer identity is discouraged, and the server SHOULD use
 
-    the EAP-AKA method-specific identity attributes.  The hash function
 
-    SHA-1 is specified in [SHA-1].
 
-    The Master Key is fed into a Pseudo-Random number Function (PRF),
 
-    which generates separate Transient EAP Keys (TEKs) for protecting
 
-    EAP-AKA packets, as well as a Master Session Key (MSK) for link layer
 
-    security and an Extended Master Session Key (EMSK) for other
 
-    purposes.  On fast re-authentication, the same TEKs MUST be used for
 
-    protecting EAP packets, but a new MSK and a new EMSK MUST be derived
 
-    from the original MK and from new values exchanged in the fast
 
-    re-authentication.
 
-    EAP-AKA requires two TEKs for its own purposes: the authentication
 
-    key K_aut, to be used with the AT_MAC attribute, and the encryption
 
-    key K_encr, to be used with the AT_ENCR_DATA attribute.  The same
 
-    K_aut and K_encr keys are used in full authentication and subsequent
 
-    fast re-authentications.
 
-    Key derivation is based on the random number generation specified in
 
-    NIST Federal Information Processing Standards (FIPS) Publication
 
-    186-2 [PRF].  The pseudo-random number generator is specified in the
 
-    change notice 1 (2001 October 5) of [PRF] (Algorithm 1).  As
 
-    specified in the change notice (page 74), when Algorithm 1 is used as
 
-    a general-purpose pseudo-random number generator, the "mod q" term in
 
-    step 3.3 is omitted.  The function G used in the algorithm is
 
-    constructed via Secure Hash Standard as specified in Appendix 3.3 of
 
-    the standard.  It should be noted that the function G is very similar
 
-    to SHA-1, but the message padding is different.  Please refer to
 
-    [PRF] for full details.  For convenience, the random number algorithm
 
-    with the correct modification is cited in Annex A.
 
-    160-bit XKEY and XVAL values are used, so b = 160.  On each full
 
-    authentication, the Master Key is used as the initial secret seed-key
 
-    XKEY.  The optional user input values (XSEED_j) in step 3.1 are set
 
-    to zero.
 
-    On full authentication, the resulting 320-bit random numbers x_0,
 
-    x_1, ..., x_m-1 are concatenated and partitioned into suitable-sized
 
-    chunks and used as keys in the following order: K_encr (128 bits),
 
-    K_aut (128 bits), Master Session Key (64 bytes), Extended Master
 
-    Session Key (64 bytes).
 
- Arkko & Haverinen            Informational                     [Page 44]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    On fast re-authentication, the same pseudo-random number generator
 
-    can be used to generate a new Master Session Key and a new Extended
 
-    Master Session Key.  The seed value XKEY' is calculated as follows:
 
-    XKEY' = SHA1(Identity|counter|NONCE_S| MK)
 
-    In the formula above, the Identity denotes the fast re-authentication
 
-    identity, without any terminating null characters, from the
 
-    AT_IDENTITY attribute of the EAP-Response/AKA-Identity packet, or, if
 
-    EAP-Response/AKA-Identity was not used on fast re-authentication, it
 
-    denotes the identity string from the EAP-Response/Identity packet.
 
-    The counter denotes the counter value from the AT_COUNTER attribute
 
-    used in the EAP-Response/AKA-Reauthentication packet.  The counter is
 
-    used in network byte order.  NONCE_S denotes the 16-byte random
 
-    NONCE_S value from the AT_NONCE_S attribute used in the
 
-    EAP-Request/AKA-Reauthentication packet.  The MK is the Master Key
 
-    derived on the preceding full authentication.
 
-    On fast re-authentication, the pseudo-random number generator is run
 
-    with the new seed value XKEY', and the resulting 320-bit random
 
-    numbers x_0, x_1, ..., x_m-1 are concatenated and partitioned into
 
-    64-byte chunks and used as the new 64-byte Master Session Key and the
 
-    new 64-byte Extended Master Session Key.  Note that because K_encr
 
-    and K_aut are not derived on fast re-authentication, the Master
 
-    Session Key and the Extended Master Session key are obtained from the
 
-    beginning of the key stream x_0, x_1, ....
 
-    The first 32 bytes of the MSK can be used as the Pairwise Master Key
 
-    (PMK) for IEEE 802.11i.
 
-    When the RADIUS attributes specified in [RFC2548] are used to
 
-    transport keying material, then the first 32 bytes of the MSK
 
-    correspond to MS-MPPE-RECV-KEY and the second 32 bytes to
 
-    MS-MPPE-SEND-KEY.  In this case, only 64 bytes of keying material
 
-    (the MSK) are used.
 
- 8.  Message Format and Protocol Extensibility
 
- 8.1.  Message Format
 
-    As specified in [RFC3748], EAP packets begin with the Code,
 
-    Identifiers, Length, and Type fields, which are followed by
 
-    EAP-method-specific Type-Data.  The Code field in the EAP header is
 
-    set to 1 for EAP requests, and to 2 for EAP Responses.  The usage of
 
-    the Length and Identifier fields in the EAP header is also specified
 
-    in [RFC3748].  In EAP-AKA, the Type field is set to 23.
 
- Arkko & Haverinen            Informational                     [Page 45]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    In EAP-AKA, the Type-Data begins with an EAP-AKA header that consists
 
-    of a 1-octet Subtype field, and a 2-octet reserved field.  The
 
-    Subtype values used in EAP-AKA are defined in Section 11.  The
 
-    formats of the EAP header and the EAP-AKA header are shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |     Code      |  Identifier   |            Length             |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |     Type      |    Subtype    |           Reserved            |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The rest of the Type-Data, immediately following the EAP-AKA header,
 
-    consists of attributes that are encoded in Type, Length, Value
 
-    format.  The figure below shows the generic format of an attribute.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |Attribute Type |    Length     | Value...
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    Attribute Type
 
-          Indicates the particular type of attribute.  The attribute type
 
-          values are listed in Section 11.
 
-    Length
 
-          Indicates the length of this attribute in multiples of 4 bytes.
 
-          The maximum length of an attribute is 1024 bytes.  The length
 
-          includes the Attribute Type and Length bytes.
 
-    Value
 
-          The particular data associated with this attribute.  This field
 
-          is always included and it is two or more bytes in length.  The
 
-          type and length fields determine the format and length of the
 
-          value field.
 
-    Attributes numbered within the range 0 through 127 are called
 
-    non-skippable attributes.  When an EAP-AKA peer encounters a
 
-    non-skippable attribute type that the peer does not recognize, the
 
-    peer MUST send the EAP-Response/AKA-Client-Error packet, and the
 
-    authentication exchange terminates.  If an EAP-AKA server encounters
 
-    a non-skippable attribute that the server does not recognize, then
 
-    the server sends EAP-Request/AKA-Notification packet with an
 
- Arkko & Haverinen            Informational                     [Page 46]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    AT_NOTIFICATION code that implies general failure ("General failure
 
-    after authentication" (0), or "General failure" (16384), depending on
 
-    the phase of the exchange), and the authentication exchange
 
-    terminates.
 
-    When an attribute numbered in the range 128 through 255 is
 
-    encountered but not recognized, that particular attribute is ignored,
 
-    but the rest of the attributes and message data MUST still be
 
-    processed.  The Length field of the attribute is used to skip the
 
-    attribute value when searching for the next attribute.  These
 
-    attributes are called skippable attributes.
 
-    Unless otherwise specified, the order of the attributes in an EAP-AKA
 
-    message is insignificant, and an EAP-AKA implementation should not
 
-    assume a certain order will be used.
 
-    Attributes can be encapsulated within other attributes.  In other
 
-    words, the value field of an attribute type can be specified to
 
-    contain other attributes.
 
- 8.2.  Protocol Extensibility
 
-    EAP-AKA can be extended by specifying new attribute types.  If
 
-    skippable attributes are used, it is possible to extend the protocol
 
-    without breaking old implementations.  As specified in Section 10.13,
 
-    if new attributes are specified for EAP-Request/AKA-Identity or
 
-    EAP-Response/AKA-Identity, then the AT_CHECKCODE MUST be used to
 
-    integrity protect the new attributes.
 
-    When specifying new attributes, it should be noted that EAP-AKA does
 
-    not support message fragmentation.  Hence, the sizes of the new
 
-    extensions MUST be limited so that the maximum transfer unit (MTU) of
 
-    the underlying lower layer is not exceeded.  According to [RFC3748],
 
-    lower layers must provide an EAP MTU of 1020 bytes or greater, so any
 
-    extensions to EAP-AKA SHOULD NOT exceed the EAP MTU of 1020 bytes.
 
-    EAP-AKA packets do not include a version field.  However, should
 
-    there be a reason to revise this protocol in the future, new
 
-    non-skippable or skippable attributes could be specified in order to
 
-    implement revised EAP-AKA versions in a backward-compatible manner.
 
-    It is possible to introduce version negotiation in the
 
-    EAP-Request/AKA-Identity and EAP-Response/AKA-Identity messages by
 
-    specifying new skippable attributes.
 
- Arkko & Haverinen            Informational                     [Page 47]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 9.  Messages
 
-    This section specifies the messages used in EAP-AKA.  It specifies
 
-    when a message may be transmitted or accepted, which attributes are
 
-    allowed in a message, which attributes are required in a message, and
 
-    other message-specific details.  Message format is specified in
 
-    Section 8.1.
 
- 9.1.  EAP-Request/AKA-Identity
 
-    The EAP/AKA-Identity roundtrip MAY be used for obtaining the peer
 
-    identity from the server.  As discussed in Section 4.1, several
 
-    AKA-Identity rounds may be required in order to obtain a valid peer
 
-    identity.
 
-    The server MUST include one of the following identity requesting
 
-    attributes: AT_PERMANENT_ID_REQ, AT_FULLAUTH_ID_REQ, AT_ANY_ID_REQ.
 
-    These three attributes are mutually exclusive, so the server MUST NOT
 
-    include more than one of the attributes.
 
-    If the server has previously issued an EAP-Request/AKA-Identity
 
-    message with the AT_PERMANENT_ID_REQ attribute, and if the server has
 
-    received a response from the peer, then the server MUST NOT issue a
 
-    new EAP-Request/AKA-Identity packet.
 
-    If the server has previously issued an EAP-Request/AKA-Identity
 
-    message with the AT_FULLAUTH_ID_REQ attribute, and if the server has
 
-    received a response from the peer, then the server MUST NOT issue a
 
-    new EAP-Request/AKA-Identity packet with the AT_ANY_ID_REQ or
 
-    AT_FULLAUTH_ID_REQ attributes.
 
-    If the server has previously issued an EAP-Request/AKA-Identity
 
-    message with the AT_ANY_ID_REQ attribute, and if the server has
 
-    received a response from the peer, then the server MUST NOT issue a
 
-    new EAP-Request/AKA-Identity packet with the AT_ANY_ID_REQ.
 
-    This message MUST NOT include AT_MAC, AT_IV, or AT_ENCR_DATA.
 
- 9.2.  EAP-Response/AKA-Identity
 
-    The peer sends EAP-Response/AKA-Identity in response to a valid
 
-    EAP-Request/AKA-Identity from the server.
 
-    The peer MUST include the AT_IDENTITY attribute.  The usage of
 
-    AT_IDENTITY is defined in Section 4.1.
 
-    This message MUST NOT include AT_MAC, AT_IV, or AT_ENCR_DATA.
 
- Arkko & Haverinen            Informational                     [Page 48]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 9.3.  EAP-Request/AKA-Challenge
 
-    The server sends the EAP-Request/AKA-Challenge on full authentication
 
-    after successfully obtaining the subscriber identity.
 
-    The AT_RAND attribute MUST be included.
 
-    AT_MAC MUST be included.  In EAP-Request/AKA-Challenge, there is no
 
-    message-specific data covered by the MAC, see Section 10.15.
 
-    The AT_RESULT_IND attribute MAY be included.  The usage of this
 
-    attribute is discussed in Section 6.2.
 
-    The AT_CHECKCODE attribute MAY be included, and in certain cases
 
-    specified in Section 10.13, it MUST be included.
 
-    The EAP-Request/AKA-Challenge packet MAY include encrypted attributes
 
-    for identity privacy and for communicating the next re-authentication
 
-    identity.  In this case, the AT_IV and AT_ENCR_DATA attributes are
 
-    included (Section 10.12).
 
-    The plaintext of the AT_ENCR_DATA value field consists of nested
 
-    attributes.  The nested attributes MAY include AT_PADDING (as
 
-    specified in Section 10.12).  If the server supports identity privacy
 
-    and wants to communicate a pseudonym to the peer for the next full
 
-    authentication, then the nested encrypted attributes include the
 
-    AT_NEXT_PSEUDONYM attribute.  If the server supports
 
-    re-authentication and wants to communicate a fast re-authentication
 
-    identity to the peer, then the nested encrypted attributes include
 
-    the AT_NEXT_REAUTH_ID attribute.  Later versions of this protocol MAY
 
-    specify additional attributes to be included within the encrypted
 
-    data.
 
-    When processing this message, the peer MUST process AT_RAND and
 
-    AT_AUTN before processing other attributes.  Only if these attributes
 
-    are verified to be valid, the peer derives keys and verifies AT_MAC.
 
-    The operation in case an error occurs is specified in Section 6.3.1.
 
- 9.4.  EAP-Response/AKA-Challenge
 
-    The peer sends EAP-Response/AKA-Challenge in response to a valid
 
-    EAP-Request/AKA-Challenge.
 
-    Sending this packet indicates that the peer has successfully
 
-    authenticated the server and that the EAP exchange will be accepted
 
-    by the peer's local policy.  Hence, if these conditions are not met,
 
-    then the peer MUST NOT send EAP-Response/AKA-Challenge, but the peer
 
-    MUST send EAP-Response/AKA-Client-Error.
 
- Arkko & Haverinen            Informational                     [Page 49]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    The AT_MAC attribute MUST be included.  In
 
-    EAP-Response/AKA-Challenge, there is no message-specific data covered
 
-    by the MAC, see Section 10.15.
 
-    The AT_RES attribute MUST be included.
 
-    The AT_CHECKCODE attribute MAY be included, and in certain cases
 
-    specified in Section 10.13, it MUST be included.
 
-    The AT_RESULT_IND attribute MAY be included, if it was included in
 
-    EAP-Request/AKA-Challenge.  The usage of this attribute is discussed
 
-    in Section 6.2.
 
-    Later versions of this protocol MAY make use of the AT_ENCR_DATA and
 
-    AT_IV attributes in this message to include encrypted (skippable)
 
-    attributes.  The EAP server MUST process EAP-Response/AKA-Challenge
 
-    messages that include these attributes even if the server did not
 
-    implement these optional attributes.
 
- 9.5.  EAP-Response/AKA-Authentication-Reject
 
-    The peer sends the EAP-Response/AKA-Authentication-Reject packet if
 
-    it does not accept the AUTN parameter.  This version of the protocol
 
-    does not specify any attributes for this message.  Future versions of
 
-    the protocol MAY specify attributes for this message.
 
-    The AT_MAC, AT_ENCR_DATA, or AT_IV attributes MUST NOT be used in
 
-    this message.
 
- 9.6.  EAP-Response/AKA-Synchronization-Failure
 
-    The peer sends the EAP-Response/AKA-Synchronization-Failure, when the
 
-    sequence number in the AUTN parameter is incorrect.
 
-    The peer MUST include the AT_AUTS attribute.  Future versions of the
 
-    protocol MAY specify other additional attributes for this message.
 
-    The AT_MAC, AT_ENCR_DATA, or AT_IV attributes MUST NOT be used in
 
-    this message.
 
- 9.7.  EAP-Request/AKA-Reauthentication
 
-    The server sends the EAP-Request/AKA-Reauthentication message if it
 
-    wants to use fast re-authentication, and if it has received a valid
 
-    fast re-authentication identity in EAP-Response/Identity or
 
-    EAP-Response/AKA-Identity.
 
- Arkko & Haverinen            Informational                     [Page 50]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    The AT_MAC attribute MUST be included.  No message-specific data is
 
-    included in the MAC calculation, see Section 10.15.
 
-    The AT_RESULT_IND attribute MAY be included.  The usage of this
 
-    attribute is discussed in Section 6.2.
 
-    The AT_CHECKCODE attribute MAY be included, and in certain cases
 
-    specified in Section 10.13, it MUST be included.
 
-    The AT_IV and AT_ENCR_DATA attributes MUST be included.  The
 
-    plaintext consists of the following nested encrypted attributes,
 
-    which MUST be included: AT_COUNTER and AT_NONCE_S.  In addition, the
 
-    nested encrypted attributes MAY include the following attributes:
 
-    AT_NEXT_REAUTH_ID and AT_PADDING.
 
- 9.8.  EAP-Response/AKA-Reauthentication
 
-    The client sends the EAP-Response/AKA-Reauthentication packet in
 
-    response to a valid EAP-Request/AKA-Reauthentication.
 
-    The AT_MAC attribute MUST be included.  For
 
-    EAP-Response/AKA-Reauthentication, the MAC code is calculated over
 
-    the following data:  EAP packet| NONCE_S.  The EAP packet is
 
-    represented as specified in Section 8.1.  It is followed by the
 
-    16-byte NONCE_S value from the server's AT_NONCE_S attribute.
 
-    The AT_CHECKCODE attribute MAY be included, and in certain cases
 
-    specified in Section 10.13, it MUST be included.
 
-    The AT_IV and AT_ENCR_DATA attributes MUST be included.  The nested
 
-    encrypted attributes MUST include the AT_COUNTER attribute.  The
 
-    AT_COUNTER_TOO_SMALL attribute MAY be included in the nested
 
-    encrypted attributes, and it is included in cases specified in
 
-    Section 5.  The AT_PADDING attribute MAY be included.
 
-    The AT_RESULT_IND attribute MAY be included, if it was included in
 
-    EAP-Request/AKA-Reauthentication.  The usage of this attribute is
 
-    discussed in Section 6.2.
 
-    Sending this packet without AT_COUNTER_TOO_SMALL indicates that the
 
-    peer has successfully authenticated the server and that the EAP
 
-    exchange will be accepted by the peer's local policy.  Hence, if
 
-    these conditions are not met, then the peer MUST NOT send
 
-    EAP-Response/AKA-Reauthentication, but the peer MUST send
 
-    EAP-Response/ AKA-Client-Error.
 
- Arkko & Haverinen            Informational                     [Page 51]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 9.9.  EAP-Response/AKA-Client-Error
 
-    The peer sends EAP-Response/AKA-Client-Error in error cases, as
 
-    specified in Section 6.3.1.
 
-    The AT_CLIENT_ERROR_CODE attribute MUST be included.  The AT_MAC,
 
-    AT_IV, or AT_ENCR_DATA attributes MUST NOT be used with this packet.
 
- 9.10.  EAP-Request/AKA-Notification
 
-    The usage of this message is specified in Section 6.
 
-    The AT_NOTIFICATION attribute MUST be included.
 
-    The AT_MAC attribute MUST be included if the P bit of the
 
-    AT_NOTIFICATION code is set to zero, and MUST NOT be included if the
 
-    P bit is set to one.  The P bit is discussed in Section 6.
 
-    No message-specific data is included in the MAC calculation.  See
 
-    Section 10.15.
 
-    If EAP-Request/AKA-Notification is used on a fast re-authentication
 
-    exchange, and if the P bit in AT_NOTIFICATION is set to zero, then
 
-    AT_COUNTER is used for replay protection.  In this case, the
 
-    AT_ENCR_DATA and AT_IV attributes MUST be included, and the
 
-    encapsulated plaintext attributes MUST include the AT_COUNTER
 
-    attribute.  The counter value included in AT_COUNTER MUST be the same
 
-    as in the EAP-Request/AKA-Reauthentication packet on the same fast
 
-    re-authentication exchange.
 
- 9.11.  EAP-Response/AKA-Notification
 
-    The usage of this message is specified in Section 6.  This packet is
 
-    an acknowledgement of EAP-Request/AKA-Notification.
 
-    The AT_MAC attribute MUST be included in cases when the P bit of the
 
-    notification code in AT_NOTIFICATION of EAP-Request/AKA-Notification
 
-    is set to zero, and MUST NOT be included in cases when the P bit is
 
-    set to one.  The P bit is discussed in Section 6.
 
-    If EAP-Request/AKA-Notification is used on a fast re-authentication
 
-    exchange, and if the P bit in AT_NOTIFICATION is set to zero, then
 
-    AT_COUNTER is used for replay protection.  In this case, the
 
-    AT_ENCR_DATA and AT_IV attributes MUST be included, and the
 
-    encapsulated plaintext attributes MUST include the AT_COUNTER
 
-    attribute.  The counter value included in AT_COUNTER MUST be the same
 
-    as in the EAP-Request/AKA-Reauthentication packet on the same fast
 
-    re-authentication exchange.
 
- Arkko & Haverinen            Informational                     [Page 52]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 10.  Attributes
 
-    This section specifies the format of message attributes.  The
 
-    attribute type numbers are specified in Section 11.
 
- 10.1.  Table of Attributes
 
-    The following table provides a guide to which attributes may be found
 
-    in which kinds of messages, and in what quantity.  Messages are
 
-    denoted with numbers in parentheses as follows: (1) EAP-Request/
 
-    AKA-Identity, (2) EAP-Response/AKA-Identity, (3) EAP-Request/
 
-    AKA-Challenge, (4) EAP-Response/AKA-Challenge, (5) EAP-Request/
 
-    AKA-Notification, (6) EAP-Response/AKA-Notification, (7) EAP-
 
-    Response/AKA-Client-Error (8) EAP-Request/AKA-Reauthentication, (9)
 
-    EAP-Response/AKA-Reauthentication, (10) EAP-Response/AKA-
 
-    Authentication-Reject, and (11) EAP-Response/AKA-Synchronization-
 
-    Failure.  The column denoted with "E" indicates whether the attribute
 
-    is a nested attribute that MUST be included within AT_ENCR_DATA.
 
-    "0" indicates that the attribute MUST NOT be included in the message,
 
-    "1" indicates that the attribute MUST be included in the message,
 
-    "0-1" indicates that the attribute is sometimes included in the
 
-    message, and "0*" indicates that the attribute is not included in the
 
-    message in cases specified in this document, but MAY be included in
 
-    the future versions of the protocol.
 
-               Attribute (1) (2) (3) (4) (5) (6) (7) (8) (9) (10)(11) E
 
-     AT_PERMANENT_ID_REQ 0-1  0   0   0   0   0   0   0   0   0   0   N
 
-           AT_ANY_ID_REQ 0-1  0   0   0   0   0   0   0   0   0   0   N
 
-      AT_FULLAUTH_ID_REQ 0-1  0   0   0   0   0   0   0   0   0   0   N
 
-             AT_IDENTITY  0  0-1  0   0   0   0   0   0   0   0   0   N
 
-                 AT_RAND  0   0   1   0   0   0   0   0   0   0   0   N
 
-                 AT_AUTN  0   0   1   0   0   0   0   0   0   0   0   N
 
-                  AT_RES  0   0   0   1   0   0   0   0   0   0   0   N
 
-                 AT_AUTS  0   0   0   0   0   0   0   0   0   0   1   N
 
-       AT_NEXT_PSEUDONYM  0   0  0-1  0   0   0   0   0   0   0   0   Y
 
-       AT_NEXT_REAUTH_ID  0   0  0-1  0   0   0   0  0-1  0   0   0   Y
 
-                   AT_IV  0   0  0-1  0* 0-1 0-1  0   1   1   0   0   N
 
-            AT_ENCR_DATA  0   0  0-1  0* 0-1 0-1  0   1   1   0   0   N
 
-              AT_PADDING  0   0  0-1  0* 0-1 0-1  0  0-1 0-1  0   0   Y
 
-            AT_CHECKCODE  0   0  0-1 0-1  0   0   0  0-1 0-1  0   0   N
 
-           AT_RESULT_IND  0   0  0-1 0-1  0   0   0  0-1 0-1  0   0   N
 
-                  AT_MAC  0   0   1   1  0-1 0-1  0   1   1   0   0   N
 
-              AT_COUNTER  0   0   0   0  0-1 0-1  0   1   1   0   0   Y
 
-    AT_COUNTER_TOO_SMALL  0   0   0   0   0   0   0   0  0-1  0   0   Y
 
-              AT_NONCE_S  0   0   0   0   0   0   0   1   0   0   0   Y
 
-         AT_NOTIFICATION  0   0   0   0   1   0   0   0   0   0   0   N
 
-    AT_CLIENT_ERROR_CODE  0   0   0   0   0   0   1   0   0   0   0   N
 
- Arkko & Haverinen            Informational                     [Page 53]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    It should be noted that attributes AT_PERMANENT_ID_REQ,
 
-    AT_ANY_ID_REQ, and AT_FULLAUTH_ID_REQ are mutually exclusive, so that
 
-    only one of them can be included at the same time.  If one of the
 
-    attributes AT_IV or AT_ENCR_DATA is included, then both of the
 
-    attributes MUST be included.
 
- 10.2.  AT_PERMANENT_ID_REQ
 
-    The format of the AT_PERMANENT_ID_REQ attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |AT_PERM..._REQ | Length = 1    |           Reserved            |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The use of the AT_PERMANENT_ID_REQ is defined in Section 4.1.  The
 
-    value field only contains two reserved bytes, which are set to zero
 
-    on sending and ignored on reception.
 
- 10.3.  AT_ANY_ID_REQ
 
-    The format of the AT_ANY_ID_REQ attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |AT_ANY_ID_REQ  | Length = 1    |           Reserved            |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The use of the AT_ANY_ID_REQ is defined in Section 4.1.  The value
 
-    field only contains two reserved bytes, which are set to zero on
 
-    sending and ignored on reception.
 
- 10.4.  AT_FULLAUTH_ID_REQ
 
-    The format of the AT_FULLAUTH_ID_REQ attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |AT_FULLAUTH_...| Length = 1    |           Reserved            |
 
-    +---------------+---------------+-------------------------------+
 
-    The use of the AT_FULLAUTH_ID_REQ is defined in Section 4.1.  The
 
-    value field only contains two reserved bytes, which are set to zero
 
-    on sending and ignored on reception.
 
- Arkko & Haverinen            Informational                     [Page 54]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 10.5.  AT_IDENTITY
 
-    The format of the AT_IDENTITY attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    | AT_IDENTITY   | Length        | Actual Identity Length        |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |                                                               |
 
-    .                       Identity                                .
 
-    .                                                               .
 
-    |                                                               |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The use of the AT_IDENTITY is defined in Section 4.1.  The value
 
-    field of this attribute begins with 2-byte actual identity length,
 
-    which specifies the length of the identity in bytes.  This field is
 
-    followed by the subscriber identity of the indicated actual length.
 
-    The identity is the permanent identity, a pseudonym identity or a
 
-    fast re-authentication identity.  The identity format is specified in
 
-    Section 4.1.1.  The same identity format is used in the AT_IDENTITY
 
-    attribute and the EAP-Response/Identity packet, with the exception
 
-    that the peer MUST NOT decorate the identity it includes in
 
-    AT_IDENTITY.  The identity does not include any terminating null
 
-    characters.  Because the length of the attribute must be a multiple
 
-    of 4 bytes, the sender pads the identity with zero bytes when
 
-    necessary.
 
- 10.6.  AT_RAND
 
-    The format of the AT_RAND attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |    AT_RAND    | Length = 5    |           Reserved            |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |                                                               |
 
-    |                             RAND                              |
 
-    |                                                               |
 
-    |                                                               |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The value field of this attribute contains two reserved bytes
 
-    followed by the AKA RAND parameter, 16 bytes (128 bits).  The
 
-    reserved bytes are set to zero when sending and ignored on reception.
 
- Arkko & Haverinen            Informational                     [Page 55]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 10.7.  AT_AUTN
 
-    The format of the AT_AUTN attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |    AT_AUTN    | Length = 5    |           Reserved            |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |                                                               |
 
-    |                        AUTN                                   |
 
-    |                                                               |
 
-    |                                                               |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The value field of this attribute contains two reserved bytes
 
-    followed by the AKA AUTN parameter, 16 bytes (128 bits).  The
 
-    reserved bytes are set to zero when sending and ignored on reception.
 
- 10.8.  AT_RES
 
-    The format of the AT_RES attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |     AT_RES    |    Length     |          RES Length           |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
 
-    |                                                               |
 
-    |                             RES                               |
 
-    |                                                               |
 
-    |                                                               |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The value field of this attribute begins with the 2-byte RES Length,
 
-    which identifies the exact length of the RES in bits.  The RES length
 
-    is followed by the AKA RES parameter.  According to [TS33.105], the
 
-    length of the AKA RES can vary between 32 and 128 bits.  Because the
 
-    length of the AT_RES attribute must be a multiple of 4 bytes, the
 
-    sender pads the RES with zero bits where necessary.
 
- Arkko & Haverinen            Informational                     [Page 56]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 10.9.  AT_AUTS
 
-    The format of the AT_AUTS attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|
 
-    |    AT_AUTS    | Length = 4    |                               |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
 
-    |                                                               |
 
-    |                             AUTS                              |
 
-    |                                                               |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The value field of this attribute contains the AKA AUTS parameter,
 
-    112 bits (14 bytes).
 
- 10.10.  AT_NEXT_PSEUDONYM
 
-    The format of the AT_NEXT_PSEUDONYM attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    | AT_NEXT_PSEU..| Length        | Actual Pseudonym Length       |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |                                                               |
 
-    .                          Next Pseudonym                       .
 
-    .                                                               .
 
-    |                                                               |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The value field of this attribute begins with a 2-byte actual
 
-    pseudonym length, which specifies the length of the following
 
-    pseudonym in bytes.  This field is followed by a pseudonym username
 
-    that the peer can use in the next authentication.  The username MUST
 
-    NOT include any realm portion.  The username does not include any
 
-    terminating null characters.  Because the length of the attribute
 
-    must be a multiple of 4 bytes, the sender pads the pseudonym with
 
-    zero bytes when necessary.  The username encoding MUST follow the
 
-    UTF-8 transformation format [RFC3629].  This attribute MUST always be
 
-    encrypted by encapsulating it within the AT_ENCR_DATA attribute.
 
- Arkko & Haverinen            Informational                     [Page 57]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 10.11.  AT_NEXT_REAUTH_ID
 
-    The format of the AT_NEXT_REAUTH_ID attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    | AT_NEXT_REAU..| Length        | Actual Re-Auth Identity Length|
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |                                                               |
 
-    .              Next Fast Re-Authentication Username             .
 
-    .                                                               .
 
-    |                                                               |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The value field of this attribute begins with a 2-byte actual
 
-    re-authentication identity length which specifies the length of the
 
-    following fast re-authentication identity in bytes.  This field is
 
-    followed by a fast re-authentication identity that the peer can use
 
-    in the next fast re-authentication, as described in Section 5.  In
 
-    environments where a realm portion is required, the fast
 
-    re-authentication identity includes both a username portion and a
 
-    realm name portion.  The fast re-authentication identity does not
 
-    include any terminating null characters.  Because the length of the
 
-    attribute must be a multiple of 4 bytes, the sender pads the fast
 
-    re-authentication identity with zero bytes when necessary.  The
 
-    identity encoding MUST follow the UTF-8 transformation format
 
-    [RFC3629].  This attribute MUST always be encrypted by encapsulating
 
-    it within the AT_ENCR_DATA attribute.
 
- 10.12.  AT_IV, AT_ENCR_DATA, and AT_PADDING
 
-    AT_IV and AT_ENCR_DATA attributes can be used to transmit encrypted
 
-    information between the EAP-AKA peer and server.
 
-    The value field of AT_IV contains two reserved bytes followed by a
 
-    16-byte initialization vector required by the AT_ENCR_DATA attribute.
 
-    The reserved bytes are set to zero when sending and ignored on
 
-    reception.  The AT_IV attribute MUST be included if and only if the
 
-    AT_ENCR_DATA is included.  Section 6.3 specifies the operation if a
 
-    packet that does not meet this condition is encountered.
 
-    The sender of the AT_IV attribute chooses the initialization vector
 
-    at random.  The sender MUST NOT reuse the initialization vector value
 
-    from previous EAP-AKA packets.  The sender SHOULD use a good source
 
-    of randomness to generate the initialization vector.  Please see
 
-    [RFC4086] for more information about generating random numbers for
 
-    security applications.  The format of AT_IV is shown below.
 
- Arkko & Haverinen            Informational                     [Page 58]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |     AT_IV     | Length = 5    |           Reserved            |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |                                                               |
 
-    |                 Initialization Vector                         |
 
-    |                                                               |
 
-    |                                                               |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The value field of the AT_ENCR_DATA attribute consists of two
 
-    reserved bytes followed by cipher text bytes.  The cipher text bytes
 
-    are encrypted using the Advanced Encryption Standard (AES) [AES] with
 
-    a 128-bit key in the Cipher Block Chaining (CBC) mode of operation,
 
-    which uses the initialization vector from the AT_IV attribute.  The
 
-    reserved bytes are set to zero when sending and ignored on reception.
 
-    Please see [CBC] for a description of the CBC mode.  The format of
 
-    the AT_ENCR_DATA attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    | AT_ENCR_DATA  | Length        |           Reserved            |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |                                                               |
 
-    .                    Encrypted Data                             .
 
-    .                                                               .
 
-    |                                                               |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The derivation of the encryption key (K_encr) is specified in
 
-    Section 7.
 
-    The plaintext consists of nested EAP-AKA attributes.
 
-    The encryption algorithm requires the length of the plaintext to be a
 
-    multiple of 16 bytes.  The sender may need to include the AT_PADDING
 
-    attribute as the last attribute within AT_ENCR_DATA.  The AT_PADDING
 
-    attribute is not included if the total length of other nested
 
-    attributes within the AT_ENCR_DATA attribute is a multiple of 16
 
-    bytes.  As usual, the Length of the Padding attribute includes the
 
-    Attribute Type and Attribute Length fields.  The length of the
 
-    Padding attribute is 4, 8, or 12 bytes.  It is chosen so that the
 
-    length of the value field of the AT_ENCR_DATA attribute becomes a
 
-    multiple of 16 bytes.  The actual pad bytes in the value field are
 
-    set to zero (00 hexadecimal) on sending.  The recipient of the
 
-    message MUST verify that the pad bytes are set to zero.  If this
 
- Arkko & Haverinen            Informational                     [Page 59]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    verification fails on the peer, then it MUST send the
 
-    EAP-Response/AKA-Client-Error packet with the error code "unable to
 
-    process packet" to terminate the authentication exchange.  If this
 
-    verification fails on the server, then the server sends the
 
-    EAP-Response/AKA-Notification packet with an AT_NOTIFICATION code
 
-    that implies failure to terminate the authentication exchange.  The
 
-    format of the AT_PADDING attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |  AT_PADDING   | Length        | Padding...                    |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
 
-    |                                                               |
 
-    |                                                               |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
- 10.13.  AT_CHECKCODE
 
-    The AT_MAC attribute is not used in the very first EAP-AKA messages
 
-    during the AKA-Identity round, because keying material has not been
 
-    derived yet.  The peer and the server may exchange one or more pairs
 
-    of EAP-AKA messages of the Subtype AKA-Identity before keys are
 
-    derived and before the AT_MAC attribute can be applied.  The EAP/-
 
-    AKA-Identity messages may also be used upon fast re-authentication.
 
-    The AT_CHECKCODE attribute MAY be used to protect the EAP/
 
-    AKA-Identity messages.  In full authentication, the server MAY
 
-    include the AT_CHECKCODE in EAP-Request/AKA-Challenge, and the peer
 
-    MAY include AT_CHECKCODE in EAP-Response/AKA-Challenge.  In fast
 
-    re-authentication, the server MAY include AT_CHECKCODE in
 
-    EAP-Request/ AKA-Reauthentication, and the peer MAY include
 
-    AT_CHECKCODE in EAP-Response/AKA-Reauthentication.  The fact that the
 
-    peer receives an EAP-Request with AT_CHECKCODE does not imply that
 
-    the peer would have to include AT_CHECKCODE in the corresponding
 
-    response.  The peer MAY include AT_CHECKCODE even if the server did
 
-    not include AT_CHECKCODE in the EAP request.  Because the AT_MAC
 
-    attribute is used in these messages, AT_CHECKCODE will be integrity
 
-    protected with AT_MAC.  The format of the AT_CHECKCODE attribute is
 
-    shown below.
 
- Arkko & Haverinen            Informational                     [Page 60]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    | AT_CHECKCODE  | Length        |           Reserved            |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |                                                               |
 
-    |                     Checkcode (0 or 20 bytes)                 |
 
-    |                                                               |
 
-    |                                                               |
 
-    |                                                               |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The value field of AT_CHECKCODE begins with two reserved bytes, which
 
-    may be followed by a 20-byte checkcode.  If the checkcode is not
 
-    included in AT_CHECKCODE, then the attribute indicates that no EAP/-
 
-    AKA-Identity messages were exchanged.  This may occur in both full
 
-    authentication and fast re-authentication.  The reserved bytes are
 
-    set to zero when sending and ignored on reception.
 
-    The checkcode is a hash value, calculated with SHA1 [SHA-1], over all
 
-    EAP-Request/AKA-Identity and EAP-Response/AKA-Identity packets
 
-    exchanged in this authentication exchange.  The packets are included
 
-    in the order that they were transmitted, that is, starting with the
 
-    first EAP-Request/AKA-Identity message, followed by the corresponding
 
-    EAP-Response/AKA-Identity, followed by the second
 
-    EAP-Request/AKA-Identity (if used), etc.
 
-    EAP packets are included in the hash calculation "as-is" (as they
 
-    were transmitted or received).  All reserved bytes, padding bytes,
 
-    etc., that are specified for various attributes are included as such,
 
-    and the receiver must not reset them to zero.  No delimiter bytes,
 
-    padding, or any other framing are included between the EAP packets
 
-    when calculating the checkcode.
 
-    Messages are included in request/response pairs; in other words, only
 
-    full "round trips" are included.  Packets that are silently discarded
 
-    are not included, and retransmitted packets (that have the same
 
-    Identifier value) are only included once.  (The base EAP protocol
 
-    [RFC3748] ensures that requests and responses "match".)  The EAP
 
-    server must only include an EAP-Request/AKA-Identity in the
 
-    calculation after it has received a corresponding response with the
 
-    same Identifier value.
 
-    The peer must include the EAP-Request/AKA-Identity and the
 
-    corresponding response in the calculation only if the peer receives a
 
-    subsequent EAP-Request/AKA-Challenge or a follow-up EAP-Request/
 
-    AKA-Identity with a different Identifier value than in the first
 
-    EAP-Request/AKA-Identity.
 
- Arkko & Haverinen            Informational                     [Page 61]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    The AT_CHECKCODE attribute is optional to implement.  It is specified
 
-    in order to allow protection of the EAP/AKA-Identity messages and any
 
-    future extensions to them.  The implementation of AT_CHECKCODE is
 
-    RECOMMENDED.
 
-    If the receiver of AT_CHECKCODE implements this attribute, then the
 
-    receiver MUST check that the checkcode is correct.  If the checkcode
 
-    is invalid, the receiver must operate as specified in Section 6.3.
 
-    If the EAP/AKA-Identity messages are extended with new attributes,
 
-    then AT_CHECKCODE MUST be implemented and used.  More specifically,
 
-    if the server includes any attributes other than AT_PERMANENT_ID_REQ,
 
-    AT_FULLAUTH_ID_REQ, or AT_ANY_ID_REQ in the EAP-Request/AKA-Identity
 
-    packet, then the server MUST include AT_CHECKCODE in EAP-Request/
 
-    AKA-Challenge or EAP-Request/AKA-Reauthentication.  If the peer
 
-    includes any attributes other than AT_IDENTITY in the EAP-Response/
 
-    AKA-Identity message, then the peer MUST include AT_CHECKCODE in
 
-    EAP-Response/AKA-Challenge or EAP-Response/AKA-Reauthentication.
 
-    If the server implements the processing of any other attribute than
 
-    AT_IDENTITY for the EAP-Response/AKA-Identity message, then the
 
-    server MUST implement AT_CHECKCODE.  In this case, if the server
 
-    receives any attribute other than AT_IDENTITY in the
 
-    EAP-Response/AKA-Identity message, then the server MUST check that
 
-    AT_CHECKCODE is present in EAP-Response/AKA-Challenge or
 
-    EAP-Response/ AKA-Reauthentication.  The operation when a mandatory
 
-    attribute is missing is specified in Section 6.3.
 
-    Similarly, if the peer implements the processing of any attribute
 
-    other than AT_PERMANENT_ID_REQ, AT_FULLAUTH_ID_REQ, or AT_ANY_ID_REQ
 
-    for the EAP-Request/AKA-Identity packet, then the peer MUST implement
 
-    AT_CHECKCODE.  In this case, if the peer receives any attribute other
 
-    than AT_PERMANENT_ID_REQ, AT_FULLAUTH_ID_REQ, or AT_ANY_ID_REQ in the
 
-    EAP-Request/AKA-Identity packet, then the peer MUST check that
 
-    AT_CHECKCODE is present in EAP-Request/AKA-Challenge or
 
-    EAP-Request/AKA-Reauthentication.  The operation when a mandatory
 
-    attribute is missing is specified in Section 6.3.
 
- 10.14.  AT_RESULT_IND
 
-    The format of the AT_RESULT_IND attribute is shown below.
 
-      0                   1                   2                   3
 
-      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-     |  AT_RESULT_...| Length = 1    |           Reserved            |
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
- Arkko & Haverinen            Informational                     [Page 62]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    The value field of this attribute consists of two reserved bytes,
 
-    which are set to zero upon sending and ignored upon reception.  This
 
-    attribute is always sent unencrypted, so it MUST NOT be encapsulated
 
-    within the AT_ENCR_DATA attribute.
 
- 10.15.  AT_MAC
 
-    The AT_MAC attribute is used for EAP-AKA message authentication.
 
-    Section 9 specifies in which messages AT_MAC MUST be included.
 
-    The value field of the AT_MAC attribute contains two reserved bytes
 
-    followed by a keyed message authentication code (MAC).  The MAC is
 
-    calculated over the whole EAP packet and concatenated with optional
 
-    message-specific data, with the exception that the value field of the
 
-    MAC attribute is set to zero when calculating the MAC.  The EAP
 
-    packet includes the EAP header that begins with the Code field, the
 
-    EAP-AKA header that begins with the Subtype field, and all the
 
-    attributes, as specified in Section 8.1.  The reserved bytes in
 
-    AT_MAC are set to zero when sending and ignored on reception.  The
 
-    contents of the message-specific data that may be included in the MAC
 
-    calculation are specified separately for each EAP-AKA message in
 
-    Section 9.
 
-    The format of the AT_MAC attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |     AT_MAC    | Length = 5    |           Reserved            |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |                                                               |
 
-    |                           MAC                                 |
 
-    |                                                               |
 
-    |                                                               |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The MAC algorithm is HMAC-SHA1-128 [RFC2104] keyed hash value.  (The
 
-    HMAC-SHA1-128 value is obtained from the 20-byte HMAC-SHA1 value by
 
-    truncating the output to 16 bytes.  Hence, the length of the MAC is
 
-    16 bytes.)  The derivation of the authentication key (K_aut) used in
 
-    the calculation of the MAC is specified in Section 7.
 
-    When the AT_MAC attribute is included in an EAP-AKA message, the
 
-    recipient MUST process the AT_MAC attribute before looking at any
 
-    other attributes, except when processing EAP-Request/AKA-Challenge.
 
-    The processing of EAP-Request/AKA-Challenge is specified in
 
- Arkko & Haverinen            Informational                     [Page 63]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    Section 9.3.  If the message authentication code is invalid, then the
 
-    recipient MUST ignore all other attributes in the message and operate
 
-    as specified in Section 6.3.
 
- 10.16.  AT_COUNTER
 
-    The format of the AT_COUNTER attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |  AT_COUNTER   | Length = 1    |           Counter             |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The value field of the AT_COUNTER attribute consists of a 16-bit
 
-    unsigned integer counter value, represented in network byte order.
 
-    This attribute MUST always be encrypted by encapsulating it within
 
-    the AT_ENCR_DATA attribute.
 
- 10.17.  AT_COUNTER_TOO_SMALL
 
-    The format of the AT_COUNTER_TOO_SMALL attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |  AT_COUNTER...| Length = 1    |           Reserved            |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The value field of this attribute consists of two reserved bytes,
 
-    which are set to zero upon sending and ignored upon reception.  This
 
-    attribute MUST always be encrypted by encapsulating it within the
 
-    AT_ENCR_DATA attribute.
 
- Arkko & Haverinen            Informational                     [Page 64]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 10.18.  AT_NONCE_S
 
-    The format of the AT_NONCE_S attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    | AT_NONCE_S    | Length = 5    |           Reserved            |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |                                                               |
 
-    |                                                               |
 
-    |                            NONCE_S                            |
 
-    |                                                               |
 
-    |                                                               |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The value field of the AT_NONCE_S attribute contains two reserved
 
-    bytes followed by a random number (16 bytes) that is freshly
 
-    generated by the server for this EAP-AKA fast re-authentication.  The
 
-    random number is used as challenge for the peer and also as a seed
 
-    value for the new keying material.  The reserved bytes are set to
 
-    zero upon sending and ignored upon reception.  This attribute MUST
 
-    always be encrypted by encapsulating it within the AT_ENCR_DATA
 
-    attribute.
 
-    The server MUST NOT reuse the NONCE_S value from a previous EAP-AKA
 
-    fast re-authentication exchange.  The server SHOULD use a good source
 
-    of randomness to generate NONCE_S.  Please see [RFC4086] for more
 
-    information about generating random numbers for security
 
-    applications.
 
- 10.19.  AT_NOTIFICATION
 
-    The format of the AT_NOTIFICATION attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |AT_NOTIFICATION| Length = 1    |S|P|  Notification Code        |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The value field of this attribute contains a two-byte notification
 
-    code.  The first and second bit (S and P) of the notification code
 
-    are interpreted as described in Section 6.
 
- Arkko & Haverinen            Informational                     [Page 65]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    The notification code values listed below have been reserved.  The
 
-    descriptions below illustrate the semantics of the notifications.
 
-    The peer implementation MAY use different wordings when presenting
 
-    the notifications to the user.  The "requested service" depends on
 
-    the environment where EAP-AKA is applied.
 
-    0 - General failure after authentication.  (Implies failure, used
 
-    after successful authentication.)
 
-    16384 - General failure.  (Implies failure, used before
 
-    authentication.)
 
-    32768 - Success.  User has been successfully authenticated.  (Does
 
-    not imply failure, used after successful authentication.)  The usage
 
-    of this code is discussed in Section 6.2.
 
-    1026 - User has been temporarily denied access to the requested
 
-    service.  (Implies failure, used after successful authentication.)
 
-    1031 - User has not subscribed to the requested service.  (Implies
 
-    failure, used after successful authentication.)
 
- 10.20.  AT_CLIENT_ERROR_CODE
 
-    The format of the AT_CLIENT_ERROR_CODE attribute is shown below.
 
-     0                   1                   2                   3
 
-     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    |AT_CLIENT_ERR..| Length = 1    |     Client Error Code         |
 
-    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The value field of this attribute contains a two-byte client error
 
-    code.  The following error code values have been reserved.
 
-    0 "unable to process packet": a general error code
 
- 11.  IANA and Protocol Numbering Considerations
 
-    IANA has assigned the EAP type number 23 for EAP-AKA authentication.
 
-    EAP-AKA shares most of the protocol design, such as attributes and
 
-    message Subtypes, with EAP-SIM [EAP-SIM].  EAP-AKA protocol numbers
 
-    should be administered in the same IANA registry with EAP-SIM.  This
 
-    document establishes the registries and lists the initial protocol
 
-    numbers for both protocols.
 
- Arkko & Haverinen            Informational                     [Page 66]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    EAP-AKA and EAP-SIM messages include a Subtype field.  The Subtype is
 
-    a new numbering space for which IANA administration is required.  The
 
-    Subtype is an 8-bit integer.  The following Subtypes are specified in
 
-    this document and in [EAP-SIM]:
 
-         AKA-Challenge...................................1
 
-         AKA-Authentication-Reject.......................2
 
-         AKA-Synchronization-Failure.....................4
 
-         AKA-Identity....................................5
 
-         SIM-Start......................................10
 
-         SIM-Challenge..................................11
 
-         AKA-Notification and SIM-Notification..........12
 
-         AKA-Reauthentication and SIM-Reauthentication..13
 
-         AKA-Client-Error and SIM-Client-Error..........14
 
-    The messages are composed of attributes, which have 8-bit attribute
 
-    type numbers.  Attributes numbered within the range 0 through 127 are
 
-    called non-skippable attributes, and attributes within the range of
 
-    128 through 255 are called skippable attributes.  The EAP-AKA and
 
-    EAP-SIM attribute type number is a new numbering space for which IANA
 
-    administration is required.  The following attribute types are
 
-    specified in this document in [EAP-SIM]:
 
-         AT_RAND.........................................1
 
-         AT_AUTN.........................................2
 
-         AT_RES..........................................3
 
-         AT_AUTS.........................................4
 
-         AT_PADDING......................................6
 
-         AT_NONCE_MT.....................................7
 
-         AT_PERMANENT_ID_REQ............................10
 
-         AT_MAC.........................................11
 
-         AT_NOTIFICATION................................12
 
-         AT_ANY_ID_REQ..................................13
 
-         AT_IDENTITY....................................14
 
-         AT_VERSION_LIST................................15
 
-         AT_SELECTED_VERSION............................16
 
-         AT_FULLAUTH_ID_REQ.............................17
 
-         AT_COUNTER.....................................19
 
-         AT_COUNTER_TOO_SMALL...........................20
 
-         AT_NONCE_S.....................................21
 
-         AT_CLIENT_ERROR_CODE...........................22
 
-         AT_IV.........................................129
 
-         AT_ENCR_DATA..................................130
 
-         AT_NEXT_PSEUDONYM.............................132
 
-         AT_NEXT_REAUTH_ID.............................133
 
-         AT_CHECKCODE..................................134
 
-         AT_RESULT_IND.................................135
 
- Arkko & Haverinen            Informational                     [Page 67]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    The AT_NOTIFICATION attribute contains a 16-bit notification code
 
-    value.  The most significant bit of the notification code is called
 
-    the S bit (success) and the second most significant bit is called the
 
-    P bit (phase).  If the S bit is set to zero, then the notification
 
-    code indicates failure; notification codes with the S bit set to one
 
-    do not indicate failure.  If the P bit is set to zero, then the
 
-    notification code can only be used before authentication has
 
-    occurred.  If the P bit is set to one, then the notification code can
 
-    only be used after authentication.  The notification code is a new
 
-    numbering space for which IANA administration is required.  The
 
-    following values have been specified in this document and in
 
-    [EAP-SIM].
 
-         General failure after authentication......................0
 
-         User has been temporarily denied access................1026
 
-         User has not subscribed to the requested service.......1031
 
-         General failure.......................................16384
 
-         Success...............................................32768
 
-    The AT_VERSION_LIST and AT_SELECTED_VERSION attributes, specified in
 
-    [EAP-SIM], contain 16-bit EAP method version numbers.  The EAP method
 
-    version number is a new numbering space for which IANA administration
 
-    is required.  Value 1 for "EAP-SIM Version 1" has been specified in
 
-    [EAP-SIM].  Version numbers are not currently used in EAP-AKA.
 
-    The AT_CLIENT_ERROR_CODE attribute contains a 16-bit client error
 
-    code.  The client error code is a new numbering space for which IANA
 
-    administration is required.  Values 0, 1, 2, and 3 have been
 
-    specified in this document and in [EAP-SIM].
 
-    All requests for value assignment from the various number spaces
 
-    described in this document require proper documentation, according to
 
-    the "Specification Required" policy described in [RFC2434].  Requests
 
-    must be specified in sufficient detail so that interoperability
 
-    between independent implementations is possible.  Possible forms of
 
-    documentation include, but are not limited to, RFCs, the products of
 
-    another standards body (e.g., 3GPP), or permanently and readily
 
-    available vendor design notes.
 
- 12.  Security Considerations
 
-    The EAP specification [RFC3748] describes the security
 
-    vulnerabilities of EAP, which does not include its own security
 
-    mechanisms.  This section discusses the claimed security properties
 
-    of EAP-AKA as well as vulnerabilities and security recommendations.
 
- Arkko & Haverinen            Informational                     [Page 68]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 12.1.  Identity Protection
 
-    EAP-AKA includes optional Identity privacy support that protects the
 
-    privacy of the subscriber identity against passive eavesdropping.
 
-    This document only specifies a mechanism to deliver pseudonyms from
 
-    the server to the peer as part of an EAP-AKA exchange.  Hence, a peer
 
-    that has not yet performed any EAP-AKA exchanges does not typically
 
-    have a pseudonym available.  If the peer does not have a pseudonym
 
-    available, then the privacy mechanism cannot be used, and the
 
-    permanent identity will have to be sent in the clear.  The terminal
 
-    SHOULD store the pseudonym in non-volatile memory so that it can be
 
-    maintained across reboots.  An active attacker that impersonates the
 
-    network may use the AT_PERMANENT_ID_REQ attribute (Section 4.1.2) to
 
-    learn the subscriber's IMSI.  However, as discussed in Section 4.1.2,
 
-    the terminal can refuse to send the cleartext IMSI if it believes
 
-    that the network should be able to recognize the pseudonym.
 
-    If the peer and server cannot guarantee that the pseudonym will be
 
-    maintained reliably, and Identity privacy is required then additional
 
-    protection from an external security mechanism (such as Protected
 
-    Extensible Authentication Protocol (PEAP) [PEAP]) may be used.  The
 
-    benefits and the security considerations of using an external
 
-    security mechanism with EAP-AKA are beyond the scope of this
 
-    document.
 
- 12.2.  Mutual Authentication
 
-    EAP-AKA provides mutual authentication via the 3rd generation AKA
 
-    mechanisms [TS33.102] and [S.S0055-A].
 
-    Note that this mutual authentication is with the EAP server.  In
 
-    general, EAP methods do not authenticate the identity or services
 
-    provided by the EAP authenticator (if distinct from the EAP server)
 
-    unless they provide the so-called channel bindings property.  The
 
-    vulnerabilities related to this have been discussed in [RFC3748],
 
-    [EAPKeying], [ServiceIdentity].
 
-    EAP-AKA does not provide the channel bindings property, so it only
 
-    authenticates the EAP server.  However, ongoing work such as
 
-    [ServiceIdentity] may provide such support as an extension to popular
 
-    EAP methods such as EAP-TLS, EAP-SIM, or EAP-AKA.
 
- 12.3.  Flooding the Authentication Centre
 
-    The EAP-AKA server typically obtains authentication vectors from the
 
-    Authentication Centre (AuC).  EAP-AKA introduces a new usage for the
 
-    AuC.  The protocols between the EAP-AKA server and the AuC are out of
 
-    the scope of this document.  However, it should be noted that a
 
- Arkko & Haverinen            Informational                     [Page 69]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    malicious EAP-AKA peer may generate a lot of protocol requests to
 
-    mount a denial-of-service attack.  The EAP-AKA server implementation
 
-    SHOULD take this into account and SHOULD take steps to limit the
 
-    traffic that it generates towards the AuC, preventing the attacker
 
-    from flooding the AuC and from extending the denial-of-service attack
 
-    from EAP-AKA to other users of the AuC.
 
- 12.4.  Key Derivation
 
-    EAP-AKA supports key derivation with 128-bit effective key strength.
 
-    The key hierarchy is specified in Section 7.
 
-    The Transient EAP Keys used to protect EAP-AKA packets (K_encr,
 
-    K_aut), the Master Session Keys, and the Extended Master Session Keys
 
-    are cryptographically separate.  An attacker cannot derive any
 
-    non-trivial information about any of these keys based on the other
 
-    keys.  An attacker also cannot calculate the pre-shared secret from
 
-    AKA IK, AKA CK, EAP-AKA K_encr, EAP-AKA K_aut, the Master Session
 
-    Key, or the Extended Master Session Key.
 
- 12.5.  Brute-Force and Dictionary Attacks
 
-    The effective strength of EAP-AKA values is 128 bits, and there are
 
-    no known, computationally feasible brute-force attacks.  Because AKA
 
-    is not a password protocol (the pre-shared secret is not a
 
-    passphrase, or derived from a passphrase), EAP-AKA is not vulnerable
 
-    to dictionary attacks.
 
- 12.6.  Protection, Replay Protection, and Confidentiality
 
-    AT_MAC, AT_IV, AT_ENCR_DATA, and AT_COUNTER attributes are used to
 
-    provide integrity, replay, and confidentiality protection for EAP-AKA
 
-    Requests and Responses.  Integrity protection with AT_MAC includes
 
-    the EAP header.  Integrity protection (AT_MAC) is based on a keyed
 
-    message authentication code.  Confidentiality (AT_ENCR_DATA and
 
-    AT_IV) is based on a block cipher.
 
-    Because keys are not available in the beginning of the EAP methods,
 
-    the AT_MAC attribute cannot be used for protecting EAP/AKA-Identity
 
-    messages.  However, the AT_CHECKCODE attribute can optionally be used
 
-    to protect the integrity of the EAP/AKA-Identity roundtrip.
 
-    Confidentiality protection is applied only to a part of the protocol
 
-    fields.  The table of attributes in Section 10.1 summarizes which
 
-    fields are confidentiality protected.  It should be noted that the
 
-    error and notification code attributes AT_CLIENT_ERROR_CODE and
 
-    AT_NOTIFICATION are not confidential, but they are transmitted in the
 
-    clear.  Identity protection is discussed in Section 12.1.
 
- Arkko & Haverinen            Informational                     [Page 70]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    On full authentication, replay protection of the EAP exchange is
 
-    provided by RAND and AUTN values from the underlying AKA scheme.
 
-    Protection against replays of EAP-AKA messages is also based on the
 
-    fact that messages that can include AT_MAC can only be sent once with
 
-    a certain EAP-AKA Subtype, and on the fact that a different K_aut key
 
-    will be used for calculating AT_MAC in each full authentication
 
-    exchange.
 
-    On fast re-authentication, a counter included in AT_COUNTER and a
 
-    server random nonce is used to provide replay protection.  The
 
-    AT_COUNTER attribute is also included in EAP-AKA notifications, if
 
-    they are used after successful authentication in order to provide
 
-    replay protection between re-authentication exchanges.
 
-    The contents of the user identity string are implicitly integrity
 
-    protected by including them in key derivation.
 
-    Because EAP-AKA is not a tunneling method, EAP-Request/Notification,
 
-    EAP-Response/Notification, EAP-Success, or EAP-Failure packets are
 
-    not confidential, integrity protected, or replay protected.  On
 
-    physically insecure networks, this may enable an attacker to mount
 
-    denial-of-service attacks by spoofing these packets.  As discussed in
 
-    Section 6.3, the peer will only accept EAP-Success after the peer
 
-    successfully authenticates the server.  Hence, the attacker cannot
 
-    force the peer to believe successful mutual authentication has
 
-    occurred before the peer successfully authenticates the server or
 
-    after the peer failed to authenticate the server.
 
-    The security considerations of EAP-AKA result indications are covered
 
-    in Section 12.8
 
-    An eavesdropper will see the EAP Notification, EAP_Success and
 
-    EAP-Failure packets sent in the clear.  With EAP-AKA, confidential
 
-    information MUST NOT be transmitted in EAP Notification packets.
 
- 12.7.  Negotiation Attacks
 
-    EAP-AKA does not protect the EAP-Response/Nak packet.  Because
 
-    EAP-AKA does not protect the EAP method negotiation, EAP method
 
-    downgrading attacks may be possible, especially if the user uses the
 
-    same identity with EAP-AKA and other EAP methods.
 
-    As described in Section 8, EAP-AKA allows the protocol to be extended
 
-    by defining new attribute types.  When defining such attributes, it
 
-    should be noted that any extra attributes included in
 
-    EAP-Request/AKA-Identity or EAP-Response/AKA-Identity packets are not
 
- Arkko & Haverinen            Informational                     [Page 71]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    included in the MACs later on, and thus some other precautions must
 
-    be taken to avoid modifications to them.
 
-    EAP-AKA does not support ciphersuite negotiation or EAP-AKA protocol
 
-    version negotiation.
 
- 12.8.  Protected Result Indications
 
-    EAP-AKA supports optional protected success indications, and
 
-    acknowledged failure indications.  If a failure occurs after
 
-    successful authentication, then the EAP-AKA failure indication is
 
-    integrity and replay protected.
 
-    Even if an EAP-Failure packet is lost when using EAP-AKA over an
 
-    unreliable medium, then the EAP-AKA failure indications will help
 
-    ensure that the peer and EAP server will know the other party's
 
-    authentication decision.  If protected success indications are used,
 
-    then the loss of Success packet will also be addressed by the
 
-    acknowledged, integrity, and replay protected EAP-AKA success
 
-    indication.  If the optional success indications are not used, then
 
-    the peer may end up believing the server completed successful
 
-    authentication, when actually it failed.  Because access will not be
 
-    granted in this case, protected result indications are not needed
 
-    unless the client is not able to realize it does not have access for
 
-    an extended period of time.
 
- 12.9.  Man-in-the-Middle Attacks
 
-    In order to avoid man-in-the-middle attacks and session hijacking,
 
-    user data SHOULD be integrity protected on physically insecure
 
-    networks.  The EAP-AKA Master Session Key or keys derived from it MAY
 
-    be used as the integrity protection keys, or, if an external security
 
-    mechanism such as PEAP is used, then the link integrity protection
 
-    keys MAY be derived by the external security mechanism.
 
-    There are man-in-the-middle attacks associated with the use of any
 
-    EAP method within a tunneled protocol.  For instance, an early
 
-    version of PEAP [PEAP-02] was vulnerable to this attack.  This
 
-    specification does not address these attacks.  If EAP-AKA is used
 
-    with a tunneling protocol, there should be cryptographic binding
 
-    provided between the protocol and EAP-AKA to prevent
 
-    man-in-the-middle attacks through rogue authenticators being able to
 
-    setup one-way authenticated tunnels.  For example, newer versions of
 
-    PEAP include such cryptographic binding.  The EAP-AKA Master Session
 
-    Key MAY be used to provide the cryptographic binding.  However, the
 
-    mechanism that provides the binding depends on the tunneling protocol
 
-    and is beyond the scope of this document.
 
- Arkko & Haverinen            Informational                     [Page 72]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 12.10.  Generating Random Numbers
 
-    An EAP-AKA implementation SHOULD use a good source of randomness to
 
-    generate the random numbers required in the protocol.  Please see
 
-    [RFC4086] for more information on generating random numbers for
 
-    security applications.
 
- 13.  Security Claims
 
-    This section provides the security claims required by [RFC3748].
 
-    Auth.  Mechanism: EAP-AKA is based on the AKA mechanism, which is an
 
-    authentication and key agreement mechanism based on a symmetric
 
-    128-bit pre-shared secret.
 
-    Ciphersuite negotiation: No
 
-    Mutual authentication: Yes (Section 12.2)
 
-    Integrity protection: Yes (Section 12.6)
 
-    Replay protection: Yes (Section 12.6)
 
-    Confidentiality: Yes, except method-specific success and failure
 
-    indications (Section 12.1, Section 12.6)
 
-    Key derivation: Yes
 
-    Key strength: EAP-AKA supports key derivation with 128-bit effective
 
-    key strength.
 
-    Description of key hierarchy: Please see Section 7.
 
-    Dictionary attack protection: N/A (Section 12.5)
 
-    Fast reconnect: Yes
 
-    Cryptographic binding: N/A
 
-    Session independence: Yes (Section 12.4)
 
-    Fragmentation: No
 
-    Channel binding: No
 
-    Indication of vulnerabilities.  Vulnerabilities are discussed in
 
-    Section 12.
 
- Arkko & Haverinen            Informational                     [Page 73]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 14.  Acknowledgements and Contributions
 
-    The authors wish to thank Rolf Blom of Ericsson, Bernard Aboba of
 
-    Microsoft, Arne Norefors of Ericsson, N.Asokan of Nokia, Valtteri
 
-    Niemi of Nokia, Kaisa Nyberg of Nokia, Jukka-Pekka Honkanen of Nokia,
 
-    Pasi Eronen of Nokia, Olivier Paridaens of Alcatel, and Ilkka
 
-    Uusitalo of Ericsson for interesting discussions in this problem
 
-    space.
 
-    Many thanks to Yoshihiro Ohba for reviewing the document.
 
-    This protocol has been partly developed in parallel with EAP-SIM
 
-    [EAP-SIM], and hence this specification incorporates many ideas from
 
-    EAP-SIM, and many contributions from the reviewer's of EAP-SIM.
 
-    The attribute format is based on the extension format of Mobile IPv4
 
-    [RFC3344].
 
- 15.  References
 
- 15.1.  Normative References
 
-    [TS33.102]        3rd Generation Partnership Project, "3GPP Technical
 
-                      Specification 3GPP TS 33.102 V5.1.0: "Technical
 
-                      Specification Group Services and System Aspects; 3G
 
-                      Security; Security Architecture (Release 5)"",
 
-                      December 2002.
 
-    [S.S0055-A]       3rd Generation Partnership Project 2, "3GPP2
 
-                      Enhanced Cryptographic Algorithms", September 2003.
 
-    [RFC4282]         Aboba, B., Beadles, M., Arkko, J., and P. Eronen,
 
-                      "The Network Access Identifier", RFC 4282, December
 
-                      2005.
 
-    [RFC3748]         Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J.,
 
-                      and H.  Levkowetz, "Extensible Authentication
 
-                      Protocol (EAP)", RFC 3748, June 2004.
 
-    [RFC2119]         Bradner, S., "Key words for use in RFCs to Indicate
 
-                      Requirement Levels", BCP 14, RFC 2119, March 1997.
 
-    [TS23.003]        3rd Generation Partnership Project, "3GPP Technical
 
-                      Specification 3GPP TS 23.003 V6.8.0: "3rd
 
-                      Generation Parnership Project; Technical
 
-                      Specification Group Core Network; Numbering,
 
-                      addressing and identification (Release 6)"",
 
-                      December 2005.
 
- Arkko & Haverinen            Informational                     [Page 74]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
-    [RFC2104]         Krawczyk, H., Bellare, M. and R. Canetti, "HMAC:
 
-                      Keyed-Hashing for Message Authentication",
 
-                      RFC 2104, February 1997.
 
-    [AES]             National Institute of  Standards and Technology,
 
-                      "Federal Information Processing Standards (FIPS)
 
-                      Publication 197, "Advanced Encryption Standard
 
-                      (AES)"", November 2001,
 
-                      http://csrc.nist.gov/publications/fips/fips197/
 
-                      fips-197.pdf.
 
-    [CBC]             National Institute of Standards and Technology,
 
-                      "NIST Special Publication 800-38A, "Recommendation
 
-                      for Block Cipher Modes of Operation - Methods and
 
-                      Techniques"", December 2001,
 
-                      http://csrc.nist.gov/publications/
 
-                      nistpubs/800-38a/sp800-38a.pdf.
 
-    [SHA-1]           National Institute of Standards and Technology,
 
-                      U.S.  Department of Commerce, "Federal Information
 
-                      Processing Standard (FIPS) Publication 180-1,
 
-                      "Secure Hash Standard"", April 1995.
 
-    [PRF]             National Institute of Standards and Technology,
 
-                      "Federal Information Processing Standards (FIPS)
 
-                      Publication  186-2 (with change notice); Digital
 
-                      Signature Standard (DSS)", January 2000,
 
-                      http://csrc.nist.gov/publications/
 
-                      fips/fips186-2/fips186-2-change1.pdf.
 
-    [TS33.105]        3rd Generation Partnership Project, "3GPP Technical
 
-                      Specification 3GPP TS 33.105 4.1.0: "Technical
 
-                      Specification Group Services and System Aspects; 3G
 
-                      Security; Cryptographic Algorithm Requirements
 
-                      (Release 4)"", June 2001.
 
-    [RFC3629]         Yergeau, F., "UTF-8, a transformation format of ISO
 
-                      10646", STD 63, RFC 3629, November 2003.
 
-    [RFC2434]         Narten, T. and H. Alvestrand, "Guidelines for
 
-                      Writing an IANA Considerations Section in RFCs",
 
-                      BCP 26, RFC 2434, October 1998.
 
- Arkko & Haverinen            Informational                     [Page 75]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- 15.2.  Informative References
 
-    [RFC2548]         Zorn, G., "Microsoft Vendor-specific RADIUS
 
-                      Attributes", RFC 2548, March 1999.
 
-    [PEAP]            Palekar, A., Simon, D., Zorn, G., Salowey, J.,
 
-                      Zhou, H., and S. Josefsson, "Protected EAP Protocol
 
-                      (PEAP) Version 2", work in progress, October 2004.
 
-    [PEAP-02]         Anderson, H., Josefsson, S., Zorn, G., Simon, D.,
 
-                      and A.  Palekar, "Protected EAP Protocol (PEAP)",
 
-                      work in progress, February 2002.
 
-    [EAPKeying]       Aboba, B., Simon, D., Arkko, J., Eronen, P., and H.
 
-                      Levkowetz, "Extensible Authentication Protocol
 
-                      (EAP) Key Management Framework", work in progress,
 
-                      October 2005.
 
-    [ServiceIdentity] Arkko, J. and P. Eronen, "Authenticated Service
 
-                      Information for the Extensible Authentication
 
-                      Protocol (EAP)", Work in Progress, October 2004.
 
-    [RFC4086]         Eastlake, D., Schiller, J., and S. Crocker,
 
-                      "Randomness Requirements for Security", BCP 106,
 
-                      RFC 4086, June 2005.
 
-    [RFC3344]         Perkins, C., "IP Mobility Support for IPv4",
 
-                      RFC 3344, August 2002.
 
-    [EAP-SIM]         Haverinen, H., Ed. and J. Salowey, Ed., "Extensible
 
-                      Authentication Protocol Method for Global System
 
-                      for Mobile Communications (GSM) Subscriber Identity
 
-                      Modules (EAP-SIM)", RFC 4186, January 2006.
 
- Arkko & Haverinen            Informational                     [Page 76]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- Appendix A.  Pseudo-Random Number Generator
 
-    The "|" character denotes concatenation, and "^" denotes
 
-    exponentiation.
 
-    Step 1: Choose a new, secret value for the seed-key, XKEY
 
-    Step 2: In hexadecimal notation let
 
-        t = 67452301 EFCDAB89 98BADCFE 10325476 C3D2E1F0
 
-        This is the initial value for H0|H1|H2|H3|H4
 
-        in the FIPS SHS [SHA-1]
 
-    Step 3: For j = 0 to m - 1 do
 
-          3.1.  XSEED_j = 0 /* no optional user input */
 
-          3.2.  For i = 0 to 1 do
 
-                a.  XVAL = (XKEY + XSEED_j) mod 2^b
 
-                b.  w_i = G(t, XVAL)
 
-                c.  XKEY = (1 + XKEY + w_i) mod 2^b
 
-          3.3.  x_j = w_0|w_1
 
- Arkko & Haverinen            Informational                     [Page 77]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- Authors' Addresses
 
-    Jari Arkko
 
-    Ericsson
 
-    FIN-02420 Jorvas
 
-    Finland
 
-    EMail: jari.Arkko@ericsson.com
 
-    Henry Haverinen
 
-    Nokia Enterprise Solutions
 
-    P.O. Box 12
 
-    FIN-40101 Jyvaskyla
 
-    Finland
 
-    EMail: henry.haverinen@nokia.com
 
- Arkko & Haverinen            Informational                     [Page 78]
 
- RFC 4187                 EAP-AKA Authentication             January 2006
 
- Full Copyright Statement
 
-    Copyright (C) The Internet Society (2006).
 
-    This document is subject to the rights, licenses and restrictions
 
-    contained in BCP 78, and except as set forth therein, the authors
 
-    retain all their rights.
 
-    This document and the information contained herein are provided on an
 
-    "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
 
-    OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
 
-    ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
 
-    INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
 
-    INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
 
-    WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
 
- Intellectual Property
 
-    The IETF takes no position regarding the validity or scope of any
 
-    Intellectual Property Rights or other rights that might be claimed to
 
-    pertain to the implementation or use of the technology described in
 
-    this document or the extent to which any license under such rights
 
-    might or might not be available; nor does it represent that it has
 
-    made any independent effort to identify any such rights.  Information
 
-    on the procedures with respect to rights in RFC documents can be
 
-    found in BCP 78 and BCP 79.
 
-    Copies of IPR disclosures made to the IETF Secretariat and any
 
-    assurances of licenses to be made available, or the result of an
 
-    attempt made to obtain a general license or permission for the use of
 
-    such proprietary rights by implementers or users of this
 
-    specification can be obtained from the IETF on-line IPR repository at
 
-    http://www.ietf.org/ipr.
 
-    The IETF invites any interested party to bring to its attention any
 
-    copyrights, patents or patent applications, or other proprietary
 
-    rights that may cover technology that may be required to implement
 
-    this standard.  Please address the information to the IETF at
 
-    ietf-ipr@ietf.org.
 
- Acknowledgement
 
-    Funding for the RFC Editor function is provided by the IETF
 
-    Administrative Support Activity (IASA).
 
- Arkko & Haverinen            Informational                     [Page 79]
 
 
  |