| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155 | 
							
- Network Working Group                                  H. Haverinen, Ed.
 
- Request for Comments: 4186                                         Nokia
 
- Category: Informational                                  J. Salowey, Ed.
 
-                                                            Cisco Systems
 
-                                                             January 2006
 
-              Extensible Authentication Protocol Method for
 
-              Global System for Mobile Communications (GSM)
 
-                  Subscriber Identity Modules (EAP-SIM)
 
- 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-SIM protocol was developed by 3GPP.  The documentation of
 
-    EAP-SIM is provided as information to the Internet community.  While
 
-    the EAP WG has verified that EAP-SIM 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 cryptographic algorithms.
 
- Abstract
 
-    This document specifies an Extensible Authentication Protocol (EAP)
 
-    mechanism for authentication and session key distribution using the
 
-    Global System for Mobile Communications (GSM) Subscriber Identity
 
-    Module (SIM).  GSM is a second generation mobile network standard.
 
-    The EAP-SIM mechanism specifies enhancements to GSM authentication
 
-    and key agreement whereby multiple authentication triplets can be
 
-    combined to create authentication responses and session keys of
 
-    greater strength than the individual GSM triplets.  The mechanism
 
-    also includes network authentication, user anonymity support, result
 
-    indications, and a fast re-authentication procedure.
 
- Haverinen & Salowey          Informational                      [Page 1]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- Table of Contents
 
-    1. Introduction ....................................................4
 
-    2. Terms ...........................................................5
 
-    3. Overview ........................................................8
 
-    4. Operation ......................................................10
 
-       4.1. Version Negotiation .......................................10
 
-       4.2. Identity Management .......................................11
 
-            4.2.1. Format, Generation and Usage of Peer Identities ....11
 
-            4.2.2. Communicating the Peer Identity to the Server ......17
 
-            4.2.3. Choice of Identity for the EAP-Response/Identity ...19
 
-            4.2.4. Server Operation in the Beginning of
 
-                   EAP-SIM Exchange ...................................19
 
-            4.2.5. Processing of EAP-Request/SIM/Start by the Peer ....20
 
-            4.2.6. Attacks Against Identity Privacy ...................21
 
-            4.2.7. Processing of AT_IDENTITY by the Server ............22
 
-       4.3. Message Sequence Examples (Informative) ...................23
 
-            4.3.1. Full Authentication ................................24
 
-            4.3.2. Fast Re-authentication .............................25
 
-            4.3.3. Fall Back to Full Authentication ...................26
 
-            4.3.4. Requesting the Permanent Identity 1 ................27
 
-            4.3.5. Requesting the Permanent Identity 2 ................28
 
-            4.3.6. Three EAP-SIM/Start Roundtrips .....................28
 
-    5. Fast Re-Authentication .........................................30
 
-       5.1. General ...................................................30
 
-       5.2. Comparison to UMTS AKA ....................................31
 
-       5.3. Fast Re-authentication Identity ...........................31
 
-       5.4. Fast Re-authentication Procedure ..........................33
 
-       5.5. Fast Re-authentication Procedure when Counter Is
 
-            Too Small .................................................36
 
-    6. EAP-SIM Notifications ..........................................37
 
-       6.1. General ...................................................37
 
-       6.2. Result Indications ........................................39
 
-       6.3. Error Cases ...............................................40
 
-            6.3.1. Peer Operation .....................................40
 
-            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/SIM/Start .....................................48
 
-       9.2. EAP-Response/SIM/Start ....................................49
 
-       9.3. EAP-Request/SIM/Challenge .................................49
 
-       9.4. EAP-Response/SIM/Challenge ................................50
 
-       9.5. EAP-Request/SIM/Re-authentication .........................51
 
- Haverinen & Salowey          Informational                      [Page 2]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-       9.6. EAP-Response/SIM/Re-authentication ........................51
 
-       9.7. EAP-Response/SIM/Client-Error .............................52
 
-       9.8. EAP-Request/SIM/Notification ..............................52
 
-       9.9. EAP-Response/SIM/Notification .............................53
 
-    10. Attributes ....................................................53
 
-       10.1. Table of Attributes ......................................53
 
-       10.2. AT_VERSION_LIST ..........................................54
 
-       10.3. AT_SELECTED_VERSION ......................................55
 
-       10.4. AT_NONCE_MT ..............................................55
 
-       10.5. AT_PERMANENT_ID_REQ ......................................56
 
-       10.6. AT_ANY_ID_REQ ............................................56
 
-       10.7. AT_FULLAUTH_ID_REQ .......................................57
 
-       10.8. AT_IDENTITY ..............................................57
 
-       10.9. AT_RAND ..................................................58
 
-       10.10. AT_NEXT_PSEUDONYM .......................................59
 
-       10.11. AT_NEXT_REAUTH_ID .......................................59
 
-       10.12. AT_IV, AT_ENCR_DATA, and AT_PADDING .....................60
 
-       10.13. AT_RESULT_IND ...........................................62
 
-       10.14. AT_MAC ..................................................62
 
-       10.15. AT_COUNTER ..............................................63
 
-       10.16. AT_COUNTER_TOO_SMALL ....................................63
 
-       10.17. AT_NONCE_S ..............................................64
 
-       10.18. AT_NOTIFICATION .........................................64
 
-       10.19. AT_CLIENT_ERROR_CODE ....................................65
 
-    11. IANA Considerations ...........................................66
 
-    12. Security Considerations .......................................66
 
-       12.1. A3 and A8 Algorithms .....................................66
 
-       12.2. Identity Protection ......................................66
 
-       12.3. Mutual Authentication and Triplet Exposure ...............67
 
-       12.4. Flooding the Authentication Centre .......................69
 
-       12.5. Key Derivation ...........................................69
 
-       12.6. Cryptographic Separation of Keys and Session
 
-             Independence .............................................70
 
-       12.7. Dictionary Attacks .......................................71
 
-       12.8. Credentials Re-use .......................................71
 
-       12.9. Integrity and Replay Protection, and Confidentiality .....72
 
-       12.10. Negotiation Attacks .....................................73
 
-       12.11. Protected Result Indications ............................73
 
-       12.12. Man-in-the-Middle Attacks ...............................74
 
-       12.13. Generating Random Numbers ...............................74
 
-    13. Security Claims ...............................................74
 
-    14. Acknowledgements and Contributions ............................75
 
-       14.1. Contributors .............................................75
 
-       14.2. Acknowledgements .........................................75
 
-            14.2.1. Contributors' Addresses ...........................77
 
-    15. References ....................................................78
 
-       15.1. Normative References .....................................78
 
-       15.2. Informative References ...................................79
 
- Haverinen & Salowey          Informational                      [Page 3]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    Appendix A.  Test Vectors .........................................81
 
-       A.1.  EAP-Request/Identity .....................................81
 
-       A.2.  EAP-Response/Identity ....................................81
 
-       A.3.  EAP-Request/SIM/Start ....................................82
 
-       A.4.  EAP-Response/SIM/Start ...................................82
 
-       A.5.  EAP-Request/SIM/Challenge ................................83
 
-       A.6.  EAP-Response/SIM/Challenge ...............................86
 
-       A.7.  EAP-Success ..............................................86
 
-       A.8.  Fast Re-authentication ...................................86
 
-       A.9.  EAP-Request/SIM/Re-authentication ........................87
 
-       A.10.  EAP-Response/SIM/Re-authentication ......................89
 
-    Appendix B.  Pseudo-Random Number Generator .......................90
 
- 1.  Introduction
 
-    This document specifies an Extensible Authentication Protocol (EAP)
 
-    [RFC3748] mechanism for authentication and session key distribution
 
-    using the Global System for Mobile Communications (GSM) Subscriber
 
-    Identity Module (SIM).
 
-    GSM is a second generation mobile network standard.  Second
 
-    generation mobile networks and third generation mobile networks use
 
-    different authentication and key agreement mechanisms.  EAP-AKA
 
-    [EAP-AKA] specifies an EAP method that is based on the Authentication
 
-    and Key Agreement (AKA) mechanism used in 3rd generation mobile
 
-    networks.
 
-    GSM authentication is based on a challenge-response mechanism.  The
 
-    A3/A8 authentication and key derivation algorithms that run on the
 
-    SIM can be given a 128-bit random number (RAND) as a challenge.  The
 
-    SIM runs operator-specific algorithms, which take the RAND and a
 
-    secret key Ki (stored on the SIM) as input, and produce a 32-bit
 
-    response (SRES) and a 64-bit long key Kc as output.  The Kc key is
 
-    originally intended to be used as an encryption key over the air
 
-    interface, but in this protocol, it is used for deriving keying
 
-    material and is not directly used.  Hence, the secrecy of Kc is
 
-    critical to the security of this protocol.  For more information
 
-    about GSM authentication, see [GSM-03.20].  See Section 12.1 for more
 
-    discussion about the GSM algorithms used in EAP-SIM.
 
-    The lack of mutual authentication is a weakness in GSM
 
-    authentication.  The derived 64-bit cipher key (Kc) is not strong
 
-    enough for data networks in which stronger and longer keys are
 
-    required.  Hence, in EAP-SIM, several RAND challenges are used for
 
-    generating several 64-bit Kc keys, which are combined to constitute
 
-    stronger keying material.  In EAP-SIM, the client issues a random
 
-    number NONCE_MT to the network in order to contribute to key
 
-    derivation, and to prevent replays of EAP-SIM requests from previous
 
- Haverinen & Salowey          Informational                      [Page 4]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    exchanges.  The NONCE_MT can be conceived as the client's challenge
 
-    to the network.  EAP-SIM also extends the combined RAND challenges
 
-    and other messages with a message authentication code in order to
 
-    provide message integrity protection along with mutual
 
-    authentication.
 
-    EAP-SIM specifies optional support for protecting the privacy of
 
-    subscriber identity using the same concept as the GSM, which uses
 
-    pseudonyms/temporary identifiers.  It also specifies an optional fast
 
-    re-authentication procedure.
 
-    The security of EAP-SIM builds on underlying GSM mechanisms.  The
 
-    security properties of EAP-SIM are documented in Section 11 of this
 
-    document.  Implementers and users of EAP-SIM are advised to carefully
 
-    study the security considerations in Section 11 in order to determine
 
-    whether the security properties are sufficient for the environment in
 
-    question, especially as the secrecy of Kc keys is essential to the
 
-    security of EAP-SIM.  In brief, EAP-SIM is in no sense weaker than
 
-    the GSM mechanisms.  In some cases EAP-SIM provides better security
 
-    properties than the underlying GSM mechanisms, particularly if the
 
-    SIM credentials are only used for EAP-SIM and are not re-used from
 
-    GSM/GPRS.  Many of the security features of EAP-SIM rely upon the
 
-    secrecy of the Kc values in the SIM triplets, so protecting these
 
-    values is key to the security of the EAP-SIM protocol.
 
-    The 3rd Generation Partnership Project (3GPP) has specified an
 
-    enhanced Authentication and Key Agreement (AKA) architecture for the
 
-    Universal Mobile Telecommunications System (UMTS).  The 3rd
 
-    generation AKA mechanism includes mutual authentication, replay
 
-    protection, and derivation of longer session keys.  EAP-AKA [EAP-AKA]
 
-    specifies an EAP method that is based on the 3rd generation AKA.
 
-    EAP-AKA, which is a more secure protocol, may be used instead of
 
-    EAP-SIM, if 3rd generation identity modules and 3G network
 
-    infrastructures are available.
 
- 2.  Terms
 
-    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].
 
- Haverinen & Salowey          Informational                      [Page 5]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    This document frequently uses the following terms and abbreviations:
 
-    AAA protocol
 
-          Authentication, Authorization, and Accounting protocol
 
-    AuC
 
-          Authentication Centre.  The GSM network element that provides
 
-          the authentication triplets for authenticating
 
-          the subscriber.
 
-    Authentication vector
 
-          GSM triplets can be alternatively called authentication
 
-          vectors.
 
-    EAP
 
-          Extensible Authentication Protocol
 
-    Fast re-authentication
 
-          An EAP-SIM authentication exchange that is based on keys
 
-          derived upon a preceding full authentication exchange.
 
-          The GSM authentication and key exchange algorithms are 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
 
-          fast re-authentication only.
 
-    Fast Re-authentication Username
 
-          The username portion of fast re-authentication identity,
 
-          i.e., not including any realm portions.
 
-    Full authentication
 
-          An EAP-SIM authentication exchange based on the GSM
 
-          authentication and key agreement algorithms.
 
-    GSM
 
-          Global System for Mobile communications.
 
- Haverinen & Salowey          Informational                      [Page 6]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    GSM Triplet
 
-          The tuple formed by the three GSM authentication values RAND,
 
-          Kc, and SRES.
 
-    IMSI
 
-          International Mobile Subscriber Identifier, used in GSM to
 
-          identify subscribers.
 
-    MAC
 
-          Message Authentication Code
 
-    NAI
 
-          Network Access Identifier
 
-    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).  Since 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.
 
-    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.
 
- Haverinen & Salowey          Informational                      [Page 7]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    Pseudonym Username
 
-          The username portion of pseudonym identity, i.e., not including
 
-          any realm portions.
 
-    SIM
 
-          Subscriber Identity Module.  The SIM is traditionally a smart
 
-          card distributed by a GSM operator.
 
- 3.  Overview
 
-    Figure 1 shows an overview of the EAP-SIM full authentication
 
-    procedure, wherein optional protected success 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.
 
-      Peer                                               Authenticator
 
-        |                               EAP-Request/Identity       |
 
-        |<---------------------------------------------------------|
 
-        |                                                          |
 
-        | EAP-Response/Identity                                    |
 
-        |--------------------------------------------------------->|
 
-        |                                                          |
 
-        |                  EAP-Request/SIM/Start (AT_VERSION_LIST) |
 
-        |<---------------------------------------------------------|
 
-        |                                                          |
 
-        | EAP-Response/SIM/Start (AT_NONCE_MT, AT_SELECTED_VERSION)|
 
-        |--------------------------------------------------------->|
 
-        |                                                          |
 
-        |           EAP-Request/SIM/Challenge (AT_RAND, AT_MAC)    |
 
-        |<---------------------------------------------------------|
 
-    +-------------------------------------+                        |
 
-    | Peer runs GSM algorithms, verifies  |                        |
 
-    | AT_MAC and derives session keys     |                        |
 
-    +-------------------------------------+                        |
 
-        | EAP-Response/SIM/Challenge (AT_MAC)                      |
 
-        |--------------------------------------------------------->|
 
-        |                                                          |
 
-        |                                             EAP-Success  |
 
-        |<---------------------------------------------------------|
 
-        |                                                          |
 
-             Figure 1: EAP-SIM full authentication procedure
 
- Haverinen & Salowey          Informational                      [Page 8]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    The first EAP Request issued by the authenticator is
 
-    EAP-Request/Identity.  On full authentication, the peer's 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.2.
 
-    Following the peer's EAP-Response/Identity packet, the peer receives
 
-    EAP Requests of Type 18 (SIM) from the EAP server and sends the
 
-    corresponding EAP Responses.  The EAP packets that are of the Type
 
-    SIM also have a Subtype field.  On full authentication, the first
 
-    EAP-Request/SIM packet is of the Subtype 10 (Start).  EAP-SIM 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/SIM/Start packet contains the list of EAP-SIM
 
-    versions supported by the EAP server in the AT_VERSION_LIST
 
-    attribute.  This packet may also include attributes for requesting
 
-    the subscriber identity, as specified in Section 4.2.
 
-    The peer responds to a EAP-Request/SIM/Start with the
 
-    EAP-Response/SIM/Start packet, which includes the AT_NONCE_MT
 
-    attribute that contains a random number NONCE_MT, chosen by the peer,
 
-    and the AT_SELECTED_VERSION attribute that contains the version
 
-    number selected by the peer.  The version negotiation is protected by
 
-    including the version list and the selected version in the
 
-    calculation of keying material (Section 7).
 
-    After receiving the EAP Response/SIM/Start, the EAP server obtains n
 
-    GSM triplets for use in authenticating the subscriber, where n = 2 or
 
-    n = 3.  From the triplets, the EAP server derives the keying
 
-    material, as specified in Section 7.  The triplets may be obtained by
 
-    contacting an Authentication Centre (AuC) on the GSM network; per GSM
 
-    specifications, between 1 and 5 triplets may be obtained at a time.
 
-    Triplets may be stored in the EAP server for use at a later time, but
 
-    triplets MUST NOT be re-used, except in some error cases that are
 
-    specified in Section 10.9.
 
-    The next EAP Request the EAP Server issues is of the type SIM and
 
-    subtype Challenge (11).  It contains the RAND challenges and a
 
-    message authentication code attribute AT_MAC to cover the challenges.
 
-    The AT_MAC attribute is a general message authentication code
 
-    attribute that is used in many EAP-SIM messages.
 
-    On receipt of the EAP-Request/SIM/Challenge message, the peer runs
 
-    the GSM authentication algorithm and calculates a copy of the message
 
-    authentication code.  The peer then verifies that the calculated MAC
 
-    equals the received MAC.  If the MAC's do not match, then the peer
 
- Haverinen & Salowey          Informational                      [Page 9]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    sends the EAP-Response/SIM/Client-Error packet and the authentication
 
-    exchange terminates.
 
-    Since the RANDs given to a peer are accompanied by the message
 
-    authentication code AT_MAC, and since the peer's NONCE_MT value
 
-    contributes to AT_MAC, the peer is able to verify that the EAP-SIM
 
-    message is fresh (i.e., not a replay) and that the sender possesses
 
-    valid GSM triplets for the subscriber.
 
-    If all checks out, the peer responds with the
 
-    EAP-Response/SIM/Challenge, containing the AT_MAC attribute that
 
-    covers the peer's SRES response values (Section 9.4).  The EAP server
 
-    verifies that the MAC is 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.
 
-    EAP-SIM also includes a separate fast re-authentication procedure
 
-    that does not make use of the A3/A8 algorithms or the GSM
 
-    infrastructure.  Fast re-authentication is based on keys derived on
 
-    full authentication.  If the peer has maintained state information
 
-    for fast 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.  The fast re-authentication procedure is
 
-    described in Section 5.
 
- 4.  Operation
 
- 4.1.  Version Negotiation
 
-    EAP-SIM includes version negotiation so as to allow future
 
-    developments in the protocol.  The version negotiation is performed
 
-    on full authentication and it uses two attributes, AT_VERSION_LIST,
 
-    which the server always includes in EAP-Request/SIM/Start, and
 
-    AT_SELECTED_VERSION, which the peer includes in
 
-    EAP-Response/SIM/Start on full authentication.
 
-    AT_VERSION_LIST includes the EAP-SIM versions supported by the
 
-    server.  If AT_VERSION_LIST does not include a version that is
 
-    implemented by the peer and allowed in the peer's security policy,
 
-    then the peer MUST send the EAP-Response/SIM/Client-Error packet
 
-    (Section 9.7) to the server with the error code "unsupported
 
-    version".  If a suitable version is included, then the peer includes
 
- Haverinen & Salowey          Informational                     [Page 10]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    the AT_SELECTED_VERSION attribute, containing the selected version in
 
-    the EAP-Response/SIM/Start packet.  The peer MUST only indicate a
 
-    version that is included in the AT_VERSION_LIST.  If several versions
 
-    are acceptable, then the peer SHOULD choose the version that occurs
 
-    first in the version list.
 
-    The version number list of AT_VERSION_LIST and the selected version
 
-    of AT_SELECTED_VERSION are included in the key derivation procedure
 
-    (Section 7).  If an attacker modifies either one of these attributes,
 
-    then the peer and the server derive different keying material.
 
-    Because K_aut keys are different, the server and peer calculate
 
-    different AT_MAC values.  Hence, the peer detects that AT_MAC,
 
-    included in EAP-Request/SIM/Challenge, is incorrect and sends the
 
-    EAP-Response/SIM/Client-Error packet.  The authentication procedure
 
-    terminates.
 
- 4.2.  Identity Management
 
- 4.2.1.  Format, Generation and Usage of Peer Identities
 
- 4.2.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 the EAP-Response/Identity, which contains the
 
-    user's identity.  The formats of these packets are specified in
 
-    [RFC3748].
 
-    GSM subscribers are identified with the International Mobile
 
-    Subscriber Identity (IMSI) [GSM-03.03].  The IMSI is a string of not
 
-    more than 15 digits.  It is composed of a three digit Mobile Country
 
-    Code (MCC), a two or three digit Mobile Network Code (MNC), and a
 
-    Mobile Subscriber Identification Number (MSIN) of no 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-SIM.  In
 
-    this document, the term "identity" or "peer identity" refers to the
 
-    whole identity string that is used to identify the peer.  The peer
 
- Haverinen & Salowey          Informational                     [Page 11]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    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.2.1.2.  Identity Privacy Support
 
-    EAP-SIM 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
 
-    to but separate from the Temporary Mobile Subscriber Identities
 
-    (TMSI) that are used on cellular networks.  Please see Section 12.2
 
-    for security considerations regarding identity privacy.
 
- 4.2.1.3.  Username Types in EAP-SIM identities
 
-    There are three types of usernames in EAP-SIM peer identities:
 
-    (1) Permanent usernames.  For example,
 
-    1123456789098765@myoperator.com might be a valid permanent identity.
 
-    In this example, 1123456789098765 is the permanent username.
 
-    (2) Pseudonym usernames.  For example, 3s7ah6n9q@myoperator.com might
 
-    be a valid pseudonym identity.  In this example, 3s7ah6n9q is the
 
-    pseudonym username.
 
-    (3) Fast re-authentication usernames.  For example,
 
-    53953754@myoperator.com might be a valid fast re-authentication
 
-    identity.  In this case, 53953754 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 one 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.2.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
 
- Haverinen & Salowey          Informational                     [Page 12]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    realm.  (The usage of an NAI realm portion is not considered
 
-    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-SIM attributes.  Only the identity used in
 
-    the EAP-Response/Identity may be decorated.
 
- 4.2.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-SIM 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-SIM users.  This convention makes it easy to
 
-    recognize that the NAI identifies a GSM subscriber.  Such a reserved
 
-    NAI realm may be a useful hint as to 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 as it select 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
 
-    is specified in [3GPP-TS-23.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 [3GPP-TS-23.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 the MSIN.  Hence, when configuring AAA networks for
 
- Haverinen & Salowey          Informational                     [Page 13]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    operators that have 2-digit MNCs, the network SHOULD also be prepared
 
-    for realm names with incorrect, 3-digit MNCs.
 
- 4.2.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 "1" |
 
-    IMSI, where the character "|" denotes concatenation.  In other words,
 
-    the first character of the username is the digit one (ASCII value 31
 
-    hexadecimal), followed by the IMSI.  The IMSI is encoded as an ASCII
 
-    string that consists of not more than 15 decimal digits (ASCII values
 
-    between 30 and 39 hexadecimal), one character per IMSI digit, in the
 
-    order specified in [GSM-03.03].  For example, a permanent username
 
-    derived from the IMSI 295023820005424 would be encoded as the ASCII
 
-    string "1295023820005424" (byte values in hexadecimal notation: 31 32
 
-    39 35 30 32 33 38 32 30 30 30 35 34 32 34).
 
-    The EAP server MAY use the leading "1" as a hint to try EAP-SIM as
 
-    the first authentication method during method negotiation, rather
 
-    than, for example EAP/AKA.  The EAP-SIM server MAY propose EAP-SIM,
 
-    even if the leading character was not "1".
 
-    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.2.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-SIM 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 that peer send the
 
-    permanent identity.
 
- Haverinen & Salowey          Informational                     [Page 14]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    When issuing a fast re-authentication identity, the EAP server may
 
-    include a realm name in the identity to make the fast
 
-    re-authentication request 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.  This random component
 
-    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 that of its peer (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/SIM/
 
-    Re-authentication packet.
 
-    Transmitting pseudonyms and fast re-authentication identities from
 
-    the server to the peer is discussed in Section 4.2.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 to allow the server
 
-    to include a server-specific realm.
 
-    Regardless of the construction method, the pseudonym username MUST
 
-    conform to the grammar specified for the username portion of an NAI.
 
-    The fast re-authentication identity also 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 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 [EAP-AKA] usernames be distinguishable from each other as an
 
-    aid for the server on 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 determine if an NAI username is an EAP-SIM pseudonym username or
 
- Haverinen & Salowey          Informational                     [Page 15]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    an EAP-SIM 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 "3" 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.
 
-    Because the peer may fail to save a pseudonym username sent in an
 
-    EAP-Request/SIM/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.2.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/SIM/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
 
-    implementations, 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/SIM/Re-authentication message.
 
-    On receipt of the EAP-Request/SIM/Challenge, the peer MAY decrypt the
 
-    encrypted data in AT_ENCR_DATA.  If the authentication exchange is
 
-    successful, and the encrypted data includes a pseudonym username,
 
-    then 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 authentication exchange does
 
-    not complete successfully, the peer MUST ignore the received
 
-    pseudonym username and the fast re-authentication identity.
 
-    If the peer does not receive a new pseudonym username in the
 
-    EAP-Request/SIM/Challenge message, the peer MAY use an old pseudonym
 
-    username instead of the permanent username on the next full
 
-    authentication.  The username portions of fast re-authentication
 
- Haverinen & Salowey          Informational                     [Page 16]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    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.2.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
 
-    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.2.1.10.  Usage of the Fast Re-authentication Identity by the Peer
 
-    On fast re-authentication, the peer uses the fast re-authentication
 
-    identity that was received as part of the previous authentication
 
-    sequence.  A new 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.2.2.  Communicating the Peer Identity to the Server
 
- 4.2.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
 
- Haverinen & Salowey          Informational                     [Page 17]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    re-authentication identity maintained by the server, and if the
 
-    server agrees to use fast re-authentication, 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-SIM messages instead of the 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/SIM/Start message, and the peer includes the AT_IDENTITY
 
-    attribute, which contains the peer's identity, in the
 
-    EAP-Response/SIM/Start message.  The AT_ANY_ID_REQ attribute is a
 
-    general identity-requesting attribute, which the server uses if it
 
-    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 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 the EAP-SIM peer and the EAP-SIM server only process
 
-    the AT_IDENTITY attribute; entities that only 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.2.2.2.  Relying on EAP-Response/Identity Discouraged
 
-    The EAP-Response/Identity packet is not method-specific, so 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-SIM, and the server is
 
-    strongly discouraged from relying upon the EAP-Response/Identity.
 
- Haverinen & Salowey          Informational                     [Page 18]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    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 that the peer send an
 
-    unmodified and undecorated copy of the identity in AT_IDENTITY.
 
- 4.2.3.  Choice of Identity for the EAP-Response/Identity
 
-    If EAP-SIM peer is started upon receiving an EAP-Request/Identity
 
-    message, then the peer MAY use an EAP-SIM 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 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.2.4.  Server Operation in the Beginning of EAP-SIM Exchange
 
-    As discussed in Section 4.2.2.2, the server SHOULD NOT rely on an
 
-    identity string received in EAP-Response/Identity.  Therefore, the
 
-    RECOMMENDED way to start an EAP-SIM exchange is to ignore any
 
-    received identity strings.  The server SHOULD begin the EAP-SIM
 
-    exchange by issuing the EAP-Request/SIM/Start 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/SIM/Start message.  Three methods to request an identity
 
-    from the peer are discussed below.
 
-    If the server chooses not to ignore the contents of EAP-
 
-    Response/Identity, then the server may have already received an EAP-
 
-    SIM identity in this packet.  However, if the EAP server has not
 
-    received any EAP-SIM peer identity (permanent identity, pseudonym
 
-    identity, or fast re-authentication identity) from the peer when
 
-    sending the first EAP-SIM 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/SIM/Start 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
 
- Haverinen & Salowey          Informational                     [Page 19]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    of the EAP-Response/SIM/Start message.  This is done in the following
 
-    cases:
 
-    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/SIM/Start 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/SIM/Start 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/SIM/Start 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/SIM/Start 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, the
 
-    server does not have any identity, or the server does not recognize
 
-    the format of a received identity.
 
- 4.2.5.  Processing of EAP-Request/SIM/Start by the Peer
 
-    Upon receipt of an EAP-Request/SIM/Start message, the peer MUST
 
-    perform the following steps.
 
-    If the EAP-Request/SIM/Start does not include an identity request
 
-    attribute, then the peer responds with EAP-Response/SIM/Start without
 
-    AT_IDENTITY.  The peer includes the AT_SELECTED_VERSION and
 
-    AT_NONCE_MT attributes, because the exchange is a full authentication
 
-    exchange.
 
-    If the EAP-Request/SIM/Start includes AT_PERMANENT_ID_REQ, and if the
 
-    peer does not have a pseudonym available, then the peer MUST respond
 
-    with EAP-Response/SIM/Start and include the permanent identity in
 
- Haverinen & Salowey          Informational                     [Page 20]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    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/SIM/Start and include the
 
-    permanent identity in AT_IDENTITY or respond with EAP-Response/SIM/
 
-    Client-Error packet with the code "unable to process packet".
 
-    If the EAP-Request/SIM/Start includes AT_FULL_AUTH_ID_REQ, and if the
 
-    peer has a pseudonym available, then the peer SHOULD respond with
 
-    EAP-Response/SIM/Start and include the pseudonym identity in
 
-    AT_IDENTITY.  If the peer does not have a pseudonym when it receives
 
-    this message, then the peer MUST respond with EAP-Response/SIM/Start
 
-    and include the permanent identity in AT_IDENTITY.  The Peer MUST NOT
 
-    use a re-authentication identity in the AT_IDENTITY attribute.
 
-    If the EAP-Request/SIM/Start includes AT_ANY_ID_REQ, and if the peer
 
-    has maintained fast re-authentication state information and the peer
 
-    wants to use fast re-authentication, then the peer responds with
 
-    EAP-Response/SIM/Start 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/SIM/Start and
 
-    includes the pseudonym identity in AT_IDENTITY.  Else, the peer
 
-    responds with EAP-Response/SIM/Start and includes the permanent
 
-    identity in AT_IDENTITY.
 
-    An EAP-SIM exchange may include several EAP/SIM/Start rounds.  The
 
-    server may issue a second EAP-Request/SIM/Start if it was not able to
 
-    recognize the identity that the peer used in the previous AT_IDENTITY
 
-    attribute.  At most, three EAP/SIM/Start rounds can be used, so the
 
-    peer MUST NOT respond to more than three EAP-Request/SIM/Start
 
-    messages within an EAP exchange.  The peer MUST verify that the
 
-    sequence of EAP-Request/SIM/Start packets that 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/SIM/Start; in
 
-    other words, AT_ANY_ID_REQ MUST NOT be used in the second or third
 
-    EAP-Request/SIM/Start.  AT_FULLAUTH_ID_REQ MUST NOT be used if the
 
-    previous EAP-Request/SIM/Start 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.2.6.  Attacks Against Identity Privacy
 
-    The section above specifies two possible ways the peer can operate
 
-    upon receipt of AT_PERMANENT_ID_REQ.  This is because a received
 
-    AT_PERMANENT_ID_REQ does not necessarily originate from the valid
 
-    network, but an active attacker may transmit an EAP-Request/SIM/
 
-    Start 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
 
- Haverinen & Salowey          Informational                     [Page 21]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    EAP-Response/SIM/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,
 
-    if a conservative peer has a pseudonym username, the peer responds
 
-    with EAP-Response/SIM/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.2.7.  Processing of AT_IDENTITY by the Server
 
-    When the server receives an EAP-Response/SIM/Start 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
 
-    EAP-Request/SIM/Notification with AT_NOTIFICATION code "General
 
-    failure" (16384), and the EAP exchange terminates.  If the server
 
-    recognizes the permanent identity and is able to continue, then the
 
-    server proceeds with full authentication by sending EAP-Request/SIM/
 
-    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/SIM/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/SIM/Start
 
-    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/SIM/Challenge.
 
- Haverinen & Salowey          Informational                     [Page 22]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    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/SIM/Re-authentication
 
-    (Section 5).
 
-    If the server used AT_ANY_ID_REQ, and if the peer sent an
 
-    EAP-Response/SIM/Start with only AT_IDENTITY (indicating
 
-    re-authentication), but the server is not able to map the identity to
 
-    a permanent identity, then the server sends EAP-Request/SIM/Start
 
-    with AT_FULLAUTH_ID_REQ.
 
-    If the server used AT_ANY_ID_REQ, and if AT_IDENTITY contains a valid
 
-    fast re-authentication identity that 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 sends EAP-Request/SIM/Start
 
-    without any identity requesting attributes.
 
-    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/SIM/Start 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/SIM/Start with AT_FULLAUTH_ID_REQ.
 
- 4.3.  Message Sequence Examples (Informative)
 
-    This section contains non-normative message sequence examples to
 
-    illustrate how the peer identity can be communicated to the server.
 
- Haverinen & Salowey          Informational                     [Page 23]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 4.3.1.  Full Authentication
 
-    This case for full authentication is illustrated below in Figure 2.
 
-    In this case, AT_IDENTITY contains either the permanent identity or a
 
-    pseudonym identity.  The same sequence is also used in case the
 
-    server uses the AT_FULLAUTH_ID_REQ in EAP-Request/SIM/Start.
 
-       Peer                                             Authenticator
 
-         |                                                       |
 
-         |                            +------------------------------+
 
-         |                            | Server does not have a       |
 
-         |                            | Subscriber identity available|
 
-         |                            | When starting EAP-SIM        |
 
-         |                            +------------------------------+
 
-         |                                                       |
 
-         |          EAP-Request/SIM/Start                        |
 
-         |          (AT_ANY_ID_REQ, AT_VERSION_LIST)             |
 
-         |<------------------------------------------------------|
 
-         |                                                       |
 
-         |                                                       |
 
-         | EAP-Response/SIM/Start                                |
 
-         | (AT_IDENTITY, AT_NONCE_MT,                            |
 
-         |  AT_SELECTED_VERSION)                                 |
 
-         |------------------------------------------------------>|
 
-         |                                                       |
 
-          Figure 2: Requesting any identity, full authentication
 
-    If the peer uses its full authentication identity and the AT_IDENTITY
 
-    attribute contains a valid permanent identity or a valid pseudonym
 
-    identity that the EAP server is able to map to the permanent
 
-    identity, then the full authentication sequence proceeds as usual
 
-    with the EAP Server issuing the EAP-Request/SIM/Challenge message.
 
- Haverinen & Salowey          Informational                     [Page 24]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 4.3.2.  Fast Re-authentication
 
-    The case when the server uses the AT_ANY_ID_REQ and the peer wants to
 
-    perform fast re-authentication is illustrated below in Figure 3.
 
-       Peer                                             Authenticator
 
-         |                                                       |
 
-         |                            +------------------------------+
 
-         |                            | Server does not have a       |
 
-         |                            | Subscriber identity available|
 
-         |                            | When starting EAP-SIM        |
 
-         |                            +------------------------------+
 
-         |                                                       |
 
-         |        EAP-Request/SIM/Start                          |
 
-         |        (AT_ANY_ID_REQ, AT_VERSION_LIST)               |
 
-         |<------------------------------------------------------|
 
-         |                                                       |
 
-         |                                                       |
 
-         | EAP-Response/SIM/Start                                |
 
-         | (AT_IDENTITY containing a fast re-auth. identity)     |
 
-         |------------------------------------------------------>|
 
-         |                                                       |
 
-        Figure 3: Requesting any identity, fast re-authentication
 
-    On fast re-authentication, if the AT_IDENTITY attribute contains a
 
-    valid fast re-authentication identity and the server agrees on using
 
-    fast re-authentication, then the server proceeds with the fast
 
-    re-authentication sequence and issues the EAP-Request/SIM/
 
-    Re-authentication packet, as specified in Section 5.
 
- Haverinen & Salowey          Informational                     [Page 25]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 4.3.3.  Fall Back to Full Authentication
 
-    Figure 4 illustrates cases in which the server does not recognize the
 
-    fast re-authentication identity the peer used in AT_IDENTITY, and
 
-    issues a second EAP-Request/SIM/Start message.
 
-       Peer                                             Authenticator
 
-         |                                                       |
 
-         |                            +------------------------------+
 
-         |                            | Server does not have a       |
 
-         |                            | Subscriber identity available|
 
-         |                            | When starting EAP-SIM        |
 
-         |                            +------------------------------+
 
-         |                                                       |
 
-         |        EAP-Request/SIM/Start                          |
 
-         |        (AT_ANY_ID_REQ, AT_VERSION_LIST)               |
 
-         |<------------------------------------------------------|
 
-         |                                                       |
 
-         |                                                       |
 
-         | EAP-Response/SIM/Start                                |
 
-         | (AT_IDENTITY containing a fast re-auth. identity)     |
 
-         |------------------------------------------------------>|
 
-         |                                                       |
 
-         |                            +------------------------------+
 
-         |                            | Server does not recognize    |
 
-         |                            | The fast re-auth.            |
 
-         |                            | Identity                     |
 
-         |                            +------------------------------+
 
-         |                                                       |
 
-         |     EAP-Request/SIM/Start                             |
 
-         |     (AT_FULLAUTH_ID_REQ, AT_VERSION_LIST)             |
 
-         |<------------------------------------------------------|
 
-         |                                                       |
 
-         |                                                       |
 
-         | EAP-Response/SIM/Start                                |
 
-         | (AT_IDENTITY with a full-auth. identity, AT_NONCE_MT, |
 
-         |  AT_SELECTED_VERSION)                                 |
 
-         |------------------------------------------------------>|
 
-         |                                                       |
 
-               Figure 4: Fall back to full authentication
 
- Haverinen & Salowey          Informational                     [Page 26]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 4.3.4.  Requesting the Permanent Identity 1
 
-    Figure 5 illustrates the case in which the EAP server fails to map
 
-    the pseudonym identity included in the EAP-Response/Identity packet
 
-    to a valid permanent identity.
 
-       Peer                                             Authenticator
 
-          |                                                       |
 
-          |                               EAP-Request/Identity    |
 
-          |<------------------------------------------------------|
 
-          |                                                       |
 
-          | EAP-Response/Identity                                 |
 
-          | (Includes a pseudonym)                                |
 
-          |------------------------------------------------------>|
 
-          |                                                       |
 
-          |                            +------------------------------+
 
-          |                            | Server fails to map the      |
 
-          |                            | Pseudonym to a permanent id. |
 
-          |                            +------------------------------+
 
-          |  EAP-Request/SIM/Start                                |
 
-          |  (AT_PERMANENT_ID_REQ, AT_VERSION_LIST)               |
 
-          |<------------------------------------------------------|
 
-          |                                                       |
 
-          | EAP-Response/SIM/Start                                |
 
-          | (AT_IDENTITY with permanent identity, AT_NONCE_MT,    |
 
-          |  AT_SELECTED_VERSION)                                 |
 
-          |------------------------------------------------------>|
 
-          |                                                       |
 
-               Figure 5: Requesting the permanent identity
 
-    If the server recognizes the permanent identity, then the
 
-    authentication sequence proceeds as usual with the EAP Server issuing
 
-    the EAP-Request/SIM/Challenge message.
 
- Haverinen & Salowey          Informational                     [Page 27]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 4.3.5.  Requesting the Permanent Identity 2
 
-    Figure 6 illustrates the case in which the EAP server fails to map
 
-    the pseudonym included in the AT_IDENTITY attribute to a valid
 
-    permanent identity.
 
-       Peer                                             Authenticator
 
-          |                                                       |
 
-          |                            +------------------------------+
 
-          |                            | Server does not have a       |
 
-          |                            | Subscriber identity available|
 
-          |                            | When starting EAP-SIM        |
 
-          |                            +------------------------------+
 
-          |        EAP-Request/SIM/Start                          |
 
-          |        (AT_ANY_ID_REQ, AT_VERSION_LIST)               |
 
-          |<------------------------------------------------------|
 
-          |                                                       |
 
-          |EAP-Response/SIM/Start                                 |
 
-          |(AT_IDENTITY with a pseudonym identity, AT_NONCE_MT,   |
 
-          | AT_SELECTED_VERSION)                                  |
 
-          |------------------------------------------------------>|
 
-          |                           +-------------------------------+
 
-          |                           | Server fails to map the       |
 
-          |                           | Pseudonym in AT_IDENTITY      |
 
-          |                           | to a valid permanent identity |
 
-          |                           +-------------------------------+
 
-          |                                                       |
 
-          |                EAP-Request/SIM/Start                  |
 
-          |                (AT_PERMANENT_ID_REQ, AT_VERSION_LIST) |
 
-          |<------------------------------------------------------|
 
-          |                                                       |
 
-          | EAP-Response/SIM/Start                                |
 
-          | (AT_IDENTITY with permanent identity,                 |
 
-          |  AT_NONCE_MT, AT_SELECTED_VERSION)                    |
 
-          |------------------------------------------------------>|
 
-          |                                                       |
 
-    Figure 6: Requesting a permanent identity (two EAP-SIM Start rounds)
 
- 4.3.6.  Three EAP-SIM/Start Roundtrips
 
-    In the worst case, there are three EAP/SIM/Start round trips before
 
-    the server obtains an acceptable identity.  This case is illustrated
 
-    in Figure 7.
 
- Haverinen & Salowey          Informational                     [Page 28]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-       Peer                                             Authenticator
 
-        |                                                       |
 
-        |                            +------------------------------+
 
-        |                            | Server does not have a       |
 
-        |                            | Subscriber identity available|
 
-        |                            | When starting EAP-SIM        |
 
-        |                            +------------------------------+
 
-        |        EAP-Request/SIM/Start                          |
 
-        |        (Includes AT_ANY_ID_REQ, AT_VERSION_LIST)      |
 
-        |<------------------------------------------------------|
 
-        |                                                       |
 
-        | EAP-Response/SIM/Start                                |
 
-        | (AT_IDENTITY with fast re-auth. identity)             |
 
-        |------------------------------------------------------>|
 
-        |                                                       |
 
-        |                            +------------------------------+
 
-        |                            | Server does not accept       |
 
-        |                            | The fast re-auth.            |
 
-        |                            | Identity                     |
 
-        |                            +------------------------------+
 
-        |     EAP-Request/SIM/Start                             |
 
-        |     (AT_FULLAUTH_ID_REQ, AT_VERSION_LIST)             |
 
-        |<------------------------------------------------------|
 
-        |                                                       |
 
-        :                                                       :
 
-        :                                                       :
 
-        :                                                       :
 
-        :                                                       :
 
-        |EAP-Response/SIM/Start                                 |
 
-        |(AT_IDENTITY with a pseudonym identity, AT_NONCE_MT,   |
 
-        | AT_SELECTED_VERSION)                                  |
 
-        |------------------------------------------------------>|
 
-        |                                                       |
 
-        |                           +-------------------------------+
 
-        |                           | Server fails to map the       |
 
-        |                           | Pseudonym in AT_IDENTITY      |
 
-        |                           | to a valid permanent identity |
 
-        |                           +-------------------------------+
 
-        |           EAP-Request/SIM/Start                       |
 
-        |           (AT_PERMANENT_ID_REQ, AT_VERSION_LIST)      |
 
-        |<------------------------------------------------------|
 
-        |                                                       |
 
-        | EAP-Response/SIM/Start                                |
 
-        | (AT_IDENTITY with permanent identity, AT_NONCE_MT,    |
 
-        |  AT_SELECTED_VERSION)                                 |
 
-        |------------------------------------------------------>|
 
-        |                                                       |
 
-                 Figure 7: Three EAP-SIM Start rounds
 
- Haverinen & Salowey          Informational                     [Page 29]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    After the last EAP-Response/SIM/Start message, the full
 
-    authentication sequence proceeds as usual.  If the EAP Server
 
-    recognizes the permanent identity and is able to proceed, the server
 
-    issues the EAP-Request/SIM/Challenge message.
 
- 5.  Fast Re-Authentication
 
- 5.1.  General
 
-    In some environments, EAP authentication may be performed frequently.
 
-    Because the EAP-SIM full authentication procedure makes use of the
 
-    GSM SIM A3/A8 algorithms, and therefore requires 2 or 3 fresh
 
-    triplets from the Authentication Centre, the full authentication
 
-    procedure is not very well suited for frequent use.  Therefore,
 
-    EAP-SIM includes a more inexpensive fast re-authentication procedure
 
-    that does not make use of the SIM A3/A8 algorithms and does not need
 
-    new triplets from the Authentication Centre.  Re-authentication can
 
-    be performed in fewer roundtrips than the full authentication.
 
-    Fast re-authentication is optional to implement for both the EAP-SIM
 
-    server and peer.  On each EAP authentication, either one of the
 
-    entities may also fall back on full authentication if it 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 that were used
 
-    in full authentication are used to protect EAP-SIM 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 re-authentications.  For example, on the second fast
 
-    re-authentication, the counter value is two or greater.  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.
 
- Haverinen & Salowey          Informational                     [Page 30]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    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.
 
-    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, 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 UMTS AKA
 
-    When analyzing the fast re-authentication exchange, it may be helpful
 
-    to compare it with the UMTS Authentication and Key Agreement (AKA)
 
-    exchange, which it resembles closely.  The counter corresponds to the
 
-    UMTS AKA sequence number, NONCE_S corresponds to RAND, AT_MAC in
 
-    EAP-Request/SIM/Re-authentication corresponds to AUTN, the AT_MAC in
 
-    EAP-Response/SIM/Re-authentication 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 UMTS 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
 
-    re-authentication identity is lost and the network does not recognize
 
-    it, the EAP server can fall back on full authentication.
 
- Haverinen & Salowey          Informational                     [Page 31]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    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/SIM/Challenge message (Section 9.3).  This attribute
 
-    contains a new fast re-authentication identity for the next fast
 
-    re-authentication.  The attribute also works as a capability flag
 
-    that, indicating 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 MUST use full authentication next time.  If the peer wants to
 
-    use re-authentication, it uses this fast re-authentication identity
 
-    on next authentication.  Even if the peer has a fast
 
-    re-authentication identity, the peer MAY discard the fast
 
-    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/SIM/Challenge or
 
-    EAP-Request/SIM/ Re-authentication, 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/SIM/Start
 
-    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.
 
- Haverinen & Salowey          Informational                     [Page 32]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    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.  In this case, the server
 
-    starts the full authentication procedure by issuing an
 
-    EAP-Request/SIM/Start packet.  This packet always starts a full
 
-    authentication sequence if it does not include the AT_ANY_ID_REQ
 
-    attribute.  If the server was not able to recover the peer's identity
 
-    from the fast re-authentication identity, the server includes either
 
-    the AT_FULLAUTH_ID_REQ or the AT_PERMANENT_ID_REQ attribute in this
 
-    EAP request.
 
- 5.4.  Fast Re-authentication Procedure
 
-    Figure 8 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
 
-    re-authentication identity in the EAP-Response/Identity packet.  As
 
-    discussed above, an alternative way to communicate the
 
-    re-authentication identity to the server is for the peer to use the
 
-    AT_IDENTITY attribute in the EAP-Response/SIM/Start 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/SIM/Start
 
-    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/SIM/
 
-    Re-authentication 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/SIM/Re-authentication packet,
 
- Haverinen & Salowey          Informational                     [Page 33]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    including the AT_COUNTER attribute with the same counter value and
 
-    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/SIM/
 
-    Re-authentication packet.  If these checks are successful, the
 
-    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-SIM notification
 
-    round.
 
- Haverinen & Salowey          Informational                     [Page 34]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-        Peer                                             Authenticator
 
-           |                                                       |
 
-           |                               EAP-Request/Identity    |
 
-           |<------------------------------------------------------|
 
-           |                                                       |
 
-           | EAP-Response/Identity                                 |
 
-           | (Includes a fast re-authentication identity)          |
 
-           |------------------------------------------------------>|
 
-           |                                                       |
 
-           |                          +--------------------------------+
 
-           |                          | Server recognizes the identity |
 
-           |                          | and agrees to use fast         |
 
-           |                          | re-authentication              |
 
-           |                          +--------------------------------+
 
-           |                                                       |
 
-           :                                                       :
 
-           :                                                       :
 
-           :                                                       :
 
-           :                                                       :
 
-           |  EAP-Request/SIM/Re-authentication                    |
 
-           |  (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 fast re-  |            |
 
-      | authentication identity for next re-auth.     |            |
 
-      +-----------------------------------------------+            |
 
-           |                                                       |
 
-           | EAP-Response/SIM/Re-authentication                    |
 
-           | (AT_IV, AT_ENCR_DATA, *AT_COUNTER with same value,    |
 
-           |  AT_MAC)                                              |
 
-           |------------------------------------------------------>|
 
-           |                          +--------------------------------+
 
-           |                          | Server verifies AT_MAC and     |
 
-           |                          | the counter                    |
 
-           |                          +--------------------------------+
 
-           |                                                       |
 
-           |                                          EAP-Success  |
 
-           |<------------------------------------------------------|
 
-           |                                                       |
 
-                     Figure 8: Fast Re-authentication
 
- Haverinen & Salowey          Informational                     [Page 35]
 
- RFC 4186                 EAP-SIM 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/SIM/
 
-    Re-authentication, it indicates the counter synchronization problem
 
-    by including the encrypted AT_COUNTER_TOO_SMALL in EAP-Response/SIM/
 
-    Re-authentication.  The server responds with EAP-Request/SIM/Start to
 
-    initiate a normal full authentication procedure.  This is illustrated
 
-    in Figure 9.  Encrypted attributes are denoted with '*'.
 
-        Peer                                             Authenticator
 
-           |          EAP-Request/SIM/Start                        |
 
-           |          (AT_ANY_ID_REQ, AT_VERSION_LIST)             |
 
-           |<------------------------------------------------------|
 
-           |                                                       |
 
-           | EAP-Response/SIM/Start                                |
 
-           | (AT_IDENTITY)                                         |
 
-           | (Includes a fast re-authentication identity)          |
 
-           |------------------------------------------------------>|
 
-           |                                                       |
 
-           |  EAP-Request/SIM/Re-authentication                    |
 
-           |  (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/SIM/Re-authentication                    |
 
-           | (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/SIM/Start          |
 
-           |                        (AT_VERSION_LIST)              |
 
-           |<------------------------------------------------------|
 
-      +---------------------------------------------------------------+
 
-      |                Normal full authentication follows.            |
 
-      +---------------------------------------------------------------+
 
-           |                                                       |
 
-           Figure 9: Fast Re-authentication, counter is not fresh
 
- Haverinen & Salowey          Informational                     [Page 36]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    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/SIM/Re-authentication.  This attribute
 
-    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/SIM/Re-authentication packet.  If not, the server
 
-    terminates the authentication exchange by sending the
 
-    EAP-Request/SIM/Notification with AT_NOTIFICATION code "General
 
-    failure" (16384).  If all checks on the packet are successful, the
 
-    server transmits a new EAP-Request/SIM/Start packet and the full
 
-    authentication procedure is performed as usual.  Since the server
 
-    already knows the subscriber identity, it MUST NOT include
 
-    AT_ANY_ID_REQ, AT_FULLAUTH_ID_REQ, or AT_PERMANENT_ID_REQ in the
 
-    EAP-Request/SIM/Start.
 
-    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-SIM Notifications
 
- 6.1.  General
 
-    EAP-SIM does not prohibit the use of the EAP Notifications as
 
-    specified in [RFC3748].  EAP Notifications can be used at any time in
 
-    the EAP-SIM exchange.  It should be noted that EAP-SIM does not
 
-    protect EAP Notifications.  EAP-SIM also specifies method-specific
 
-    EAP-SIM notifications that are protected in some cases.
 
-    The EAP server can use EAP-SIM 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/SIM/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/SIM/Notification packet, even if the peer did not
 
-    recognize the notification code.
 
- Haverinen & Salowey          Informational                     [Page 37]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    An EAP-SIM full authentication exchange or a fast re-authentication
 
-    exchange MUST NOT include more than one EAP-SIM 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
 
-    receipt of a notification code from this range implies a failed EAP
 
-    exchange, so the peer can use the notification as a failure
 
-    indication.  After receiving the EAP-Response/SIM/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-SIM
 
-    exchange the notification can be used.  If the P bit is set to zero,
 
-    the notification can only be used after a successful
 
-    EAP/SIM/Challenge round in full authentication or a successful
 
-    EAP/SIM/Re-authentication round in reauthentication.  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/SIM/Re-authentication.
 
-    If the P bit is set to one, the notification can only by used before
 
-    the EAP/SIM/Challenge round in full authentication, or before the
 
-    EAP/SIM/Re-authentication 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.8 and Section 9.9 specify what other attributes must be
 
-    included in the notification packets.
 
-    Some of the notification codes are authorization related and, hence,
 
-    are not usually considered part of the responsibility of an EAP
 
-    method.  However, they are included as part of EAP-SIM 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-SIM server implementation may decide never to send
 
-    these EAP-SIM notifications.
 
- Haverinen & Salowey          Informational                     [Page 38]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 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-SIM
 
-    notification to indicate failure to the peer.  In this case, the
 
-    result indication is integrity and replay protected.
 
-    By sending an EAP-Response/SIM/Challenge packet or an
 
-    EAP-Response/SIM/Re-authentication 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-SIM 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/SIM/Challenge or the EAP-Request/SIM/Re-authentication
 
-    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/SIM/Challenge or EAP-Response/SIM/Re-authentication.
 
-    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-SIM notification round will follow.  The following EAP-SIM
 
-    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/SIM/Challenge or
 
-    EAP-Request/SIM/Re-authentication 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-SIM response
 
-    to this notification.  Hence, the server MUST ignore the contents of
 
-    the EAP-SIM response it receives from the
 
-    EAP-Request/SIM/Notification with this code.  Regardless of the
 
-    contents of the EAP-SIM response, the server MUST send EAP-Success as
 
-    the next packet.
 
- Haverinen & Salowey          Informational                     [Page 39]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 6.3.  Error Cases
 
-    This section specifies the operation of the peer and the server in
 
-    error cases.  The subsections below require the EAP-SIM peer and
 
-    server to send an error packet (EAP-Response/SIM/Client-Error from
 
-    the peer or EAP-Request/SIM/Notification from the server) in error
 
-    cases.  However, implementations SHOULD NOT rely upon the correct
 
-    error reporting behavior of the peer, authenticator, or the server.
 
-    It is possible for error and other messages to be lost in transit 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
 
-    In general, if an EAP-SIM peer detects an error in a received EAP-SIM
 
-    packet, the EAP-SIM implementation responds with the
 
-    EAP-Response/SIM/Client-Error packet.  In response to the
 
-    EAP-Response/SIM/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-SIM Subtype in the EAP request.
 
-    o  A RAND challenge repeated in AT_RAND.
 
-    o  invalid AT_MAC.  The peer SHOULD log this event.
 
-    o  invalid pad bytes in AT_PADDING.
 
- Haverinen & Salowey          Informational                     [Page 40]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    o  the peer does not want to process AT_PERMANENT_ID_REQ.
 
-    Separate error codes have been defined for the following error cases
 
-    in Section 10.19:
 
-    As specified in Section 4.1, when processing the AT_VERSION_LIST
 
-    attribute, which lists the EAP-SIM versions supported by the server,
 
-    if the attribute does not include a version that is implemented by
 
-    the peer and allowed in the peer's security policy, then the peer
 
-    MUST send the EAP-Response/SIM/Client-Error packet with the error
 
-    code "unsupported version".
 
-    If the number of RAND challenges is smaller than what is required by
 
-    peer's local policy when processing the AT_RAND attribute, the peer
 
-    MUST send the EAP-Response/SIM/Client-Error packet with the error
 
-    code "insufficient number of challenges".
 
-    If the peer believes that the RAND challenges included in AT_RAND are
 
-    not fresh e.g., because it is capable of remembering some previously
 
-    used RANDs, the peer MUST send the EAP-Response/SIM/Client-Error
 
-    packet with the error code "RANDs are not fresh".
 
- 6.3.2.  Server Operation
 
-    If an EAP-SIM server detects an error in a received EAP-SIM response,
 
-    the server MUST issue the EAP-Request/SIM/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
 
-    between these two codes depends on the phase of the EAP-SIM exchange,
 
-    see Section 6.  When the server issues an EAP-
 
-    Request/SIM/Notification that implies failure, the error cases
 
-    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-SIM Subtype in the EAP Response
 
-    o  invalid AT_MAC.  The server SHOULD log this event.
 
-    o  invalid AT_COUNTER
 
- Haverinen & Salowey          Informational                     [Page 41]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 6.3.3.  EAP-Failure
 
-    The EAP-SIM server sends EAP-Failure in two cases:
 
-    1) In response to an EAP-Response/SIM/Client-Error packet the server
 
-       has received from the peer, or
 
-    2) Following an EAP-SIM notification round, when the AT_NOTIFICATION
 
-       code implies failure.
 
-    The EAP-SIM server MUST NOT send EAP-Failure in cases other than
 
-    these two.  However, it should be noted that even though the EAP-SIM
 
-    server would not send an EAP-Failure, an authorization decision that
 
-    happens outside EAP-SIM, 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) and case 2),
 
-    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/SIM/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/SIM/Challenge 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 full
 
-    authentication, then the peer MUST accept EAP-Success after a
 
-    successful EAP/SIM/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/SIM/Challenge round.  In this case, the peer MUST only accept
 
-    EAP-Success after receiving an EAP-SIM Notification with the
 
-    AT_NOTIFICATION code "Success" (32768).
 
-    On fast re-authentication, EAP-Success can only be sent after the
 
-    EAP/SIM/Re-authentication 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/SIM/Re-authentication 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
 
- Haverinen & Salowey          Informational                     [Page 42]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    re-authentication, then the peer MUST accept EAP-Success after a
 
-    successful EAP/SIM/Re-authentication 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/SIM/Re-
 
-    authentication round.  In this case, the peer MUST only accept
 
-    EAP-Success after receiving an EAP-SIM Notification with the
 
-    AT_NOTIFICATION code "Success" (32768).
 
-    If the peer receives an EAP-SIM 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-SIM full authentication, a Master Key (MK) is derived from the
 
-    underlying GSM authentication values (Kc keys), the NONCE_MT, and
 
-    other relevant context as follows.
 
-    MK = SHA1(Identity|n*Kc| NONCE_MT| Version List| Selected Version)
 
-    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
 
-    not used, it is the identity from the EAP-Response/Identity packet.
 
-    The identity string is included as-is, without any changes.  As
 
-    discussed in Section 4.2.2.2, relying on EAP-Response/Identity for
 
-    conveying the EAP-SIM peer identity is discouraged, and the server
 
-    SHOULD use the EAP-SIM method-specific identity attributes.
 
-    The notation n*Kc in the formula above denotes the n Kc values
 
-    concatenated.  The Kc keys are used in the same order as the RAND
 
-    challenges in AT_RAND attribute.  NONCE_MT denotes the NONCE_MT value
 
-    (not the AT_NONCE_MT attribute, but only the nonce value).  The
 
-    Version List includes the 2-byte-supported version numbers from
 
-    AT_VERSION_LIST, in the same order as in the attribute.  The Selected
 
-    Version is the 2-byte selected version from AT_SELECTED_VERSION.
 
-    Network byte order is used, just as in the attributes.  The hash
 
-    function SHA-1 is specified in [SHA-1].  If several EAP/SIM/Start
 
-    roundtrips are used in an EAP-SIM exchange, then the NONCE_MT,
 
-    Version List and Selected version from the last EAP/SIM/Start round
 
-    are used, and the previous EAP/SIM/Start rounds are ignored.
 
- Haverinen & Salowey          Informational                     [Page 43]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    The Master Key is fed into a Pseudo-Random number Function (PRF)
 
-    which generates separate Transient EAP Keys (TEKs) for protecting
 
-    EAP-SIM 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-SIM requires two TEKs for its own purposes; the authentication
 
-    key K_aut is to be used with the AT_MAC attribute, and the encryption
 
-    key K_encr is 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 the 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 Appendix B.
 
-    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).
 
-    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/SIM/Start packet, or, if
 
- Haverinen & Salowey          Informational                     [Page 44]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    EAP-Response/SIM/Start 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/SIM/Re-authentication packet.  The counter
 
-    is used in network byte order.  NONCE_S denotes the 16-byte NONCE_S
 
-    value from the AT_NONCE_S attribute used in the
 
-    EAP-Request/SIM/Re-authentication 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
 
-    two 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.
 
-    When generating the initial Master Key, the hash function is used as
 
-    a mixing function to combine several session keys (Kc's) generated by
 
-    the GSM authentication procedure and the random number NONCE_MT into
 
-    a single session key.  There are several reasons for this.  The
 
-    current GSM session keys are, at most, 64 bits, so two or more of
 
-    them are needed to generate a longer key.  By using a one-way
 
-    function to combine the keys, we are assured that, even if an
 
-    attacker managed to learn one of the EAP-SIM session keys, it
 
-    wouldn't help him in learning the original GSM Kc's.  In addition,
 
-    since we include the random number NONCE_MT in the calculation, the
 
-    peer is able to verify that the EAP-SIM packets it receives from the
 
-    network are fresh and not replays (also see Section 11).
 
- 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
 
- Haverinen & Salowey          Informational                     [Page 45]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    Length and Identifier fields in the EAP header are also specified in
 
-    [RFC3748].  In EAP-SIM, the Type field is set to 18.
 
-    In EAP-SIM, the Type-Data begins with an EAP-SIM header that consists
 
-    of a 1-octet Subtype field and a 2-octet reserved field.  The Subtype
 
-    values used in EAP-SIM are defined in the IANA considerations section
 
-    of the EAP-AKA specification [EAP-AKA].  The formats of the EAP
 
-    header and the EAP-SIM 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 that immediately follows the EAP-SIM 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
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-     |      Type     |    Length     |  Value...
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    Attribute Type
 
-          Indicates the particular type of attribute.  The attribute type
 
-          values are listed in the IANA considerations section of the
 
-          EAP-AKA specification [EAP-AKA].
 
-    Length
 
-          Indicates the length of this attribute in multiples of four
 
-          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 may be two or more bytes in length.
 
-          The type and length fields determine the format and length
 
-          of the value field.
 
- Haverinen & Salowey          Informational                     [Page 46]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    Attributes numbered within the range 0 through 127 are called
 
-    non-skippable attributes.  When an EAP-SIM peer encounters a
 
-    non-skippable attribute that the peer does not recognize, the peer
 
-    MUST send the EAP-Response/SIM/Client-Error packet, which terminates
 
-    the authentication exchange.  If an EAP-SIM server encounters a
 
-    non-skippable attribute that the server does not recognize, then the
 
-    server sends the EAP-Request/SIM/Notification packet with an
 
-    AT_NOTIFICATION code, which implies general failure ("General failure
 
-    after authentication" (0), or "General failure" (16384), depending on
 
-    the phase of the exchange), which terminates the authentication
 
-    exchange.
 
-    Attributes within the range of 128 through 255 are called skippable
 
-    attributes.  When a skippable attribute is encountered and is not
 
-    recognized, it is ignored.  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 in searching for the next attribute.
 
-    Unless otherwise specified, the order of the attributes in an EAP-SIM
 
-    message is insignificant and an EAP-SIM implementation should not
 
-    assume a certain order to 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-SIM can be extended by specifying new attribute types.  If
 
-    skippable attributes are used, it is possible to extend the protocol
 
-    without breaking old implementations.
 
-    However, any new attributes added to the EAP-Request/SIM/Start or
 
-    EAP-Response/SIM/Start packets would not be integrity-protected.
 
-    Therefore, these messages MUST NOT be extended in the current version
 
-    of EAP-SIM.  If the list of supported EAP-SIM versions in the
 
-    AT_VERSION_LIST does not include versions other than 1, then the
 
-    server MUST NOT include attributes other than those specified in this
 
-    document in the EAP-Request/SIM/Start message.  Note that future
 
-    versions of this protocol might specify new attributes for
 
-    EAP-Request/SIM/Start and still support version 1 of the protocol.
 
-    In this case, the server might send an EAP-Request/SIM/Start message
 
-    that includes new attributes and indicates support for protocol
 
-    version 1 and other versions in the AT_VERSION_LIST attribute.  If
 
-    the peer selects version 1, then the peer MUST ignore any other
 
-    attributes included in EAP-Request/SIM/Start, other than those
 
-    specified in this document.  If the selected EAP-SIM version in
 
-    peer's AT_SELECTED_VERSION is 1, then the peer MUST NOT include other
 
- Haverinen & Salowey          Informational                     [Page 47]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    attributes aside from those specified in this document in the
 
-    EAP-Response/SIM/Start message.
 
-    When specifying new attributes, it should be noted that EAP-SIM 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-SIM SHOULD NOT exceed the EAP MTU of 1020 bytes.
 
-    Because EAP-SIM supports version negotiation, new versions of the
 
-    protocol can also be specified by using a new version number.
 
- 9.  Messages
 
-    This section specifies the messages used in EAP-SIM.  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.  The general message format is
 
-    specified in Section 8.1.
 
- 9.1.  EAP-Request/SIM/Start
 
-    In full authentication the first SIM-specific EAP Request is
 
-    EAP-Request/SIM/Start.  The EAP/SIM/Start roundtrip is used for two
 
-    purposes.  In full authentication this packet is used to request the
 
-    peer to send the AT_NONCE_MT attribute to the server.  In addition,
 
-    as specified in Section 4.2, the Start round trip may be used by the
 
-    server for obtaining the peer identity.  As discussed in Section 4.2,
 
-    several Start rounds may be required to obtain a valid peer identity.
 
-    The server MUST always include the AT_VERSION_LIST attribute.
 
-    The server MAY include one of the following identity-requesting
 
-    attributes: AT_PERMANENT_ID_REQ, AT_FULLAUTH_ID_REQ, or
 
-    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 received a response from the peer, it MUST NOT
 
-    issue a new EAP-Request/SIM/Start packet if it has previously issued
 
-    an EAP-Request/SIM/Start message either without any identity
 
-    requesting attributes or with the AT_PERMANENT_ID_REQ attribute.
 
-    If the server has received a response from the peer, it MUST NOT
 
-    issue a new EAP-Request/SIM/Start packet with the AT_ANY_ID_REQ or
 
-    AT_FULLAUTH_ID_REQ attributes if it has previously issued an
 
-    EAP-Request/SIM/Start message with the AT_FULLAUTH_ID_REQ attribute.
 
- Haverinen & Salowey          Informational                     [Page 48]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    If the server has received a response from the peer, it MUST NOT
 
-    issue a new EAP-Request/SIM/Start packet with the AT_ANY_ID_REQ
 
-    attribute if the server has previously issued an
 
-    EAP-Request/SIM/Start message with the AT_ANY_ID_REQ attribute.
 
-    This message MUST NOT include AT_MAC, AT_IV, or AT_ENCR_DATA.
 
- 9.2.  EAP-Response/SIM/Start
 
-    The peer sends EAP-Response/SIM/Start in response to a valid
 
-    EAP-Request/SIM/Start from the server.
 
-    If and only if the server's EAP-Request/SIM/Start includes one of the
 
-    identity-requesting attributes, then the peer MUST include the
 
-    AT_IDENTITY attribute.  The usage of AT_IDENTITY is defined in
 
-    Section 4.2.
 
-    The AT_NONCE_MT attribute MUST NOT be included if the AT_IDENTITY
 
-    with a fast re-authentication identity is present for fast
 
-    re-authentication.  AT_NONCE_MT MUST be included in all other cases
 
-    (full authentication).
 
-    The AT_SELECTED_VERSION attribute MUST NOT be included if the
 
-    AT_IDENTITY attribute with a fast re-authentication identity is
 
-    present for fast re-authentication.  In all other cases,
 
-    AT_SELECTED_VERSION MUST be included (full authentication).  This
 
-    attribute is used in version negotiation, as specified in
 
-    Section 4.1.
 
-    This message MUST NOT include AT_MAC, AT_IV, or AT_ENCR_DATA.
 
- 9.3.  EAP-Request/SIM/Challenge
 
-    The server sends the EAP-Request/SIM/Challenge after receiving a
 
-    valid EAP-Response/SIM/Start that contains AT_NONCE_MT and
 
-    AT_SELECTED_VERSION, and after successfully obtaining the subscriber
 
-    identity.
 
-    The AT_RAND attribute MUST be included.
 
-    The AT_RESULT_IND attribute MAY be included.  The usage of this
 
-    attribute is discussed in Section 6.2.
 
-    The AT_MAC attribute MUST be included.  For
 
-    EAP-Request/SIM/Challenge, the MAC code is calculated over the
 
-    following data:
 
-    EAP packet| NONCE_MT
 
- Haverinen & Salowey          Informational                     [Page 49]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    The EAP packet is represented as specified in Section 8.1.  It is
 
-    followed by the 16-byte NONCE_MT value from the peer's AT_NONCE_MT
 
-    attribute.
 
-    The EAP-Request/SIM/Challenge packet MAY include encrypted attributes
 
-    for identity privacy and for communicating the next fast
 
-    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.
 
-    When processing this message, the peer MUST process AT_RAND before
 
-    processing other attributes.  Only if AT_RAND is 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/SIM/Challenge
 
-    The peer sends EAP-Response/SIM/Challenge in response to a valid
 
-    EAP-Request/SIM/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/SIM/Challenge, but the peer
 
-    MUST send EAP-Response/SIM/Client-Error.
 
-    The AT_MAC attribute MUST be included.  For EAP-
 
-    Response/SIM/Challenge, the MAC code is calculated over the following
 
-    data:
 
-    EAP packet| n*SRES
 
-    The EAP packet is represented as specified in Section 8.1.  The EAP
 
-    packet bytes are immediately followed by the two or three SRES values
 
-    concatenated, denoted above with the notation n*SRES.  The SRES
 
-    values are used in the same order as the corresponding RAND
 
-    challenges in the server's AT_RAND attribute.
 
- Haverinen & Salowey          Informational                     [Page 50]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    The AT_RESULT_IND attribute MAY be included if it was included in
 
-    EAP-Request/SIM/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/SIM/Challenge
 
-    messages that include these attributes even if the server did not
 
-    implement these optional attributes.
 
- 9.5.  EAP-Request/SIM/Re-authentication
 
-    The server sends the EAP-Request/SIM/Re-authentication 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/SIM/Start.
 
-    AT_MAC MUST be included.  No message-specific data is included in the
 
-    MAC calculation.  See Section 10.14.
 
-    The AT_RESULT_IND attribute MAY be included.  The usage of this
 
-    attribute is discussed in Section 6.2.
 
-    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.6.  EAP-Response/SIM/Re-authentication
 
-    The client sends the EAP-Response/SIM/Re-authentication packet in
 
-    response to a valid EAP-Request/SIM/Re-authentication.
 
-    The AT_MAC attribute MUST be included.  For
 
-    EAP-Response/SIM/Re-authentication, 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_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
 
- Haverinen & Salowey          Informational                     [Page 51]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    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/SIM/Re-authentication.  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/SIM/Re-authentication, but the peer MUST send
 
-    EAP-Response/SIM/Client-Error.
 
- 9.7.  EAP-Response/SIM/Client-Error
 
-    The peer sends EAP-Response/SIM/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.8.  EAP-Request/SIM/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
 
-    notification code in AT_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.
 
-    No message-specific data is included in the MAC calculation.  See
 
-    Section 10.14.
 
-    If EAP-Request/SIM/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/SIM/Re-authentication packet on the same fast
 
-    re-authentication exchange.
 
- Haverinen & Salowey          Informational                     [Page 52]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 9.9.  EAP-Response/SIM/Notification
 
-    The usage of this message is specified in Section 6.  This packet is
 
-    an acknowledgement of EAP-Request/SIM/Notification.
 
-    The AT_MAC attribute MUST be included in cases when the P bit of the
 
-    notification code in AT_NOTIFICATION of EAP-Request/SIM/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.
 
-    No message-specific data is included in the MAC calculation, see
 
-    Section 10.14.
 
-    If EAP-Request/SIM/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/SIM/Re-authentication packet on the same fast
 
-    re-authentication exchange.
 
- 10.  Attributes
 
-    This section specifies the format of message attributes.  The
 
-    attribute type numbers are specified in the IANA considerations
 
-    section of the EAP-AKA specification [EAP-AKA].
 
- 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/SIM/Start, (2) EAP-Response/SIM/Start, (3)
 
-    EAP-Request/SIM/Challenge, (4) EAP-Response/SIM/Challenge, (5)
 
-    EAP-Request/SIM/Notification, (6) EAP-Response/SIM/Notification, (7)
 
-    EAP-Response/SIM/Client-Error, (8) EAP-Request/SIM/Re-authentication,
 
-    and (9) EAP-Response/SIM/Re-authentication.  The column denoted with
 
-    "Encr" indicates whether the attribute is a nested attribute that
 
-    MUST be included within AT_ENCR_DATA, and the column denoted with
 
-    "Skip" indicates whether the attribute is a skippable attribute.
 
-    "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
 
-    future versions of the protocol.
 
- Haverinen & Salowey          Informational                     [Page 53]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-               Attribute (1) (2) (3) (4) (5) (6) (7) (8) (9)  Encr Skip
 
-         AT_VERSION_LIST  1   0   0   0   0   0   0   0   0   N     N
 
-     AT_SELECTED_VERSION  0  0-1  0   0   0   0   0   0   0   N     N
 
-             AT_NONCE_MT  0  0-1  0   0   0   0   0   0   0   N     N
 
-     AT_PERMANENT_ID_REQ 0-1  0   0   0   0   0   0   0   0   N     N
 
-           AT_ANY_ID_REQ 0-1  0   0   0   0   0   0   0   0   N     N
 
-      AT_FULLAUTH_ID_REQ 0-1  0   0   0   0   0   0   0   0   N     N
 
-             AT_IDENTITY  0  0-1  0   0   0   0   0   0   0   N     N
 
-                 AT_RAND  0   0   1   0   0   0   0   0   0   N     N
 
-       AT_NEXT_PSEUDONYM  0   0  0-1  0   0   0   0   0   0   Y     Y
 
-       AT_NEXT_REAUTH_ID  0   0  0-1  0   0   0   0  0-1  0   Y     Y
 
-                   AT_IV  0   0  0-1  0* 0-1 0-1  0   1   1   N     Y
 
-            AT_ENCR_DATA  0   0  0-1  0* 0-1 0-1  0   1   1   N     Y
 
-              AT_PADDING  0   0  0-1  0* 0-1 0-1  0  0-1 0-1  Y     N
 
-           AT_RESULT_IND  0   0  0-1 0-1  0   0   0  0-1 0-1  N     Y
 
-                  AT_MAC  0   0   1   1  0-1 0-1  0   1   1   N     N
 
-              AT_COUNTER  0   0   0   0  0-1 0-1  0   1   1   Y     N
 
-    AT_COUNTER_TOO_SMALL  0   0   0   0   0   0   0   0  0-1  Y     N
 
-              AT_NONCE_S  0   0   0   0   0   0   0   1   0   Y     N
 
-         AT_NOTIFICATION  0   0   0   0   1   0   0   0   0   N     N
 
-    AT_CLIENT_ERROR_CODE  0   0   0   0   0   0   1   0   0   N     N
 
-    It should be noted that attributes AT_PERMANENT_ID_REQ,
 
-    AT_ANY_ID_REQ, and AT_FULLAUTH_ID_REQ are mutually exclusive; only
 
-    one of them can be included at the same time.  If one of the
 
-    attributes AT_IV and AT_ENCR_DATA is included, then both of the
 
-    attributes MUST be included.
 
- 10.2.  AT_VERSION_LIST
 
-    The format of the AT_VERSION_LIST 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_VERSION_L..| Length        | Actual Version List Length    |
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-     |  Supported Version 1          |  Supported Version 2          |
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-     .                                                               .
 
-     .                                                               .
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-     | Supported Version N           |     Padding                   |
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    This attribute is used in version negotiation, as specified in
 
-    Section 4.1.  The attribute contains the version numbers supported by
 
-    the EAP-SIM server.  The server MUST only include versions that it
 
- Haverinen & Salowey          Informational                     [Page 54]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    implements and that are allowed in its security policy.  The server
 
-    SHOULD list the versions in the order of preference, with the most
 
-    preferred versions listed first.  At least one version number MUST be
 
-    included.  The version number for the protocol described in this
 
-    document is one (0001 hexadecimal).
 
-    The value field of this attribute begins with 2-byte Actual Version
 
-    List Length, which specifies the length of the Version List in bytes,
 
-    not including the Actual Version List Length attribute length.  This
 
-    field is followed by the list of the versions supported by the
 
-    server, which each have a length of 2 bytes.  For example, if there
 
-    is only one supported version, then the Actual Version List Length is
 
-    2.  Because the length of the attribute must be a multiple of 4
 
-    bytes, the sender pads the value field with zero bytes when
 
-    necessary.
 
- 10.3.  AT_SELECTED_VERSION
 
-    The format of the AT_SELECTED_VERSION 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_SELECTED...| Length = 1    |    Selected Version           |
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    This attribute is used in version negotiation, as specified in
 
-    Section 4.1.  The value field of this attribute contains a two-byte
 
-    version number, which indicates the EAP-SIM version that the peer
 
-    wants to use.
 
- 10.4.  AT_NONCE_MT
 
-    The format of the AT_NONCE_MT 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_MT    | Length = 5    |           Reserved            |
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-     |                                                               |
 
-     |                           NONCE_MT                            |
 
-     |                                                               |
 
-     |                                                               |
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
- Haverinen & Salowey          Informational                     [Page 55]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    The value field of the NONCE_MT attribute contains two reserved bytes
 
-    followed by a random number freshly generated by the peer (16 bytes
 
-    long) for this EAP-SIM authentication exchange.  The random number is
 
-    used as a seed value for the new keying material.  The reserved bytes
 
-    are set to zero upon sending and ignored upon reception.
 
-    The peer MUST NOT re-use the NONCE_MT value from a previous EAP-SIM
 
-    authentication exchange.  If an EAP-SIM exchange includes several
 
-    EAP/SIM/Start rounds, then the peer SHOULD use the same NONCE_MT
 
-    value in all EAP-Response/SIM/Start packets.  The peer SHOULD use a
 
-    good source of randomness to generate NONCE_MT.  Please see [RFC4086]
 
-    for more information about generating random numbers for security
 
-    applications.
 
- 10.5.  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.2.  The
 
-    value field contains only two reserved bytes, which are set to zero
 
-    on sending and ignored on reception.
 
- 10.6.  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.2.  The value
 
-    field contains only two reserved bytes, which are set to zero on
 
-    sending and ignored on reception.
 
- Haverinen & Salowey          Informational                     [Page 56]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 10.7.  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.2.  The
 
-    value field contains only two reserved bytes, which are set to zero
 
-    on sending and ignored on reception.
 
- 10.8.  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 (optional)                     .
 
-     .                                                               .
 
-     |                                                               |
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The use of the AT_IDENTITY is defined in Section 4.2.  The value
 
-    field of this attribute begins with a 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.2.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.
 
- Haverinen & Salowey          Informational                     [Page 57]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 10.9.  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        |           Reserved            |
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-     |                                                               |
 
-     .                            n*RAND                             .
 
-     .                                                               .
 
-     |                                                               |
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    The value field of this attribute contains two reserved bytes
 
-    followed by n GSM RANDs, each 16 bytes long.  The value of n can be
 
-    determined by the attribute length.  The reserved bytes are set to
 
-    zero upon sending and ignored upon reception.
 
-    The number of RAND challenges (n) MUST be two or three.  The peer
 
-    MUST verify that the number of RAND challenges is sufficient
 
-    according to the peer's policy.  The server MUST use different RAND
 
-    values.  In other words, a RAND value can only be included once in
 
-    AT_RAND.  When processing the AT_RAND attribute, the peer MUST check
 
-    that the RANDs are different.
 
-    The EAP server MUST obtain fresh RANDs for each EAP-SIM full
 
-    authentication exchange.  More specifically, the server MUST consider
 
-    RANDs it included in AT_RAND to be consumed if the server receives an
 
-    EAP-Response/SIM/Challenge packet with a valid AT_MAC, or an
 
-    EAP-Response/SIM/Client-Error with the code "insufficient number of
 
-    challenges" or "RANDs are not fresh".  However, in other cases (if
 
-    the server does not receive a response to its
 
-    EAP-Request/SIM/Challenge packet, or if the server receives a
 
-    response other than the cases listed above), the server does not need
 
-    to consider the RANDs to be consumed, and the server MAY re-use the
 
-    RANDs in the AT_RAND attribute of the next full authentication
 
-    attempt.
 
- Haverinen & Salowey          Informational                     [Page 58]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 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 the 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.
 
- 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 the 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
 
- Haverinen & Salowey          Informational                     [Page 59]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    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-SIM 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 re-use the initialization vector
 
-    value from previous EAP-SIM 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.
 
-      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 encrypted using the
 
-    Advanced Encryption Standard (AES) [AES] with a 128-bit key in the
 
-    Cipher Block Chaining (CBC) mode of operation using 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.
 
- Haverinen & Salowey          Informational                     [Page 60]
 
- RFC 4186                 EAP-SIM 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_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-SIM 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
 
-    verification fails on the peer, then it MUST send the
 
-    EAP-Response/SIM/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 peer the
 
-    EAP-Request/SIM/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...                    |
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
 
-     |                                                               |
 
-     |                                                               |
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
- Haverinen & Salowey          Informational                     [Page 61]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 10.13.  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            |
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
-    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.14.  AT_MAC
 
-    The AT_MAC attribute is used for EAP-SIM message authentication.
 
-    Section 8 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-SIM 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-SIM 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                                 |
 
-     |                                                               |
 
-     |                                                               |
 
-     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 
- Haverinen & Salowey          Informational                     [Page 62]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    The MAC algorithm is an 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 the first 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-SIM message, the
 
-    recipient MUST process the AT_MAC attribute before looking at any
 
-    other attributes, except when processing EAP-Request/SIM/Challenge.
 
-    The processing of EAP-Request/SIM/Challenge is specified in 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.15.  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.16.  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.
 
- Haverinen & Salowey          Informational                     [Page 63]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 10.17.  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 freshly generated by the server (16
 
-    bytes) for this EAP-SIM fast re-authentication.  The random number is
 
-    used as a 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 re-use the NONCE_S value from any previous
 
-    EAP-SIM 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.18.  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.
 
-    The notification code values listed below have been reserved.  The
 
-    descriptions below illustrate the semantics of the notifications.
 
- Haverinen & Salowey          Informational                     [Page 64]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    The peer implementation MAY use different wordings when presenting
 
-    the notifications to the user.  The "requested service" depends on
 
-    the environment where EAP-SIM 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.19.  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
 
-     1    "unsupported version": the peer does not support any of
 
-          the versions listed in AT_VERSION_LIST
 
-     2    "insufficient number of challenges": the peer's policy
 
-          requires more triplets than the server included in AT_RAND
 
-     3    "RANDs are not fresh": the peer believes that the RAND
 
-          challenges included in AT_RAND were not fresh
 
- Haverinen & Salowey          Informational                     [Page 65]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 11.  IANA Considerations
 
-    IANA has assigned the EAP type number 18 for this protocol.
 
-    EAP-SIM shares most of the protocol design, such as attributes and
 
-    message Subtypes, with EAP-AKA [EAP-AKA].  EAP-SIM protocol numbers
 
-    should be administered in the same IANA registry as EAP-AKA.  The
 
-    initial values are listed in [EAP-AKA] for both protocols, so this
 
-    document does not require any new registries or parameter allocation.
 
-    As a common registry is used for EAP-SIM and EAP-AKA, the protocol
 
-    number allocation policy for both protocols is specified in
 
-    [EAP-AKA].
 
- 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-SIM, as well as vulnerabilities and security recommendations.
 
- 12.1.  A3 and A8 Algorithms
 
-    The GSM A3 and A8 algorithms are used in EAP-SIM.  [GSM-03.20]
 
-    specifies the general GSM authentication procedure and the external
 
-    interface (inputs and outputs) of the A3 and A8 algorithms.  The
 
-    operation of these functions falls completely within the domain of an
 
-    individual operator, and therefore, the functions are specified by
 
-    each operator rather than being fully standardised.  The GSM-MILENAGE
 
-    algorithm, specified publicly in [3GPP-TS-55.205], is an example
 
-    algorithm set for A3 and A8 algorithms.
 
-    The security of the A3 and A8 algorithms is important to the security
 
-    of EAP-SIM.  Some A3/A8 algorithms have been compromised; see [GSM-
 
-    Cloning] for discussion about the security of COMP-128 version 1.
 
-    Note that several revised versions of the COMP-128 A3/A8 algorithm
 
-    have been devised after the publication of these weaknesses and that
 
-    the publicly specified GSM-MILENAGE algorithm is not vulnerable to
 
-    any known attacks.
 
- 12.2.  Identity Protection
 
-    EAP-SIM 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-SIM exchange.  Hence, a peer
 
-    that has not yet performed any EAP-SIM exchanges does not typically
 
-    have a pseudonym available.  If the peer does not have a pseudonym
 
-    available, then the privacy mechanism cannot be used, but the
 
- Haverinen & Salowey          Informational                     [Page 66]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    permanent identity will have to be sent in the clear.  The terminal
 
-    SHOULD store the pseudonym in a 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 to attempt to learn
 
-    the subscriber's permanent identity.  However, as discussed in
 
-    Section 4.2.2, the terminal can refuse to send the cleartext
 
-    permanent identity 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.  If an external security mechanism is in use, the identity
 
-    privacy features of EAP-SIM may not be useful.  The security
 
-    considerations of using an external security mechanism with EAP-SIM
 
-    are beyond the scope of this document.
 
- 12.3.  Mutual Authentication and Triplet Exposure
 
-    EAP-SIM provides mutual authentication.  The peer believes that the
 
-    network is authentic because the network can calculate a correct
 
-    AT_MAC value in the EAP-Request/SIM/Challenge packet.  To calculate
 
-    AT_MAC it is sufficient to know the RAND and Kc values from the GSM
 
-    triplets (RAND, SRES, Kc) used in the authentication.  Because the
 
-    network selects the RAND challenges and the triplets, an attacker
 
-    that knows n (2 or 3) GSM triplets for the subscriber is able to
 
-    impersonate a valid network to the peer.  (Some peers MAY employ an
 
-    implementation-specific counter-measure against impersonating a valid
 
-    network by re-using a previously used RAND; see below.)  In other
 
-    words, the security of EAP-SIM is based on the secrecy of Kc keys,
 
-    which are considered secret intermediate results in the EAP-SIM
 
-    cryptographic calculations.
 
-    Given physical access to the SIM card, it is easy to obtain any
 
-    number of GSM triplets.
 
-    Another way to obtain triplets is to mount an attack on the peer
 
-    platform via a virus or other malicious piece of software.  The peer
 
-    SHOULD be protected against triplet querying attacks by malicious
 
-    software.  Care should be taken not to expose Kc keys to attackers
 
-    when they are stored or handled by the peer, or transmitted between
 
-    subsystems of the peer.  Steps should be taken to limit the
 
-    transport, storage, and handling of these values outside a protected
 
-    environment within the peer.  However, the virus protection of the
 
-    peer and the security capabilities of the peer's operating system are
 
-    outside the scope of this document.
 
- Haverinen & Salowey          Informational                     [Page 67]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    The EAP-SIM server typically obtains the triplets from the Home
 
-    Location Register (HLR).  An attacker might try to obtain triplets by
 
-    attacking against the network used between the EAP-SIM server and the
 
-    HLR.  Care should be taken not to expose Kc keys to attackers when
 
-    they are stored or handled by the EAP-SIM server, or transmitted
 
-    between the EAP server and the HLR.  Steps should be taken to limit
 
-    the transport, storage, and handling of these values outside a
 
-    protected environment.  However, the protection of the communications
 
-    between the EAP-SIM server and the HLR is outside the scope of this
 
-    document.
 
-    If the same SIM credentials are also used for GSM traffic, the
 
-    triplets could be revealed in the GSM network; see Section 12.8.
 
-    In GSM, the network is allowed to re-use the RAND challenge in
 
-    consecutive authentication exchanges.  This is not allowed in
 
-    EAP-SIM.  The EAP-SIM server is mandated to use fresh triplets (RAND
 
-    challenges) in consecutive authentication exchanges, as specified in
 
-    Section 3.  EAP-SIM does not mandate any means for the peer to check
 
-    if the RANDs are fresh, so the security of the scheme leans on the
 
-    secrecy of the triplets.  However, the peer MAY employ
 
-    implementation-specific mechanisms to remember some of the previously
 
-    used RANDs, and the peer MAY check the freshness of the server's
 
-    RANDs.  The operation in cases when the peer detects that the RANDs
 
-    are not fresh is specified in Section 6.3.1.
 
-    Preventing the re-use of authentication vectors has been taken into
 
-    account in the design of the UMTS Authentication and Key Agreement
 
-    (AKA), which is used in EAP-AKA [EAP-AKA].  In cases when the triplet
 
-    re-use properties of EAP-SIM are not considered sufficient, it is
 
-    advised to use EAP-AKA.
 
-    Note that EAP-SIM mutual authentication is done 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],
 
-    [EAP-Keying], [Service-Identity].
 
-    EAP-SIM does not provide the channel bindings property, so it only
 
-    authenticates the EAP server.  However, ongoing work such as
 
-    [Service-Identity] may provide such support as an extension to
 
-    popular EAP methods such as EAP-TLS, EAP-SIM, or EAP-AKA.
 
- Haverinen & Salowey          Informational                     [Page 68]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 12.4.  Flooding the Authentication Centre
 
-    The EAP-SIM server typically obtains authentication vectors from the
 
-    Authentication Centre (AuC).  EAP-SIM introduces a new usage for the
 
-    AuC.  The protocols between the EAP-SIM server and the AuC are out of
 
-    the scope of this document.  However, it should be noted that a
 
-    malicious EAP-SIM peer may generate a lot of protocol requests to
 
-    mount a denial of service attack.  The EAP-SIM 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-SIM to other users of the AuC.
 
- 12.5.  Key Derivation
 
-    EAP-SIM supports key derivation.  The key hierarchy is specified in
 
-    Section 7.  EAP-SIM combines several GSM triplets in order to
 
-    generate stronger keying material and stronger AT_MAC values.  The
 
-    actual strength of the resulting keys depends, among other things, on
 
-    operator-specific parameters including authentication algorithms, the
 
-    strength of the Ki key, and the quality of the RAND challenges.  For
 
-    example, some SIM cards generate Kc keys with 10 bits set to zero.
 
-    Such restrictions may prevent the concatenation technique from
 
-    yielding strong session keys.  Because the strength of the Ki key is
 
-    128 bits, the ultimate strength of any derived secret key material is
 
-    never more than 128 bits.
 
-    It should also be noted that a security policy that allows n=2 to be
 
-    used may compromise the security of a future policy that requires
 
-    three triplets, because adversaries may be able to exploit the
 
-    messages exchanged when the weaker policy is applied.
 
-    There is no known way to obtain complete GSM triplets by mounting an
 
-    attack against EAP-SIM.  A passive eavesdropper can learn n*RAND and
 
-    AT_MAC and may be able to link this information to the subscriber
 
-    identity.  An active attacker that impersonates a GSM subscriber can
 
-    easily obtain n*RAND and AT_MAC values from the EAP server for any
 
-    given subscriber identity.  However, calculating the Kc and SRES
 
-    values from AT_MAC would require the attacker to reverse the keyed
 
-    message authentication code function HMAC-SHA1-128.
 
-    As EAP-SIM does not expose any values calculated from an individual
 
-    GSM Kc keys, it is not possible to mount a brute force attack on only
 
-    one of the Kc keys in EAP-SIM.  Therefore, when considering brute
 
-    force attacks on the values exposed in EAP-SIM, the effective length
 
-    of EAP-SIM session keys is not compromised by the fact that they are
 
- Haverinen & Salowey          Informational                     [Page 69]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    combined from several shorter keys, i.e., the effective length of 128
 
-    bits may be achieved.  For additional considerations, see Section
 
-    12.8.
 
- 12.6.  Cryptographic Separation of Keys and Session Independence
 
-    The EAP Transient Keys used to protect EAP-SIM packets (K_encr,
 
-    K_aut), the Master Session Key, and the Extended Master Session Key
 
-    are cryptographically separate in EAP-SIM.  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
 
-    (Ki) from the GSM Kc keys, from EAP-SIM K_encr, from EAP-SIM K_aut,
 
-    from the Master Session Key, or from the Extended Master Session Key.
 
-    Each EAP-SIM exchange generates fresh keying material, and the keying
 
-    material exported from the method upon separate EAP-SIM exchanges is
 
-    cryptographically separate.  The EAP-SIM peer contributes to the
 
-    keying material with the NONCE_MT parameter, which must be chosen
 
-    freshly for each full authentication exchange.  The EAP server is
 
-    mandated to choose the RAND challenges freshly for each full
 
-    authentication exchange.  If either the server or the peer chooses
 
-    its random value (NONCE_MT or RAND challenges) freshly, even if the
 
-    other entity re-used its value from a previous exchange, then the EAP
 
-    Transient Keys, the Master Session Key, and the Extended Master
 
-    Session Key will be different and cryptographically separate from the
 
-    corresponding values derived upon the previous full authentication
 
-    exchange.
 
-    On fast re-authentication, freshness of the Master Session Key and
 
-    the Extended Master Session Key is provided with a counter
 
-    (AT_COUNTER).  The same EAP Transient Keys (K_encr, K_aut) that were
 
-    used in the full authentication exchange are used to protect the EAP
 
-    negotiation.  However, replay and integrity protection across all the
 
-    fast re-authentication exchanges that use the same EAP Transient Keys
 
-    is provided with AT_COUNTER.
 
-    [RFC3748] defines session independence as the "demonstration that
 
-    passive attacks (such as capture of the EAP conversation) or active
 
-    attacks (including compromise of the MSK or EMSK) do not enable
 
-    compromise of subsequent or prior MSKs or EMSKs".  Because the MSKs
 
-    and EMSKs are separate between EAP exchanges, EAP-SIM supports this
 
-    security claim.
 
-    It should be noted that [Patel-2003], which predates [RFC3748], uses
 
-    a slightly different meaning for session independence.  The EAP-SIM
 
-    protocol does not allow the peer to ensure that different Kc key
 
-    values would be used in different exchanges.  Only the server is able
 
-    to ensure that fresh RANDs, and therefore, fresh Kc keys are used.
 
- Haverinen & Salowey          Informational                     [Page 70]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    Hence, the peer cannot guarantee EAP-SIM sessions to be independent
 
-    with regard to the internal Kc values.  However, in EAP-SIM, the Kc
 
-    keys are considered to be secret intermediate results, which are not
 
-    exported outside the method.  See Section 12.3 for more information
 
-    about RAND re-use.
 
- 12.7.  Dictionary Attacks
 
-    Because EAP-SIM is not a password protocol, it is not vulnerable to
 
-    dictionary attacks.  (The pre-shared symmetric secret stored on the
 
-    SIM card is not a passphrase, nor is it derived from a passphrase.)
 
- 12.8.  Credentials Re-use
 
-    EAP-SIM cannot prevent attacks over the GSM or GPRS radio networks.
 
-    If the same SIM credentials are also used in GSM or GPRS, it is
 
-    possible to mount attacks over the cellular interface.
 
-    A passive attacker can eavesdrop GSM or GPRS traffic and obtain RAND,
 
-    SRES pairs.  He can then use a brute force attack or other
 
-    cryptanalysis techniques to obtain the 64-bit Kc keys used to encrypt
 
-    the GSM or GPRS data.  This makes it possible to attack each 64-bit
 
-    key separately.
 
-    An active attacker can mount a "rogue GSM/GPRS base station attack",
 
-    replaying previously seen RAND challenges to obtain SRES values.  He
 
-    can then use a brute force attack to obtain the Kc keys.  If
 
-    successful, the attacker can impersonate a valid network or decrypt
 
-    previously seen traffic, because EAP-SIM does not provide perfect
 
-    forward secrecy (PFS).
 
-    Due to several weaknesses in the GSM encryption algorithms, the
 
-    effective key strength of the Kc keys is much less than the expected
 
-    64 bits (no more than 40 bits if the A5/1 GSM encryption algorithm is
 
-    used; as documented in [Barkan-2003], an active attacker can force
 
-    the peer to use the weaker A5/2 algorithm that can be broken in less
 
-    than a second).
 
-    Because the A5 encryption algorithm is not used in EAP-SIM, and
 
-    because EAP-SIM does not expose any values calculated from individual
 
-    Kc keys, it should be noted that these attacks are not possible if
 
-    the SIM credentials used in EAP-SIM are not shared in GSM/GPRS.
 
-    At the time this document was written, the 3rd Generation Partnership
 
-    Project (3GPP) has started to work on fixes to these A5
 
-    vulnerabilities.  One of the solution proposals discussed in 3GPP is
 
-    integrity-protected A5 version negotiation, which would require the
 
-    base station to prove knowledge of the Kc key before the terminal
 
- Haverinen & Salowey          Informational                     [Page 71]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    sends any values calculated from the Kc to the network.  Another
 
-    proposal is so-called special RANDs, where some bits of the RAND
 
-    challenge would be used for cryptographic separation by indicating
 
-    the allowed use of the triplet, such as the allowed A5 algorithm in
 
-    GSM or the fact that the triplet is intended for EAP-SIM.  This is
 
-    currently a work in progress, and the mechanisms have not been
 
-    selected yet.
 
- 12.9.  Integrity and 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-SIM
 
-    requests and responses.  Integrity protection with AT_MAC includes
 
-    the EAP header.  These attributes cannot be used during the
 
-    EAP/SIM/Start roundtrip.  However, the protocol values (user identity
 
-    string, NONCE_MT, and version negotiation parameters) are
 
-    (implicitly) protected by later EAP-SIM messages by including them in
 
-    key derivation.
 
-    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.
 
-    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.2.
 
-    On full authentication, replay protection of the EAP exchange is
 
-    provided by the RAND values from the underlying GSM authentication
 
-    scheme and the use of the NONCE_MT value.  Protection against replays
 
-    of EAP-SIM messages is also based on the fact that messages that can
 
-    include AT_MAC can only be sent once with a certain EAP-SIM 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-SIM notifications if it
 
-    is used after successful authentication in order to provide replay
 
-    protection between re-authentication exchanges.
 
-    Because EAP-SIM 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 in
 
-    EAP-SIM.  On physically insecure networks, this may enable an
 
- Haverinen & Salowey          Informational                     [Page 72]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    attacker to send false notifications to the peer and 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 until the peer successfully authenticates the server or
 
-    after the peer fails to authenticate the server.
 
-    The security considerations of EAP-SIM result indications are covered
 
-    in Section 12.11
 
-    An eavesdropper will see the EAP-Request/Notification,
 
-    EAP-Response/Notification, EAP-Success, and EAP-Failure packets sent
 
-    in the clear.  With EAP-SIM, confidential information MUST NOT be
 
-    transmitted in EAP Notification packets.
 
- 12.10.  Negotiation Attacks
 
-    EAP-SIM does not protect the EAP-Response/Nak packet.  Because
 
-    EAP-SIM does not protect the EAP method negotiation, EAP method
 
-    downgrading attacks may be possible, especially if the user uses the
 
-    same identity with EAP-SIM and other EAP methods.
 
-    EAP-SIM includes a version negotiation procedure.  In EAP-SIM the
 
-    keying material derivation includes the version list and selected
 
-    version to ensure that the protocol cannot be downgraded and that the
 
-    peer and server use the same version of EAP-SIM.
 
-    EAP-SIM does not support ciphersuite negotiation.
 
- 12.11.  Protected Result Indications
 
-    EAP-SIM supports optional protected success indications and
 
-    acknowledged failure indications.  If a failure occurs after
 
-    successful authentication, then the EAP-SIM failure indication is
 
-    integrity- and replay-protected.
 
-    Even if an EAP-Failure packet is lost when using EAP-SIM over an
 
-    unreliable medium, then the EAP-SIM 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-SIM success
 
-    indication.  If the optional success indications are not used, then
 
-    the peer may end up believing that the server succeeded
 
-    authentication, when it actually failed.  Since access will not be
 
- Haverinen & Salowey          Informational                     [Page 73]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    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.12.  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-SIM 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-SIM is used
 
-    with a tunneling protocol, there should be cryptographic binding
 
-    provided between the protocol and EAP-SIM 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-SIM Master Session
 
-    Key MAY be used to provide the cryptographic binding.  However, the
 
-    mechanism by which the binding is provided depends on the tunneling
 
-    protocol and is beyond the scope of this document.
 
- 12.13.  Generating Random Numbers
 
-    An EAP-SIM 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-SIM is based on the GSM SIM mechanism, which is
 
-    a challenge/response authentication and key agreement mechanism based
 
-    on a symmetric 128-bit pre-shared secret.  EAP-SIM also makes use of
 
-    a peer challenge to provide mutual authentication.
 
-    Ciphersuite negotiation: No
 
-    Mutual authentication: Yes (Section 12.3)
 
-    Integrity protection: Yes (Section 12.9)
 
- Haverinen & Salowey          Informational                     [Page 74]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    Replay protection: Yes (Section 12.9)
 
-    Confidentiality: Yes, except method-specific success and failure
 
-    indications (Section 12.2, Section 12.9)
 
-    Key derivation: Yes
 
-    Key strength: EAP-SIM supports key derivation with 128-bit effective
 
-    key strength (Section 12.5).  However, as discussed in Section 11, if
 
-    the same credentials are used in GSM/GPRS and in EAP-SIM, then the
 
-    key strength may be reduced considerably, basically to the same level
 
-    as in GSM, by mounting attacks over GSM/GPRS.  For example an active
 
-    attack using a false GSM/GPRS base station reduces the effective key
 
-    strength to almost zero.
 
-    Description of key hierarchy: Please see Section 7.
 
-    Dictionary attack protection: N/A (Section 12.7)
 
-    Fast reconnect: Yes
 
-    Cryptographic binding: N/A
 
-    Session independence: Yes (Section 12.6)
 
-    Fragmentation: No
 
-    Channel binding: No
 
-    Indication of vulnerabilities: Vulnerabilities are discussed in
 
-    Section 12.
 
- 14.  Acknowledgements and Contributions
 
- 14.1.  Contributors
 
-    In addition to the editors, Nora Dabbous, Jose Puthenkulam, and
 
-    Prasanna Satarasinghe were significant contributors to this document.
 
-    Pasi Eronen and Jukka-Pekka Honkanen contributed Appendix A.
 
- 14.2.  Acknowledgements
 
-    Juha Ala-Laurila, N. Asokan, Jan-Erik Ekberg, Patrik Flykt,
 
-    Jukka-Pekka Honkanen, Antti Kuikka, Jukka Latva, Lassi Lehtinen, Jyri
 
-    Rinnemaa, Timo Takamaki, and Raimo Vuonnala contributed many original
 
-    ideas and concepts to this protocol.
 
- Haverinen & Salowey          Informational                     [Page 75]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    N. Asokan, Pasi Eronen, and Jukka-Pekka Honkanen contributed and
 
-    helped in innumerable ways during the development of the protocol.
 
-    Valtteri Niemi and Kaisa Nyberg contributed substantially to the
 
-    design of the key derivation and the fast re-authentication
 
-    procedure, and have also provided their cryptographic expertise in
 
-    many discussions related to this protocol.
 
-    Simon Blake-Wilson provided very helpful comments on key derivation
 
-    and version negotiation.
 
-    Thanks to Greg Rose for his very valuable comments to an early
 
-    version of this specification [S3-020125], and for reviewing and
 
-    providing very useful comments on version 12.
 
-    Thanks to Bernard Aboba, Vladimir Alperovich, Florent Bersani,
 
-    Jacques Caron, Gopal Dommety, Augustin Farrugia, Mark Grayson, Max de
 
-    Groot, Prakash Iyer, Nishi Kant, Victor Lortz, Jouni Malinen, Sarvar
 
-    Patel, Tom Porcher, Michael Richardson, Stefan Schroeder, Uma
 
-    Shankar, Jesse Walker, and Thomas Wieland for their contributions and
 
-    critiques.  Special thanks to Max for proposing improvements to the
 
-    MAC calculation.
 
-    Thanks to Glen Zorn for reviewing this document and for providing
 
-    very useful comments on the protocol.
 
-    Thanks to Sarvar Patel for his review of the protocol [Patel-2003].
 
-    Thanks to Bernard Aboba for reviewing this document for RFC 3748
 
-    compliance.
 
-    The identity privacy support is based on the identity privacy support
 
-    of [EAP-SRP].  The attribute format is based on the extension format
 
-    of Mobile IPv4 [RFC3344].
 
-    This protocol has been partly developed in parallel with EAP-AKA
 
-    [EAP-AKA], and hence this specification incorporates many ideas from
 
-    Jari Arkko.
 
- Haverinen & Salowey          Informational                     [Page 76]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 14.2.1.  Contributors' Addresses
 
-    Nora Dabbous
 
-    Gemplus
 
-    34 rue Guynemer
 
-    92447 Issy les Moulineaux
 
-    France
 
-    Phone: +33 1 4648 2000
 
-    EMail: nora.dabbous@gemplus.com
 
-    Jose Puthenkulam
 
-    Intel Corporation
 
-    2111 NE 25th Avenue, JF2-58
 
-    Hillsboro, OR 97124
 
-    USA
 
-    Phone: +1 503 264 6121
 
-    EMail: jose.p.puthenkulam@intel.com
 
-    Prasanna Satarasinghe
 
-    Transat Technologies
 
-    180 State Street, Suite 240
 
-    Southlake, TX 76092
 
-    USA
 
-    Phone: + 1 817 4814412
 
-    EMail: prasannas@transat-tech.com
 
- Haverinen & Salowey          Informational                     [Page 77]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- 15.  References
 
- 15.1.  Normative References
 
-    [GSM-03.20]        European Telecommunications Standards  Institute,
 
-                       "GSM Technical Specification GSM 03.20 (ETS 300
 
-                       534):  "Digital cellular telecommunication system
 
-                       (Phase 2); Security related network functions"",
 
-                       August 1997.
 
-    [RFC2119]          Bradner, S., "Key words for use in RFCs to
 
-                       Indicate Requirement Levels", BCP 14, RFC 2119,
 
-                       March 1997.
 
-    [GSM-03.03]        European Telecommunications Standards Institute,
 
-                       "GSM Technical Specification GSM 03.03 (ETS 300
 
-                       523): "Digital cellular telecommunication system
 
-                       (Phase 2); Numbering, addressing and
 
-                       identification"", April 1997.
 
-    [RFC2104]          Krawczyk, H., Bellare, M., and R. Canetti, "HMAC:
 
-                       Keyed-Hashing for Message Authentication", RFC
 
-                       2104, February 1997.
 
-    [RFC4282]          Aboba, B., Beadles, M., Arkko, J., and P. Eronen,
 
-                       "The Network Access Identifier", RFC 4282,
 
-                       December 2005.
 
-    [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.
 
- Haverinen & Salowey          Informational                     [Page 78]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    [PRF]              National Institute of Standards and Technology,
 
-                       "Federal Information Processing Standards (FIPS)
 
-                       Publication  186-2 (with change notice); Digital
 
-                       Signature Standard (DSS)", January 2000.
 
-                       Available on-line at:
 
-                       http://csrc.nist.gov/publications/
 
-                       fips/fips186-2/fips186-2-change1.pdf
 
-    [RFC3629]          Yergeau, F., "UTF-8, a transformation format of
 
-                       ISO 10646", STD 63, RFC 3629, November 2003.
 
-    [RFC3748]          Aboba, B., Blunk, L., Vollbrecht, J., Carlson, J.,
 
-                       and H. Levkowetz, "Extensible Authentication
 
-                       Protocol (EAP)", RFC 3748, June 2004.
 
-    [EAP-AKA]          Arkko, J. and H. Haverinen, "Extensible
 
-                       Authentication Protocol Method for 3rd Generation
 
-                       Authentication and Key Agreement (EAP-AKA)", RFC
 
-                       4187, January 2006.
 
- 15.2.  Informative References
 
-    [3GPP-TS-23.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.
 
-    [3GPP-TS-55.205]   3rd Generation Partnership Project, "3GPP
 
-                       Technical Specification 3GPP TS 55.205 V 6.0.0:
 
-                       "3rd Generation Partnership Project; Technical
 
-                       Specification Group Services and System Aspects;
 
-                       Specification of the GSM-MILENAGE Algorithms: An
 
-                       example algorithm set for the GSM Authentication
 
-                       and Key Generation functions A3 and A8 (Release
 
-                       6)"", December 2002.
 
-    [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.
 
- Haverinen & Salowey          Informational                     [Page 79]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    [EAP-Keying]       Aboba, B., Simon, D., Arkko, J., Eronen, P., and
 
-                       H.  Levkowetz, "Extensible Authentication Protocol
 
-                       (EAP) Key Management Framework", Work in Progress,
 
-                       October 2005.
 
-    [Service-Identity] Arkko, J. and P. Eronen, "Authenticated Service
 
-                       Information for the Extensible Authentication
 
-                       Protocol (EAP)", Work in Progress, October 2004.
 
-    [RFC4086]          Eastlake, D., 3rd, Schiller, J., and S. Crocker,
 
-                       "Randomness Requirements for Security", BCP 106,
 
-                       RFC 4086, June 2005.
 
-    [S3-020125]        Qualcomm, "Comments on draft EAP/SIM, 3rd
 
-                       Generation Partnership Project document 3GPP TSG
 
-                       SA WG3 Security S3#22, S3-020125", February 2002.
 
-    [RFC3344]          Perkins, C., "IP Mobility Support for IPv4", RFC
 
-                       3344, August 2002.
 
-    [RFC2548]          Zorn, G., "Microsoft Vendor-specific RADIUS
 
-                       Attributes ", RFC 2548, March 1999.
 
-    [EAP-SRP]          Carlson, J., Aboba, B., and H. Haverinen, "EAP
 
-                       SRP-SHA1 Authentication Protocol", Work in
 
-                       Progress, July 2001.
 
-    [GSM-Cloning]      Wagner, D., "GSM Cloning".  Web page about
 
-                       COMP-128 version 1 vulnerabilities, available at
 
-                       http://www.isaac.cs.berkeley.edu/isaac/gsm.html
 
-    [Barkan-2003]      Barkan, E., Biham, E., and N. Keller, "Instant
 
-                       Ciphertext-Only Cryptanalysis of GSM Encrypted
 
-                       Communications".  available on-line at
 
-                       http://cryptome.org/gsm-crack-bbk.pdf
 
-    [Patel-2003]       Patel, S., "Analysis of EAP-SIM Session Key
 
-                       Agreement".  Posted to the EAP mailing list 29
 
-                       May,2003. http://
 
-                       mail.frascone.com/pipermail/public/eap/2003-May/
 
-                       001267.html
 
- Haverinen & Salowey          Informational                     [Page 80]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- Appendix A.  Test Vectors
 
-    Test vectors for the NIST FIPS 186-2 pseudo-random number generator
 
-    [PRF] are available at the following URL:
 
-    http://csrc.nist.gov/encryption/dss/Examples-1024bit.pdf
 
-    The following examples show the contents of EAP-SIM packets on full
 
-    authentication and fast re-authentication.
 
- A.1.  EAP-Request/Identity
 
-    The first packet is a plain Identity Request:
 
-       01                   ; Code: Request
 
-       00                   ; Identifier: 0
 
-       00 05                ; Length: 5 octets
 
-       01                   ; Type: Identity
 
- A.2.  EAP-Response/Identity
 
-    The client's identity is "1244070100000001@eapsim.foo", so it
 
-    responds with the following packet:
 
-       02                   ; Code: Response
 
-       00                   ; Identifier: 0
 
-       00 20                ; Length: 32 octets
 
-       01                   ; Type: Identity
 
-          31 32 34 34       ; "1244070100000001@eapsim.foo"
 
-          30 37 30 31
 
-          30 30 30 30
 
-          30 30 30 31
 
-          40 65 61 70
 
-          73 69 6d 2e
 
-          66 6f 6f
 
- Haverinen & Salowey          Informational                     [Page 81]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- A.3.  EAP-Request/SIM/Start
 
-    The server's first packet looks like this:
 
-       01                   ; Code: Request
 
-       01                   ; Identifier: 1
 
-       00 10                ; Length: 16 octets
 
-       12                   ; Type: EAP-SIM
 
-          0a                ; EAP-SIM subtype: Start
 
-          00 00             ; (reserved)
 
-          0f                ; Attribute type: AT_VERSION_LIST
 
-             02             ; Attribute length: 8 octets (2*4)
 
-             00 02          ; Actual version list length: 2 octets
 
-             00 01          ; Version: 1
 
-             00 00          ; (attribute padding)
 
- A.4.  EAP-Response/SIM/Start
 
-    The client selects a nonce and responds with the following packet:
 
-       02                   ; Code: Response
 
-       01                   ; Identifier: 1
 
-       00 20                ; Length: 32 octets
 
-       12                   ; Type: EAP-SIM
 
-          0a                ; EAP-SIM subtype: Start
 
-          00 00             ; (reserved)
 
-          07                ; Attribute type: AT_NONCE_MT
 
-             05             ; Attribute length: 20 octets (5*4)
 
-             00 00          ; (reserved)
 
-             01 23 45 67    ; NONCE_MT value
 
-             89 ab cd ef
 
-             fe dc ba 98
 
-             76 54 32 10
 
-          10                ; Attribute type: AT_SELECTED_VERSION
 
-             01             ; Attribute length: 4 octets (1*4)
 
-             00 01          ; Version: 1
 
- Haverinen & Salowey          Informational                     [Page 82]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- A.5.  EAP-Request/SIM/Challenge
 
-    Next, the server selects three authentication triplets
 
-          (RAND1,SRES1,Kc1) = (10111213 14151617 18191a1b 1c1d1e1f,
 
-                               d1d2d3d4,
 
-                               a0a1a2a3 a4a5a6a7)
 
-          (RAND2,SRES2,Kc2) = (20212223 24252627 28292a2b 2c2d2e2f,
 
-                               e1e2e3e4,
 
-                               b0b1b2b3 b4b5b6b7)
 
-          (RAND3,SRES3,Kc3) = (30313233 34353637 38393a3b 3c3d3e3f,
 
-                               f1f2f3f4,
 
-                               c0c1c2c3 c4c5c6c7)
 
-    Next, the MK is calculated as specified in Section 7*.
 
-    MK = e576d5ca 332e9930 018bf1ba ee2763c7 95b3c712
 
-    And the other keys are derived using the PRNG:
 
-          K_encr = 536e5ebc 4465582a a6a8ec99 86ebb620
 
-          K_aut =  25af1942 efcbf4bc 72b39434 21f2a974
 
-          MSK =    39d45aea f4e30601 983e972b 6cfd46d1
 
-                   c3637733 65690d09 cd44976b 525f47d3
 
-                   a60a985e 955c53b0 90b2e4b7 3719196a
 
-                   40254296 8fd14a88 8f46b9a7 886e4488
 
-          EMSK =   5949eab0 fff69d52 315c6c63 4fd14a7f
 
-                   0d52023d 56f79698 fa6596ab eed4f93f
 
-                   bb48eb53 4d985414 ceed0d9a 8ed33c38
 
-                   7c9dfdab 92ffbdf2 40fcecf6 5a2c93b9
 
-    Next, the server selects a pseudonym and a fast re-authentication
 
-    identity (in this case, "w8w49PexCazWJ&xCIARmxuMKht5S1sxR
 
-    DqXSEFBEg3DcZP9cIxTe5J4OyIwNGVzxeJOU1G" and
 
-    "Y24fNSrz8BP274jOJaF17WfxI8YO7QX0
 
-    0pMXk9XMMVOw7broaNhTczuFq53aEpOkk3L0dm@eapsim.foo", respectively).
 
- Haverinen & Salowey          Informational                     [Page 83]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    The following plaintext will be encrypted and stored in the
 
-    AT_ENCR_DATA attribute:
 
-          84               ; Attribute type: AT_NEXT_PSEUDONYM
 
-             13            ; Attribute length: 76 octets (19*4)
 
-             00 46         ; Actual pseudonym length: 70 octets
 
-             77 38 77 34 39 50 65 78 43 61 7a 57 4a 26 78 43
 
-             49 41 52 6d 78 75 4d 4b 68 74 35 53 31 73 78 52
 
-             44 71 58 53 45 46 42 45 67 33 44 63 5a 50 39 63
 
-             49 78 54 65 35 4a 34 4f 79 49 77 4e 47 56 7a 78
 
-             65 4a 4f 55 31 47
 
-             00 00          ; (attribute padding)
 
-          85                ; Attribute type: AT_NEXT_REAUTH_ID
 
-             16             ; Attribute length: 88 octets (22*4)
 
-             00 51          ; Actual re-auth identity length: 81 octets
 
-             59 32 34 66 4e 53 72 7a 38 42 50 32 37 34 6a 4f
 
-             4a 61 46 31 37 57 66 78 49 38 59 4f 37 51 58 30
 
-             30 70 4d 58 6b 39 58 4d 4d 56 4f 77 37 62 72 6f
 
-             61 4e 68 54 63 7a 75 46 71 35 33 61 45 70 4f 6b
 
-             6b 33 4c 30 64 6d 40 65 61 70 73 69 6d 2e 66 6f
 
-             6f
 
-             00 00 00       ; (attribute padding)
 
-          06                ; Attribute type: AT_PADDING
 
-             03             ; Attribute length: 12 octets (3*4)
 
-             00 00 00 00
 
-             00 00 00 00
 
-             00 00
 
-    The EAP packet looks like this:
 
-       01                   ; Code: Request
 
-       02                   ; Identifier: 2
 
-       01 18                ; Length: 280 octets
 
-       12                   ; Type: EAP-SIM
 
-          0b                ; EAP-SIM subtype: Challenge
 
-          00 00             ; (reserved)
 
-          01                ; Attribute type: AT_RAND
 
-             0d             ; Attribute length: 52 octets (13*4)
 
-             00 00          ; (reserved)
 
-             10 11 12 13    ; first RAND
 
-             14 15 16 17
 
-             18 19 1a 1b
 
-             1c 1d 1e 1f
 
-             20 21 22 23    ; second RAND
 
-             24 25 26 27
 
-             28 29 2a 2b
 
-             2c 2d 2e 2f
 
- Haverinen & Salowey          Informational                     [Page 84]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-             30 31 32 33    ; third RAND
 
-             34 35 36 37
 
-             38 39 3a 3b
 
-             3c 3d 3e 3f
 
-          81                ; Attribute type: AT_IV
 
-             05             ; Attribute length: 20 octets (5*4)
 
-             00 00          ; (reserved)
 
-             9e 18 b0 c2    ; IV value
 
-             9a 65 22 63
 
-             c0 6e fb 54
 
-             dd 00 a8 95
 
-          82               ; Attribute type: AT_ENCR_DATA
 
-             2d            ; Attribute length: 180 octets (45*4)
 
-             00 00         ; (reserved)
 
-             55 f2 93 9b bd b1 b1 9e a1 b4 7f c0 b3 e0 be 4c
 
-             ab 2c f7 37 2d 98 e3 02 3c 6b b9 24 15 72 3d 58
 
-             ba d6 6c e0 84 e1 01 b6 0f 53 58 35 4b d4 21 82
 
-             78 ae a7 bf 2c ba ce 33 10 6a ed dc 62 5b 0c 1d
 
-             5a a6 7a 41 73 9a e5 b5 79 50 97 3f c7 ff 83 01
 
-             07 3c 6f 95 31 50 fc 30 3e a1 52 d1 e1 0a 2d 1f
 
-             4f 52 26 da a1 ee 90 05 47 22 52 bd b3 b7 1d 6f
 
-             0c 3a 34 90 31 6c 46 92 98 71 bd 45 cd fd bc a6
 
-             11 2f 07 f8 be 71 79 90 d2 5f 6d d7 f2 b7 b3 20
 
-             bf 4d 5a 99 2e 88 03 31 d7 29 94 5a ec 75 ae 5d
 
-             43 c8 ed a5 fe 62 33 fc ac 49 4e e6 7a 0d 50 4d
 
-          0b                ; Attribute type: AT_MAC
 
-             05             ; Attribute length: 20 octets (5*4)
 
-             00 00          ; (reserved)
 
-             fe f3 24 ac    ; MAC value
 
-             39 62 b5 9f
 
-             3b d7 82 53
 
-             ae 4d cb 6a
 
-    The MAC is calculated over the EAP packet above (with MAC value set
 
-    to zero), followed by the NONCE_MT value (a total of 296 bytes).
 
- Haverinen & Salowey          Informational                     [Page 85]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- A.6.  EAP-Response/SIM/Challenge
 
-    The client's response looks like this:
 
-       02                   ; Code: Response
 
-       02                   ; Identifier: 2
 
-       00 1c                ; Length: 28 octets
 
-       12                   ; Type: EAP-SIM
 
-          0b                ; EAP-SIM subtype: Challenge
 
-          00 00             ; (reserved)
 
-          0b                ; Attribute type: AT_MAC
 
-             05             ; Attribute length: 20 octets (5*4)
 
-             00 00          ; (reserved)
 
-             f5 6d 64 33    ; MAC value
 
-             e6 8e d2 97
 
-             6a c1 19 37
 
-             fc 3d 11 54
 
-    The MAC is calculated over the EAP packet above (with MAC value set
 
-    to zero), followed by the SRES values (a total of 40 bytes).
 
- A.7.  EAP-Success
 
-    The last packet is an EAP-Success:
 
-       03                   ; Code: Success
 
-       02                   ; Identifier: 2
 
-       00 04                ; Length: 4 octets
 
- A.8.  Fast Re-authentication
 
-    When performing fast re-authentication, the EAP-Request/Identity
 
-    packet is the same as usual.  The EAP-Response/Identity contains the
 
-    fast re-authentication identity (from AT_ENCR_DATA attribute above):
 
-       02                   ; Code: Response
 
-       00                   ; Identifier: 0
 
-       00 56                ; Length: 86 octets
 
-       01                   ; Type: Identity
 
-          59 32 34 66 4e 53 72 7a 38 42 50 32 37 34 6a 4f
 
-          4a 61 46 31 37 57 66 78 49 38 59 4f 37 51 58 30
 
-          30 70 4d 58 6b 39 58 4d 4d 56 4f 77 37 62 72 6f
 
-          61 4e 68 54 63 7a 75 46 71 35 33 61 45 70 4f 6b
 
-          6b 33 4c 30 64 6d 40 65 61 70 73 69 6d 2e 66 6f
 
-          6f
 
- Haverinen & Salowey          Informational                     [Page 86]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- A.9.  EAP-Request/SIM/Re-authentication
 
-    The server recognizes the reauthentication identity, so it will
 
-    respond with EAP-Request/SIM/Re-authentication.  It retrieves the
 
-    associated counter value, generates a nonce, and picks a new
 
-    reauthentication identity (in this case,
 
-    "uta0M0iyIsMwWp5TTdSdnOLvg2XDVf21OYt1vnfiMcs5dnIDHOIFVavIRzMR
 
-    yzW6vFzdHW@eapsim.foo").
 
-    The following plaintext will be encrypted and stored in the
 
-    AT_ENCR_DATA attribute.  Note that AT_PADDING is not used because the
 
-    length of the plaintext is a multiple of 16 bytes.
 
-          13                ; Attribute type: AT_COUNTER
 
-             01             ; Attribute length: 4 octets (1*4)
 
-             00 01          ; Counter value
 
-          15                ; Attribute type: AT_NONCE_S
 
-             05             ; Attribute length: 20 octets (5*4)
 
-             00 00          ; (reserved)
 
-             01 23 45 67    ; NONCE_S value
 
-             89 ab cd ef
 
-             fe dc ba 98
 
-             76 54 32 10
 
-          85                ; Attribute type: AT_NEXT_REAUTH_ID
 
-             16             ; Attribute length: 88 octets (22*4)
 
-             00 51          ; Actual re-auth identity length: 81 octets
 
-             75 74 61 30 4d 30 69 79 49 73 4d 77 57 70 35 54
 
-             54 64 53 64 6e 4f 4c 76 67 32 58 44 56 66 32 31
 
-             4f 59 74 31 76 6e 66 69 4d 63 73 35 64 6e 49 44
 
-             48 4f 49 46 56 61 76 49 52 7a 4d 52 79 7a 57 36
 
-             76 46 7a 64 48 57 40 65 61 70 73 69 6d 2e 66 6f
 
-             6f
 
-             00 00 00       ; (attribute padding)
 
- Haverinen & Salowey          Informational                     [Page 87]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    The EAP packet looks like this:
 
-       01                   ; Code: Request
 
-       01                   ; Identifier: 1
 
-       00 a4                ; Length: 164 octets
 
-       12                   ; Type: EAP-SIM
 
-          0d                ; EAP-SIM subtype: Re-authentication
 
-          00 00             ; (reserved)
 
-          81                ; Attribute type: AT_IV
 
-             05             ; Attribute length: 20 octets (5*4)
 
-             00 00          ; (reserved)
 
-             d5 85 ac 77    ; IV value
 
-             86 b9 03 36
 
-             65 7c 77 b4
 
-             65 75 b9 c4
 
-          82                ; Attribute type: AT_ENCR_DATA
 
-             1d             ; Attribute length: 116 octets (29*4)
 
-             00 00          ; (reserved)
 
-             68 62 91 a9 d2 ab c5 8c aa 32 94 b6 e8 5b 44 84
 
-             6c 44 e5 dc b2 de 8b 9e 80 d6 9d 49 85 8a 5d b8
 
-             4c dc 1c 9b c9 5c 01 b9 6b 6e ca 31 34 74 ae a6
 
-             d3 14 16 e1 9d aa 9d f7 0f 05 00 88 41 ca 80 14
 
-             96 4d 3b 30 a4 9b cf 43 e4 d3 f1 8e 86 29 5a 4a
 
-             2b 38 d9 6c 97 05 c2 bb b0 5c 4a ac e9 7d 5e af
 
-             f5 64 04 6c 8b d3 0b c3 9b e5 e1 7a ce 2b 10 a6
 
-          0b                ; Attribute type: AT_MAC
 
-             05             ; Attribute length: 20 octets (5*4)
 
-             00 00          ; (reserved)
 
-             48 3a 17 99    ; MAC value
 
-             b8 3d 7c d3
 
-             d0 a1 e4 01
 
-             d9 ee 47 70
 
-    The MAC is calculated over the EAP packet above (with MAC value set
 
-    to zero; a total of 164 bytes).
 
-    Finally, the server derives new keys.  The XKEY' is calculated as
 
-    described in Section 7*:
 
-    XKEY' = 863dc120 32e08343 c1a2308d b48377f6 801f58d4
 
- Haverinen & Salowey          Informational                     [Page 88]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-    The new MSK and EMSK are derived using the PRNG (note that K_encr and
 
-    K_aut stay the same).
 
-          MSK   =  6263f614 973895e1 335f7e30 cff028ee
 
-                   2176f519 002c9abe 732fe0ef 00cf167c
 
-                   756d9e4c ed6d5ed6 40eb3fe3 8565ca07
 
-                   6e7fb8a8 17cfe8d9 adbce441 d47c4f5e
 
-          EMSK  =  3d8ff786 3a630b2b 06e2cf20 9684c13f
 
-                   6b82f992 f2b06f1b 54bf51ef 237f2a40
 
-                   1ef5e0d7 e098a34c 533eaebf 34578854
 
-                   b7721526 20a777f0 e0340884 a294fb73
 
- A.10.  EAP-Response/SIM/Re-authentication
 
-    The client's response includes the counter as well.  The following
 
-    plaintext will be encrypted and stored in the AT_ENCR_DATA attribute:
 
-          13                ; Attribute type: AT_COUNTER
 
-             01             ; Attribute length: 4 octets (1*4)
 
-             00 01          ; Counter value
 
-          06                ; Attribute type: AT_PADDING
 
-             03             ; Attribute length: 12 octets (3*4)
 
-             00 00 00 00
 
-             00 00 00 00
 
-             00 00
 
-    The EAP packet looks like this:
 
-       02                   ; Code: Response
 
-       01                   ; Identifier: 1
 
-       00 44                ; Length: 68 octets
 
-       12                   ; Type: EAP-SIM
 
-          0d                ; EAP-SIM subtype: Re-authentication
 
-          00 00             ; (reserved)
 
-          81                ; Attribute type: AT_IV
 
-             05             ; Attribute length: 20 octets (5*4)
 
-             00 00          ; (reserved)
 
-             cd f7 ff a6    ; IV value
 
-             5d e0 4c 02
 
-             6b 56 c8 6b
 
-             76 b1 02 ea
 
-          82                ; Attribute type: AT_ENCR_DATA
 
-             05             ; Attribute length: 20 octets (5*4)
 
-             00 00          ; (reserved)
 
-             b6 ed d3 82
 
-             79 e2 a1 42
 
-             3c 1a fc 5c
 
-             45 5c 7d 56
 
- Haverinen & Salowey          Informational                     [Page 89]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
-          0b                ; Attribute type: AT_MAC
 
-             05             ; Attribute length: 20 octets (5*4)
 
-             00 00          ; (reserved)
 
-             fa f7 6b 71    ; MAC value
 
-             fb e2 d2 55
 
-             b9 6a 35 66
 
-             c9 15 c6 17
 
-    The MAC is calculated over the EAP packet above (with MAC value set
 
-    to zero), followed by the NONCE_S value (a total of 84 bytes).
 
-    The next packet will be EAP-Success:
 
-       03                   ; Code: Success
 
-       01                   ; Identifier: 1
 
-       00 04                ; Length: 4 octets
 
- Appendix B.  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
 
- Haverinen & Salowey          Informational                     [Page 90]
 
- RFC 4186                 EAP-SIM Authentication             January 2006
 
- Authors' Addresses
 
-    Henry Haverinen (editor)
 
-    Nokia Enterprise Solutions
 
-    P.O. Box 12
 
-    FIN-40101 Jyvaskyla
 
-    Finland
 
-    EMail: henry.haverinen@nokia.com
 
-    Joseph Salowey (editor)
 
-    Cisco Systems
 
-    2901 Third Avenue
 
-    Seattle, WA  98121
 
-    USA
 
-    Phone: +1 206 256 3380
 
-    EMail: jsalowey@cisco.com
 
- Haverinen & Salowey          Informational                     [Page 91]
 
- RFC 4186                 EAP-SIM 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).
 
- Haverinen & Salowey          Informational                     [Page 92]
 
 
  |