LTE-Security加密保護(hù)算法_第1頁(yè)
LTE-Security加密保護(hù)算法_第2頁(yè)
LTE-Security加密保護(hù)算法_第3頁(yè)
LTE-Security加密保護(hù)算法_第4頁(yè)
LTE-Security加密保護(hù)算法_第5頁(yè)
已閱讀5頁(yè),還剩71頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

.z.LTE安全功能目錄TOC\o"1-3"\h\z1概述錯(cuò)誤!未找到引用源。)consumingF(LFSR運(yùn)行初始化模式,32比特F作為輸入,也是輸出)生成密鑰流ss11s5s2s1s0s15-1?R1R3R2?ztS2S1FSM圖.4-2生成密鑰流流程如圖所示生成密鑰流流程:首先,F(xiàn)SMclock一次,丟棄FSM輸出字;然后LFSR在密鑰流模式clock一次。在生成32-bit字的密鑰流時(shí),執(zhí)行5次以下步驟,生成5個(gè)32比特的密鑰流:步驟1:FSMclock,產(chǎn)生一個(gè)32-bit輸出字F;步驟2:計(jì)算下一個(gè)密鑰流字:zt=Fs0;步驟3:LFSR在密鑰流模式下clock。計(jì)算得到鑒權(quán)碼MAC根據(jù)Eval_M函數(shù)計(jì)算:EVAL=0;For(i=0;i<=D-2;i++){ EVAL=MUL(EVALMi,P,0*0001b);}EVAL=EVALMD-1;EVAL=Mul(EVAL,Q,0*0001b);For(i=0;i<=31;i++){MAC-I[i]=eiOTP[i];}根據(jù)得到的鑒權(quán)碼MAC-I,判斷消息的完整性。128-EIA2EIA2算法原理128-EIA2基于CMAC模式的128-bitAES算法。MESSAGE的比特長(zhǎng)度稱為BLENGTH。CMAC模式的輸入是Mlen長(zhǎng)度的字符串M。M由以下幾部分組成:M0..M31=COUNT[0]..COUNT[31]M32..M36=BEARER[0]..BEARER[4]M37=DIRECTIONM38..M63=026(i.e.26zerobits)M64..MBLENGTH+63=MESSAGE[0]..MESSAGE[BLENGTH-1]于是,Mlen=BLENGTH+64.CMAC模式的AES算法使用上述輸入產(chǎn)生消息鑒權(quán)碼T(MACT),長(zhǎng)度Tlen=32。T用作128-EIA2算法的輸出MACT[0]..MACT[31],MACT[0]是T的MSB。輸入和輸出voidAES_CMAC(constunsignedchar*key,unsignedintcount,unsignedcharbearer,unsignedchardir,constunsignedchar*input,unsignedshortlength,unsignedchar*mac)輸入?yún)?shù)和輸出參數(shù)見(jiàn)下表。表.2-1輸入?yún)?shù)參數(shù)大小(bits)注釋KEY128密鑰MESSAGELENGTH由需要鑒權(quán)的消息、COUNT值、BEARER值和DIRECTION構(gòu)造出的數(shù)據(jù)LENGTHvariable>=0消息長(zhǎng)度(按8位字節(jié)計(jì)算)表.2-2輸出參數(shù)參數(shù)大?。╞its)注釋MAC128消息鑒權(quán)碼EIA2算法流程圖圖.3-1EIA2完整性保護(hù)算法流程如圖.3-1所示,完整性保護(hù)算法EIA2的流程有以下步驟:從RRC層獲得輸入?yún)?shù)KEY、MESSAGE和LENGTH;根據(jù)輸入?yún)?shù)KEY計(jì)算得到子密鑰:K1,K2;利用子密鑰對(duì)MESSAGE加密,生成鑒權(quán)碼MAC;驗(yàn)證鑒權(quán)碼。注釋:以上兩種算法中的密鑰KEY即KRRCint,該密鑰從密鑰KeNB中獲得;而KeNB又是基于上層提供的密鑰KASME。KASME存儲(chǔ)在UE和MME中,并在下一個(gè)鑒權(quán)過(guò)程中更新。EIA2算法解析產(chǎn)生子密鑰產(chǎn)生子密鑰的算法為Generate_Subkey(),其輸入為密鑰K,輸出為兩個(gè)子密鑰K1,K2,如圖4.3所示。K1,K2同時(shí)應(yīng)用于鑒權(quán)碼MAC的生成和驗(yàn)證算法中。K1用于最后一個(gè)block長(zhǎng)度等于整塊長(zhǎng)度的情況;K2適用于最后一個(gè)block長(zhǎng)度小于整塊長(zhǎng)度的情況。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++AlgorithmGenerate_Subkey+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Input:K(128-bitkey)++Output:K1(128-bitfirstsubkey)++K2(128-bitsecondsubkey)++++++Constants:const_Zerois0*0000++const_Rbis0*0087++Variables:LforoutputofAES-128appliedto0^128++++Step1.L:=AES-128(K,const_Zero);++Step2.ifMSB(L)isequalto0++thenK1:=L<<1;++elseK1:=(L<<1)*ORconst_Rb;++Step3.ifMSB(K1)isequalto0++thenK2:=K1<<1;++elseK2:=(K1<<1)*ORconst_Rb;++Step4.returnK1,K2;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++圖.4-1Generate_Subkey算法AES-128算法的輸入K和一個(gè)全零的值;按如下操作分離出K1:如果L最重要位的值為0,K1就是L從左數(shù)的第一位的值;否則,K1由const_Rb的擴(kuò)展OR和L從左數(shù)的第一位的值共同得到;按如下操作分離出K2:如果K1最重要位的值為0,K2就是L從左數(shù)的第一位的值;否則,K2由const_Rb的擴(kuò)展OR和K1從左數(shù)的第一位的值共同得到;返回K1,K2值。生成鑒權(quán)碼MAC生成鑒權(quán)碼MAC的算法為AES-CMAC(),其輸入為密鑰K,消息M和消息長(zhǎng)度len;其中M是長(zhǎng)度為len的比特流,其構(gòu)造如下:M0..M31=COUNT[0]..COUNT[31]M32..M36=BEARER[0]..BEARER[4]M37=DIRECTIONM38..M63=026(i.e.26zerobits)M64..MBLENGTH+63=MESSAGE[0]..MESSAGE[BLENGTH-1]因此,len=BLENGTH+64.MESSAGE為需要進(jìn)行完整性保護(hù)的原始消息,其長(zhǎng)度為BLENGTH。EIA2算法中,M表示成M_i序列,M_i為一個(gè)消息塊。M=M_1||M_2||...||M_{n-1}||M_n,i=1,...,n-1。M_i的長(zhǎng)度為128bits。該算法的輸出為鑒權(quán)碼MAC,用于證明輸入消息的正確性。MAC由T表示,T:=AES-CMAC(K,M,len),通過(guò)MAC的正確性判斷來(lái)驗(yàn)證源端消息的完整性。ItispossibletotruncatetheMAC.Accordingto[NIST-CMAC],atleasta64-bitMACshouldbeusedasprotectionagainstguessingattacks.Theresultoftruncationshouldbetakeninmostsignificantbitsfirstorder.AES-128的消息塊長(zhǎng)度為128bits。如果消息長(zhǎng)度不等于消息塊大小的整倍數(shù),則采取特殊的處理:在最后一個(gè)消息塊中加bit串10^i使其稱為一個(gè)完整的消息塊。對(duì)于一個(gè)輸入流*,填充函數(shù)padding(*)定義如下:-padding(*)=*||10^i//i等于128-8*r-1圖.4-2描述了MAC生成算法++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++AlgorithmAES-CMAC+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Input:K(128-bitkey)++:M(messagetobeauthenticated)++:len(lengthofthemessageinoctets)++Output:T(messageauthenticationcode)++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Constants:const_Zerois0*0000++const_Bsizeis16++++Variables:K1,K2for128-bitsubkeys++M_iisthei-thblock(i=1..ceil(len/const_Bsize))++M_lastisthelastblock*or-edwithK1orK2++nfornumberofblockstobeprocessed++rfornumberofoctetsoflastblock++flagfordenotingiflastblockispleteornot++++Step1.(K1,K2):=Generate_Subkey(K);++Step2.n:=ceil(len/const_Bsize);++Step3.ifn=0++then++n:=1;++flag:=false;++else++iflenmodconst_Bsizeis0++thenflag:=true;++elseflag:=false;++++Step4.ifflagistrue++thenM_last:=M_n*ORK1;++elseM_last:=padding(M_n)*ORK2;++Step5.*:=const_Zero;++Step6.fori:=1ton-1do++begin++Y:=**ORM_i;++*:=AES-128(K,Y);++end++Y:=M_last*OR*;++T:=AES-128(K,Y);++Step7.returnT;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++圖.4-2AES-CMAC算法根據(jù)子密鑰生成算法從密鑰K中得到子密鑰K1,K2;計(jì)算消息塊個(gè)數(shù)n,取比(消息總長(zhǎng)度除以消息塊長(zhǎng)度)大的最小整數(shù);檢查輸入信息的長(zhǎng)度,若輸入的長(zhǎng)度為0,則消息塊個(gè)數(shù)為1,標(biāo)識(shí)為不完整的消息塊(失敗);否則,若最后一個(gè)消息塊的長(zhǎng)度為128bits,則標(biāo)識(shí)為完整的消息塊(成功);否則,標(biāo)識(shí)為不完整的消息塊(失?。?;根據(jù)M_n的擴(kuò)展OR和一個(gè)子密鑰計(jì)算M_last。如果最后一個(gè)消息塊是完整的,則由M_n的擴(kuò)展OR和K1得到M_last;否則,由M_n的擴(kuò)展OR和K2得到M_last;初始化變量*;CBC-MAC用于得到M_1,...,M_{n-1},M_last;得到MAC,T:=AES-CMAC(K,M,len)。Ifnecessary,theMACistruncatedbeforeitisreturned.驗(yàn)證鑒權(quán)碼MACMAC驗(yàn)證可以簡(jiǎn)單的通過(guò)再計(jì)算MAC得到,應(yīng)用的還是生成MAC的算法。MAC驗(yàn)證函數(shù)Verify_MAC(),有四個(gè)輸入?yún)?shù):密鑰K,消息M,消息長(zhǎng)度len,得到的鑒權(quán)碼MAC,用T’標(biāo)識(shí);輸出為INVALID或VALID。圖.4-3描述的是MAC驗(yàn)證算法。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++AlgorithmVerify_MAC+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Input:K(128-bitKey)++:M(messagetobeverified)++:len(lengthofthemessageinoctets)++:T'(thereceivedMACtobeverified)++Output:INVALIDorVALID++++++++Step1.T*:=AES-CMAC(K,M,len);++Step2.ifT*isequaltoT'++then++returnVALID;++else++returnINVALID;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++圖.4-3Verify_MAC算法在MAC生成算法中,根據(jù)K,M和len得到T*;比較T*和T'。如果T*=T',返回VALID;否則返回INVALID;如果輸出為INVALID,則證明消息不可靠;若輸出為VALID,則證明消息可靠,在傳輸過(guò)程中沒(méi)有被干擾;盡管如此,這種確認(rèn)在任何MAC算法中都不是絕對(duì)的。EIA3、EEA3(ZUC)ZUC算法(數(shù)學(xué)家祖沖之名字的縮寫(xiě))是CCSA推薦給3GPPLTE使用的新算法,已在3GPPSA3立項(xiàng)。目前ZUC算法已通過(guò)了算法標(biāo)準(zhǔn)組ETSISAGE的部評(píng)估,通過(guò)了兩個(gè)專業(yè)團(tuán)隊(duì)的外部評(píng)估,經(jīng)過(guò)評(píng)估后ETSISAGE認(rèn)為算法強(qiáng)壯,并推薦在LTE標(biāo)準(zhǔn)中使用。這將是第一個(gè)成為國(guó)際標(biāo)準(zhǔn)的我國(guó)自主的密碼算法。ZUC算法的國(guó)際標(biāo)準(zhǔn)化,對(duì)我國(guó)按照國(guó)際慣例掌握通信產(chǎn)業(yè)的主動(dòng)有非常重要的意義。在國(guó)家密碼管理局的大力支持下,DCS中心成功舉辦了兩次國(guó)際研討會(huì),會(huì)議結(jié)果作為必要的公眾評(píng)估結(jié)論,為算法的國(guó)際標(biāo)準(zhǔn)化奠定了基礎(chǔ)。ZUC算法作為我國(guó)第一個(gè)自主產(chǎn)權(quán)的安全算法,受到國(guó)家乃至全球的高度重視,將全面應(yīng)用于我國(guó)的LTE系統(tǒng)中――作為設(shè)備入網(wǎng)的必選算法,并可能在網(wǎng)絡(luò)部署時(shí)進(jìn)行全網(wǎng)開(kāi)啟。在這種背景下,需要對(duì)LTE基站的安全技術(shù)進(jìn)行系統(tǒng)梳理。ZUC是一個(gè)面向字的流密碼算法,初始密鑰為128位,初始矢量為128位,輸出每個(gè)密鑰字為32位的密鑰流(這里每個(gè)32位的密鑰稱為一個(gè)密鑰字).該密鑰流可用于對(duì)明文信息加解密。使用ZUC算法分為兩個(gè)階段:密鑰初始化階段和產(chǎn)生密鑰階段.第一個(gè)階段進(jìn)行密鑰初始化工作,即不輸出密鑰。第二階段是產(chǎn)生密鑰階段,每循環(huán)一次產(chǎn)生一個(gè)32位的密鑰字輸出。ZUC算法結(jié)構(gòu)ZUC有3個(gè)邏輯層,參見(jiàn)下圖。頂層是16階線性反饋移存器(LFSR),中間層是位重組層,底層為是非線性函數(shù)F。線性反饋移存器LFSRLFSR有16個(gè)31位寄存器(s0,s1,…,s15).每個(gè)寄存器si(0≤i≤15)定義域?yàn)閧1,2,3,…,231-1}.LFSR有2個(gè)操作模式:初始化模式和工作模式。初始化模式,LFSR接收一個(gè)31位的輸入u,其產(chǎn)生公式為u=(W⊕*3)>>1.即LFSRWithInitialisationMode(u)

{1. v=【215s15+217s13+221s10+220s4+(1+28)s0】mod(231-1);2. Ifv=0,thensetv=231-1;3. s16=v⊕u;4. Ifs16=0,thensets16=231-1;5. (s1,s2,…,s15,s16)→(s0,s1,…,s14,s15).}在工作模式LFSR不接收輸入,逐位執(zhí)行右移操作。LFSRWithWorkMode()

{1. s16=215s15+217s13+221s10+220s4+(1+28)s0mod(231-1);2. Ifs16=0,thensets16=231-1;3. (s1,s2,…,s15,s16)→(s0,s1,…,s14,s15).}注1:2i與31比特?cái)?shù)相乘可表示為向左循環(huán)移位i位,只是在上述功能的第1步中,增加模(231-1)的操作。因此LFSRWithInitialisationMode(u)函數(shù)中的第1步也可如下實(shí)現(xiàn):v=(s15<<<3115)+(s13<<<3117)+(s10<<<3121)+(s4<<<3120)+s0mod(231-1).同樣,LFSRWithWorkMode()中的step1也可依此實(shí)現(xiàn)。注2:對(duì)于GF(231-1)的兩參數(shù)a、b,v=a+bmod(231-1)可通過(guò)幾步實(shí)現(xiàn):(1)計(jì)算v=a+b,(2)如果進(jìn)位是1,令v=v+1。也可以:(1)計(jì)算w=a+b,w是32比特的值,(2)令v=(w的低31比特)+(w的最高有效位)。比特重組BR該層將LFSR產(chǎn)生的128位重組為4個(gè)32位的字做為F的輸入。設(shè)s0,s2,s5,s7,s9,s11,s14,s15是LFSR的8個(gè)寄存器,重組后的4個(gè)32位字*0,*1,*2,*3產(chǎn)生方法如下:Bitreorganization()

{1. *0=s15H||s14L;2. *1=s11L||s9H;3. *2=s7L||s5H;4. *3=s2L||s0H.}非線性函數(shù)F工作過(guò)程F有2個(gè)32位的存儲(chǔ)單元R1和R2.輸入為*0,*1和*2,F輸出一個(gè)32位字W.過(guò)程如下:F(*0,*1,*2)

{1. W=(*0⊕R1)?R2;2. W1=R1?*1;3. W2=R2⊕*2;4. R1=S(L1(W1L||W2H));5. R2=S(L2(W2L||W1H)).}上面S是32×32的S盒,L1和L2是線性轉(zhuǎn)換.S盒一個(gè)32×32S盒由4個(gè)并列的8×8S盒組成,即S=(S0,S1,S2,S3),并且S0=S2,S1=S3.S0、S1定義分別參見(jiàn)表2.表.4-1S0(S2)盒定義0123456789ABCDEF03E725B47CAE0003304D1549809B96DCB17B1BF932AF9D6AA5B82DFC1D0853039024D4E8499E4CED991DDB685488B296EAC3CDC1F81E734369C6B5BDFD396320D4384767DB2A7CFED57C5F32CBB142106559B5E3EF5E314F7F5AA40D8251495FBA581C64A16D517A892241F8CFFD8AE2E01D3AD73B4BDA46EBC9DE9A8F87D73A806F2FC88B1B437F70A2213287CCC3C89C7C39656907BF7EF00B2B975235417961A64C10FEABC2695888AB0A3FBC01894F2E1E5E95DBD0DC1166645CEC59427512F5749CAA23C0E86ABBE2A02E767E644A26CC2939FF1DF6FA36D250689E6271153DD640C4E20FE8E83776B25053F0C30EA70B7A1E8A965F8D271ADB81B3A0F4457A19DFEE783460表.4-2S1(S3)盒定義0123456789ABCDEF055C263713BC847869F3CDA5B29AAFD7718CC5940CA61A1300E3A8167240F9F84224426689681D9453E1076C6A78B3943E133AB5562AC06DB3052266BFDC0BFA62484DD20110636C9C1CFF62752BB69F5D48757F844CD29C57A4BC4F9ADFFED68D7AEB62B53D85CA11417FB23D57D30677308097EEB7703F61B2198E4EE54B938F5DDBA98ADF1AE2ECB0DFCF42D466E1D97E8D1E994D37A5755E839EAB829DB91CE0CD4989A01B6BD5824A25F387899159050B895E4BD091C7CEED0FB46FA0CCF0024A79C3DECA3EFEA51E66B18EC1B2C80F774E7FF21D5A6A541E41319235C433070ABA7E0E34E88B1987CF33D606C7BCAD31F32650428F64BE859B2F598AD7B025ACAF1203E2F2如果*是8位輸入到S0(或S1),并且*=h||l.則S0(或S1)表第h行第l列的數(shù)據(jù)就是輸出?!纠印縎0(0*12)=0*F9andS1(0*34)=0*C0.如果*是32位的輸入,輸出Y也是32位:*=*0||*1||*2||*3,Y=y0||y1||y2||y3,這里*i和yi是所有的字節(jié),i=0,1,2,3.則yi=Si(*i),i=0,1,2,3.【例子】設(shè)輸入*=0*12345678,輸出Y為:Y=S(*)=S0(0*12)||S1(0*34)||S2(0*56)||S3(0*78)=0*F9C05A線性轉(zhuǎn)換L1和L2定義為:L1(*)=*⊕(*<<<2)⊕(*<<<10)⊕(*<<<18)⊕(*<<<24),L2(*)=*⊕(*<<<8)⊕(*<<<14)⊕(*<<<22)⊕(*<<<30).ZUC兩個(gè)階段初始化階段初始化階段將128位初始密鑰k和128位初始矢量iv輸入LFSR進(jìn)入初始狀態(tài)設(shè)置R1和R2為0.然后執(zhí)行如下過(guò)程1.Bitreorganization();2.u=F(*0,*1,*2)⊕*3;3.LFSRWithInitialisationMode(u>>1).密鑰流產(chǎn)生階段首先執(zhí)行下面操作一次,丟棄F的輸出W:1.Bitreorganization();2.F(*0,*1,*2);3.LFSRWithWorkMode()然后產(chǎn)生密鑰流,即每執(zhí)行一次,產(chǎn)生一個(gè)32位的Z:1.Bitreorganization();2.Z=F(*0,*1,*2)⊕*3;3.LFSRWithWorkMode()EIA3算法實(shí)現(xiàn)輸入輸出voidEIA3(u8*IK,u32COUNT,u32DIRECTION,u32BEARER,u32LENGTH,u32*M,u32*MAC)輸入?yún)?shù):參數(shù)長(zhǎng)度(bits)說(shuō)明COUNT32計(jì)數(shù)COUNT[0]…COUNT[31]BEARER5承載標(biāo)識(shí)DIRECTION1方向DIRECTION[0]IK128完整性保護(hù)密鑰IK[0]…IK[127]LENGTH32數(shù)據(jù)流長(zhǎng)度MLENGTH輸入數(shù)據(jù)流輸出參數(shù):參數(shù)長(zhǎng)度(bits)說(shuō)明MAC32產(chǎn)生的驗(yàn)證碼初始化下面介紹ZUC參數(shù)如何定義:初始密鑰KEY和初始向量IV是根據(jù)完整性保護(hù)密鑰IK和初始變量產(chǎn)生的。IK是128比特完整性密鑰,其中IK[i]

(0≤i≤15)是一個(gè)字節(jié)。IK=IK[0]

║IK[1]║IK[2]║…║IK[15]用于ZUC算法的128比特初始密鑰KEY如下,其中KEYKEY[i]=IK[i],

i=0,1,2,…,15.

COUNT是32位計(jì)數(shù),其中COUNT[i]

(

0≤i≤3)是一個(gè)字節(jié)。COUNT=COUNT[0]║COUNT[1]║COUNT[2]║COUNT[3]

128比特初始向量IV為:IV

=

IV[0]║IV[1]║IV[2]║…║IV[15],其中,IV[i]

(

0≤i≤15)

是字節(jié)。且:IV[0]

=

COUNT[0],

IV[1]

=

COUNT[1],

IV[2]

=

COUNT[2],

IV[3]

=

COUNT[3],

IV[4]

=

BEARER║0002,

IV[5]

=000000002,

IV[6]

=

000000002,

IV[7]

=

000000002,

IV[8]

=

IV[0](DIRECTION

<<

7),

IV[9]

=

IV[1],

IV[10]

=

IV[2],

IV[11]

=

IV[3],

IV[12]

=

IV[4],

IV[13]

=

IV[5],

IV[14]

=

IV[6](DIRECTION

<<

7),

IV[15]

=

IV[7].

密鑰流產(chǎn)生根據(jù)ZUC算法生成L=LENGTH/32+2

個(gè)字的密鑰流。記作:z[0],

z[1],

…,

z[32×L-1]。其中,z[0]是ZUC輸出的第一個(gè)字的最高有效位,z[31]是最低有效位。對(duì)于i=0,1,2,…,32×(L–1),zi

=

z[i]║z[i+1]║…║z[i+31],Zi表示一個(gè)32位字。計(jì)算MACT是一個(gè)32位的字,令T=0。對(duì)于i=0,1,2,…,LENGTH-1,如果M[i]=1,則:T=TZi。令T=TZLENGTH。最終,得到MAC,如下:MAC=

TZ32×(L-1)。EEA3算法實(shí)現(xiàn)加密算法128-EEA3是一種使用密鑰對(duì)數(shù)據(jù)塊進(jìn)行加密/解密的流加密算法。數(shù)據(jù)塊的長(zhǎng)度可以從1到65504比特。輸入輸出voidEEA3(u8*CK,u32COUNT,u32BEARER,u32DIRECTION,u32LENGTH,u32*M,u32*C)輸入?yún)?shù):參數(shù)長(zhǎng)度(bits)說(shuō)明COUNT32COUNT[0]…COUNT[31]本次幀號(hào)BEARER5BEARER[0]…BEARER[4]承載號(hào),rbId-1DIRECTION1DIRECTION[0]方向CK128CK[0]….CK[127]加密密鑰LENGTH32需要加密的數(shù)據(jù)塊長(zhǎng)度,比特MLENGTH輸入明文輸出參數(shù):參數(shù)長(zhǎng)度(bits)說(shuō)明CLENGTH輸出密文初始化下面介紹ZUC參數(shù)如何定義:初始密鑰KEY和初始向量IV是根據(jù)加密密鑰CK和初始變量產(chǎn)生的。CK是128比特加密密鑰,其中CK[i]

(0≤i≤15)是一個(gè)字節(jié)。CK=CK[0]

║CK[1]║CK[2]║…║CK[15]設(shè)置128比特初始密鑰KEY為:KEY[i]=CK[i],

i=0,1,2,…,15.

COUNT是32位計(jì)數(shù),其中COUNT[i]

(

0≤i≤3)是一個(gè)字節(jié)。COUNT=COUNT[0]║COUNT[1]║COUNT[2]║COUNT[3]

128比特初始向量IV為:IV

=

IV[0]║IV[1]║IV[2]║…║IV[15],其中,IV[i]

(

0≤i≤15)

是字節(jié)。且:IV[0]

=

COUNT[0],

IV[1]

=

COUNT[1],

IV[2]

=

COUNT[2],

IV[3]

=

COUNT[3],

IV[4]

=

BEARER║DIRECTION║002,

IV[5]

=

IV[6]

=

IV[7]

=

000000002,

IV[8]

=

IV[0],

IV[9]

=

IV[1],

IV[10]

=

IV[2],

IV[11]

=

IV[3],

IV[12]

=

IV[4],

IV[13]

=

IV[5],

IV[14]

=

IV[6],

IV[15]

=

IV[7].

密鑰流產(chǎn)生根據(jù)ZUC算法生成L個(gè)字的密鑰流。其中,每個(gè)字可展開(kāi)為32比特,即得到二進(jìn)制字符串z[0],

z[1],

…,

z[32×L‐1]。其中,z[0]是ZUC輸出的第一個(gè)字的最高有效位,z[31]是最低有效位。對(duì)LENGTH比特的消息進(jìn)行加密時(shí),L=LENGTH/32。加密/解密加密和解密操作一樣,都是對(duì)輸入數(shù)據(jù)流M和產(chǎn)生的密鑰流Z進(jìn)行異或操作。M是輸入比特流,長(zhǎng)度為L(zhǎng)ENGTH,可表示為:M

=

M[0]║M[1]║M[2]║…║M[LENGTH‐1]C是輸出比特流,長(zhǎng)度為L(zhǎng)ENGTH,其中M[i]和C[i]均為比特,i=0,1,2,…,LENGTH‐1。C

=

C[0]║C[1]║C[2]║…║C[LENGTH‐1]

C[i]

=

M[i]z[i],其中:i=0,1,2,…,LENGTH‐1。算法選擇初始安全上下文建立過(guò)程E-NodeB支持的安全算法是網(wǎng)絡(luò)通過(guò)網(wǎng)絡(luò)管理進(jìn)行配置的,包括:一個(gè)完整性算法列表和一個(gè)加密算法列表。列表中的算法根據(jù)運(yùn)營(yíng)商的策略進(jìn)行優(yōu)先級(jí)排序。AS安全上下文建立之后,MME向eNB發(fā)送UE的EPS安全能力,隨后,eNB儲(chǔ)存UE的安全能力信息。同時(shí),eNB根據(jù)UE的安全能力和自己本地配置的算法優(yōu)先級(jí),選擇在本地配置的UE支持的優(yōu)先級(jí)最高的算法,通過(guò)ASSMC消息通知UE。*2切換過(guò)程中算法選擇*2切換過(guò)程中在HandoverRequest消息中需要將UEEPS安全能力和加密完整性保護(hù)算法(透明盒中含有源側(cè)使用的算法)傳給目標(biāo)eNB。隨后,目標(biāo)eNB根據(jù)UE的安全能力和自己本地配置的算法優(yōu)先級(jí),選擇在本地配置的UE支持的優(yōu)先級(jí)最高的算法。而后,在HandoverRequestResponse消息過(guò)透?jìng)骱袀鹘o源eNB,源eNB發(fā)起RRC重配置消息將透?jìng)骱型ㄖoUE。[注]:切換請(qǐng)求過(guò)程中攜帶選擇的加密算法和完整性保護(hù)算法,用于目標(biāo)eNB解密RRC重建完成消息。比如:在切換失敗的情況下,如果UE向目標(biāo)eNB側(cè)小區(qū)發(fā)送RRC重建請(qǐng)求消息,目標(biāo)eNB側(cè)小區(qū)要根據(jù)源小區(qū)的算法UE發(fā)送SRB1:RRC重建完成消息進(jìn)行解密和完整性保護(hù)。S1切換過(guò)程中的算法選擇當(dāng)進(jìn)行S1切換時(shí),MME將UE的安全能力信息通過(guò)HANDOVERREQUEST消息通知給目標(biāo)eNB。目標(biāo)eNB根據(jù)UE的安全能力和本地配置的算法優(yōu)先級(jí),選擇UE的安全算法,并通過(guò)HANDOVERPREPARETIONACKNOWLEDGE消息告知源eNB,再通過(guò)源eNB的RRC連接重配置通知給UE。密鑰的生成和更新HMAC-SHA256()算法HMAC-SHA256()算法主要應(yīng)用于密鑰產(chǎn)生函數(shù)。密鑰產(chǎn)生過(guò)程包括兩步,第一步為S的生成,第二步為HMAC過(guò)程,使用HMAC-SHA256()算法進(jìn)行密鑰生成。輸入輸出輸入?yún)?shù):參數(shù)長(zhǎng)度(bits)說(shuō)明Key256bit主密鑰S變長(zhǎng)輸入?yún)?shù),詳見(jiàn).1節(jié)描述輸出參數(shù):參數(shù)長(zhǎng)度(bits)說(shuō)明輸出密鑰256bit作為輸出密鑰,供相關(guān)加密/完整性保護(hù)算法使用S的生成S的生成過(guò)程如下:輸入?yún)?shù):Pi輸入?yún)?shù)的編碼(字節(jié)長(zhǎng)度由Li指示)Li輸入?yún)?shù)Pi的字節(jié)長(zhǎng)度的編碼(Li長(zhǎng)度為2字節(jié))FC算法標(biāo)識(shí)碼(長(zhǎng)度為1字節(jié))各種場(chǎng)景下FC/P0...Pn/L0...Ln的取值見(jiàn)4.2節(jié)。輸出參數(shù):S(長(zhǎng)度為1+(P0的長(zhǎng)度+2)+(P2長(zhǎng)度+2)+…+(Pn長(zhǎng)度+2))輸入?yún)?shù)和長(zhǎng)度成S,方法如下:整數(shù)j輸入KDF編碼為

Pi:將

j用二進(jìn)制編碼表示;設(shè)n是比特?cái)?shù),為8的倍數(shù),或者與編碼后的j一致;最低位=

j的二進(jìn)制;如果j

中比特?cái)?shù)目小于n,余下填0?!纠?】如Pi是

UplinkNASCOUNT,則Pi中字節(jié)數(shù)k=4,位長(zhǎng)度n=32.假設(shè)UplinkNASCOUNT值

j=259.用2進(jìn)制編碼259是100000011,

則Pi為:000000000000000000000100000011,即0*000*000*010*03Li為000000000000100,即0*000*04?!纠?】Pi,

j=259將編碼為Pi。則259用二進(jìn)制表示為100000011,

n表示Pi的比特

16,Pi中字節(jié)數(shù)為2。Pi:0000000100000011,或者0*010*03。Li:000000000000010,即0*000*02。2. S是n+1輸入?yún)?shù)的:S=FC||P0||L0||P1||L1||P2||L2||P3||L3||...||Pn||LnHMAC過(guò)程下圖為HMAC過(guò)程的實(shí)現(xiàn)框圖。HMAC-SHA256算法框圖步驟:第一步、填充緩沖區(qū):ipad=thebyte0*36repeatedBtimesopad=thebyte0*5CrepeatedBtimes.第二步、計(jì)算數(shù)據(jù)為te*t的HMAC碼字:如果密鑰長(zhǎng)度大于64字節(jié),首先進(jìn)行哈希變換,以認(rèn)證碼字為新的密鑰;H(K*ORopad,H(K*ORipad,te*t))(1)將K擴(kuò)充成B字節(jié)為K1(例如:K長(zhǎng)度20字節(jié),而B(niǎo)=64字節(jié),則K通過(guò)補(bǔ)充44個(gè)字節(jié)的0形成64字節(jié);(2)K1與ipad進(jìn)行*OR形成新的K2;(3)如'te*t'不夠64字節(jié)擴(kuò)充形成K3;(4)對(duì)K2和K3進(jìn)行HASH256產(chǎn)生輸出Out1;(5)K1與opad異或形成K4;(6)擴(kuò)充K4到B字節(jié)形成K5;(7)對(duì)K5和Out1,進(jìn)行哈希變換輸出Out2。SHA-256算法SHA-256是一種哈希算法,能夠?qū)σ粍t長(zhǎng)度為l的消息M產(chǎn)生散列值。SHA-256輸入輸出輸入?yún)?shù):參數(shù)長(zhǎng)度(bits)說(shuō)明M0消息長(zhǎng)度264即將進(jìn)行哈希處理的消息,IV256bit初始化的{Y0,Y1,Y7}輸出參數(shù):參數(shù)長(zhǎng)度(bits)說(shuō)明Digest256bitSHA-256生成的哈希摘要SHA-256算法描述一、SHA-256預(yù)處理a.對(duì)消息M進(jìn)行分拆和填充,規(guī)則如下:設(shè)有一個(gè)任意長(zhǎng)度的消息m,將m按512比特塊進(jìn)行分拆,對(duì)最后一個(gè)比特塊(至少含有1比特,至多512比特)填充0或1成一個(gè)448比特的消息塊:m=m1m2m3…mt-1m其中mk(k=1,2,…t-1)為512比特的消息塊,mt’為448比特的消息塊。填充規(guī)則如下:從m的最低位開(kāi)始,先添加一個(gè)1,接著再添加若干0,使m的最后一個(gè)不足448比特的塊填充成為一個(gè)448比特的塊。如果m分拆后的最后一個(gè)塊本身就是448比特的塊,則也必須按照上述方法添加一個(gè)1及若干個(gè)0,即要填加成512比特將最后的消息塊分成512及448的兩個(gè)塊。b.將原始數(shù)據(jù)的長(zhǎng)度補(bǔ)到已經(jīng)過(guò)a步驟處理后的消息后面。用一個(gè)64位的數(shù)據(jù)來(lái)表示原始消息的比特長(zhǎng)度。c.最后將數(shù)據(jù)分成t個(gè)塊,每塊為512比特。d.用16進(jìn)制數(shù)初始化8個(gè)工作變量Y0~Y7:Y0=0*6a09e667Y1=0*bb67ae85Y2=0*3c6ef372Y3=0*a54ff53aY4=0*510e527fY5=0*9b05688cY6=0*1f83d9abY7=0*5be0cd19二、SHA-256使用的函數(shù)和常數(shù)函數(shù)常數(shù):C0到C63三、SHA-256的散列計(jì)算SHA-256預(yù)處理完成后,將每個(gè)消息分組(mk)分成16個(gè)32-bit的子分組(Z0~Z15),再按以下步驟1規(guī)則變換成64個(gè)32-bit的子分組(Z0~Z63),組成一個(gè)有64個(gè)32-bit單元的消息表,按次序依次進(jìn)行處理。Fork=1tot(說(shuō)明:t為消息分組的個(gè)數(shù)){1、計(jì)算產(chǎn)生消息表{Z0,Z1,…,Z63}Mk的容轉(zhuǎn)換為Z0~Z15,Z0包含512位中的最左32bit。i=16~63的情況下:2、對(duì){*0~*7}賦值:3、計(jì)算新的{*0~*7}:步驟3過(guò)程如下圖所示:4、生成中間散列值{Y0~Y7}:}經(jīng)過(guò)t圈循環(huán)之后,得到最后的哈希摘要結(jié)果:Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7。轉(zhuǎn)換成32個(gè)字節(jié)的序列。Y0占用前4個(gè)字節(jié),Y1占用接著的4個(gè)字節(jié),如此類(lèi)推。第一個(gè)字節(jié)(left-most)對(duì)應(yīng)于Y0的大頭字節(jié)(mostsignificant)。第32字節(jié)對(duì)應(yīng)于Y7的小頭字節(jié)(leastsignificant)。該32字節(jié)應(yīng)轉(zhuǎn)換為256bit字符串。第一個(gè)bit(left-most)代表字節(jié)0的themostsignificantbit,第256個(gè)bit(left-most)代表第32字節(jié)的最heleastsignificantbit。密鑰層次與eNB相關(guān)的密鑰包括:用于生成完整性保護(hù)和加密密鑰的KeNB- FC=0*11,- P0=UplinkNASCOUNT,- L0=lengthofuplinkNASCOUNT(i.e.0*000*04)采用256-bitKASME為主密鑰,通過(guò)HMAC-SHA256算法生成。臨時(shí)密鑰KeNB*- FC=0*13- P0=PCI(targetphysicalcellid)- L0=lengthofPCI(i.e.0*000*02)- P1=EARF-DL(targetphysicalcelldownlinkfrequency)- L1lengthofEARF-DL(i.e.0*000*02)當(dāng)切換時(shí)采用垂直衍生方式時(shí)采用256-bitNH為主密鑰生成,采用水平衍生方式時(shí)采用256-bitKeNB為主密鑰,通過(guò)HMAC-SHA256算法生成。臨時(shí)密鑰NH- FC=0*12- P0=SYNC-input- L0=lengthofSYNC-input(i.e.0*000*20)采用256-bitKASME為主密鑰生成,通過(guò)HMAC-SHA256算法生成。用于信令數(shù)據(jù)加密的KRRCenc- FC=0*15- P0=algorithmtypedistinguisher(0*03)- L0=lengthofalgorithmtypedistinguisher(i.e.0*000*01)- P1=algorithmidentity(0*00、0*01、0*02、0*03)- L1=lengthofalgorithmidentity(i.e.0*000*01)采用256-bitKeNB為主密鑰生成,通過(guò)HMAC-SHA256算法生成。用于完整性保護(hù)的KRRCint- FC=0*15- P0=algorithmtypedistinguisher(0*04)- L0=lengthofalgorithmtypedistinguisher(i.e.0*000*01)- P1=algorithmidentity(0*00、0*01、0*02、0*03)- L1=lengthofalgorithmidentity(i.e.0*000*01)采用256-bitKeNB為主密鑰生成,通過(guò)HMAC-SHA256算法生成。。用于數(shù)據(jù)業(yè)務(wù)加密的KUPenc- FC=0*15- P0=algorithmtypedistinguisher(0*05)- L0=lengthofalgorithmtypedistinguisher(i.e.0*000*01)- P1=algorithmidentity(0*00、0*01、0*02、0*03)- L1=lengthofalgorithmidentity(i.e.0*000*01)采用256-bitKeNB為主密鑰生成,通過(guò)HMAC-SHA256算法生成。TableA.7-1:AlgorithmtypedistinguishersAlgorithmdistinguisherValueRRC-enc-alg0*03RRC-int-alg0*04UP-enc-alg0*05AlgorithmIDValue算法名稱EIA00*00NullIntegrityProtectionalgorithm128-EIA10*01SNOW3G128-EIA20*02AES128-EIA30*03ZUC接入層的密鑰生成網(wǎng)絡(luò)側(cè)密鑰產(chǎn)生機(jī)制圖屬性密鑰名稱長(zhǎng)度作用產(chǎn)生方法KeNB256bit用于計(jì)算KUPenc、KRRCenc、KRRCint初始時(shí),取值為KeNB(Initial);后續(xù)取值為KeNB*中間密鑰KeNB(Initial)256bit根密鑰KeNB,用于生成eNB的PDCP層安全密鑰。MME根據(jù)UplinkNASCOUNT,Kamse作為密鑰生成KeNB。對(duì)應(yīng)NCC=0。UE采用相同方式生成密鑰。KeNB*256bit用于計(jì)算切換目標(biāo)小區(qū)的KeNB。當(dāng)切換完成后,自動(dòng)轉(zhuǎn)為KeNB使用。KeNB*由eNB生成。NCC變化時(shí)采用垂直衍生方式,根據(jù)NH及PCI/UARF生成;NCC不變時(shí)采用水平衍生方式,根據(jù)KeNB及PCI/UARF生成。UE采用相同方式生成密鑰。NH256bitNH和NCC總是配對(duì)使用,每次NH計(jì)算進(jìn)行NCC++,可通過(guò)HANDOVERREQ和PATHSWITCHACK通知eNB。當(dāng)NCC變化時(shí),基站將NCC通過(guò)空口通知UE;UE根據(jù)NCC取值確定垂直方向的密鑰。NH由MME生成。NCC為0時(shí),采用最新生成的KeNB作為輸入,Kamse作為密鑰生成NH;NCC為其他取值時(shí),采用上一個(gè)NH作為輸入,Kamse作為密鑰生成NH。MME接收handoverrequired和pathswitchrequest時(shí),總是進(jìn)行NH計(jì)算,并進(jìn)行NCC++。UE根據(jù)空口通知的NCC,按照相同方式生成NH。信令數(shù)據(jù)及用戶數(shù)據(jù)密鑰KUPenc128bit用于用戶面下行數(shù)據(jù)加密。根據(jù)KeNB,RRC-enc-alg,AlgorithmID生成。KRRCenc128bit用于下行RRC加密。根據(jù)KeNB,RRC-int-alg,AlgorithmID生成。KRRCint128bit用于下行RRC完整性保護(hù)。根據(jù)KeNB,UP-enc-alg,AlgorithmID生成。接入層的密鑰處理機(jī)制:各種場(chǎng)景下的密鑰處理:初始接入――總是采用KeNB(Initial)作為KeNB。MME在初始連接建立時(shí),計(jì)算NCC=1對(duì)應(yīng)的NH,保存NCC=1,NCC=1對(duì)應(yīng)的NH作為MME保存的{NH,NCC}對(duì),但不將NH值發(fā)送給eNB。在收到S1初始上下文建立請(qǐng)求消息時(shí),eNB將NCC值設(shè)置為0。此后如果發(fā)生*2切換或eNB切換,只能使用水平衍生的密鑰產(chǎn)生機(jī)制,根據(jù)KeNB和PCI,帶寬獲取KeNB*。S1切換――根據(jù)S1切換請(qǐng)求中的{NH,NCC}對(duì),通過(guò)垂直衍生方式進(jìn)行密鑰生成,根據(jù)NH計(jì)算KeNB*,作為KeNB。*2切換――如果存在未使用的{NH,NCC}對(duì),通過(guò)垂直衍生方式進(jìn)行密鑰生成,根據(jù)未使用的NH計(jì)算KeNB*,作為KeNB;否則,通過(guò)水平衍生方式進(jìn)行密鑰生成。切換完成后的PATHSWITCH過(guò)程,MME在PATHSWITCHACK中攜帶{NH,NCC},目標(biāo)eNB可以保存該{NH,NCC}對(duì),在下次*2切換或eNB切換時(shí)使用;目標(biāo)eNB也可以立即啟用該{NH,NCC}對(duì),通過(guò)小區(qū)切換方式通知UE。eNB切換――eNB切換與*2切換的處理方式類(lèi)似,不同點(diǎn)在于eNB切換時(shí)可以不發(fā)起PATHSWITCH過(guò)程。如果eNB切換不發(fā)起PATHSWITCH過(guò)程,則不會(huì)從MME獲取新的{NH,NCC}對(duì),也就是說(shuō),連續(xù)的eNB切換可以按照水平衍生方向一直衍生,直到通過(guò)PATHSWTICH過(guò)程或S1切換過(guò)程重新獲取到{NH,NCC}對(duì)。注:目前eNB實(shí)現(xiàn),eNB切換流程需要發(fā)起PATHSWITCH過(guò)程,因此,eNB切換流程的密鑰生成方式,等價(jià)于*2切換。 NCC的取值圍為0~7。初始連接建立時(shí),KeNB(Initial)通過(guò)KAMSE獲取,初始NH通過(guò)KeNB(Initial)獲取,此時(shí)NCC為0。MME在初始連接建立時(shí),計(jì)算NCC=1對(duì)應(yīng)的NH,保存NCC=1,NCC=1對(duì)應(yīng)的NH作為MME保存的{NH,NCC}對(duì)。MME每次接收到PATHSWITCHREQ和HANDOVERREQUIRED消息,總是進(jìn)行NH計(jì)算,并進(jìn)行NCC++。理解:NCC=1對(duì)應(yīng)的NH屬于臨時(shí)狀態(tài)的NH,不能直接用來(lái)計(jì)算KeNB。如初始連接建立時(shí)eNB指示終端NCC=0;隨后立即進(jìn)行S1切換,則MME在S1切換請(qǐng)求中指示NCC=2。當(dāng)NCC=7時(shí),MME接收到PATHSWITCHREQ和HANDOVERREQUIRED消息,則重新采用KeNB(Initial),NCC=0,MME通過(guò)S1接口SecurityConte*tIE發(fā)送給eNB后,計(jì)算NCC=1對(duì)應(yīng)的NH等于KeNB(Initial),保存NCC=1,NCC=1對(duì)應(yīng)的NH作為MME保存的{NH,NCC}對(duì)。eNB影響分析流程分析初始業(yè)務(wù)接入圖5.1-1初始安全性激活協(xié)議流程圖UE和MME進(jìn)行NAS交互,MME根據(jù)最近上行NAS消息(attachRequest/TAURequest/NASSecurityModeplete)的NASSN得到當(dāng)前的uplinkNASCOUNT,計(jì)算KeNB(Initial)(參考36.401/A.3生成過(guò)程)。MME向eNB發(fā)送初始上下文建立請(qǐng)求消息,消息中攜帶最新計(jì)算的KeNB(Initial),即SecurityKeyIE,以及UE的安全能力信息UESecurityCapabilitiesIE(包含了UE的加密和完整性保護(hù)的算法)。eNB根據(jù)UE的安全能力信息,通過(guò)算法選擇功能選擇AS層加密和完整性保護(hù)算法。隨后,eNB下發(fā)SecurityModemand消息,消息中包含AS層選擇的加密和完整性保護(hù)算法;UE收到消息后,則根據(jù)最近上行NAS消息的NASCOUNT值計(jì)算KeNB。 安全模式控制過(guò)程中,SecurityModemand和SecurityModeplete消息采用本次安全模式控制過(guò)程指定的最新算法進(jìn)行完整性保護(hù),但采用原算法進(jìn)行加解密;后續(xù)的所有消息,都采用本次安全模式控制過(guò)程指定的最新算法進(jìn)行完整性保護(hù)和加解密。注:MME在進(jìn)行KeNB計(jì)算之后,會(huì)根據(jù)KeNB更新NH,并將NCC設(shè)置為1,用于后續(xù)切換使用。下次切換發(fā)生時(shí)MME進(jìn)行密鑰垂直衍生,將根據(jù)NCC=1對(duì)應(yīng)的NH值,計(jì)算NCC=2的NH,并把(NCC=2,NCC=2對(duì)應(yīng)的NH對(duì))通過(guò)S1HANDOVERREQUEST或PATHSWTICHACK消息知eNB。eNBUP對(duì)初始安全消息處理:對(duì)SecurityModemand消息:只進(jìn)行完整性保護(hù),不加密對(duì)SecurityModeplete消息:只進(jìn)行完整性校驗(yàn),不解密對(duì)于SecurityModeFailure消息:協(xié)議規(guī)定該消息不進(jìn)行完整性保護(hù)注:若UP對(duì)SMC后的所有消息(包括SecurityModeFailure消息)進(jìn)行完整性檢查,必然導(dǎo)致完整性檢查失敗,SecurityModeFailure消息無(wú)法傳遞到上層。*2切換圖5.1-2*2切換過(guò)程安全部分協(xié)議實(shí)現(xiàn)流程圖*2切換過(guò)程中,如果存在未使用的{NH,NCC}對(duì)(如上次*2切換過(guò)PATHSWITCHACK消息獲取的{NH,NCC}對(duì)),源eNB需要立即使用該{NH,NCC},即采用垂直衍生方式,通過(guò)NH計(jì)算KeNB*。衍生方式有如下兩種:(1)水平衍生:根據(jù)PCI,frequencyEARF-D,KeNB計(jì)算KeNB*(2)垂直衍生:根據(jù)HN源eNB根據(jù)水平衍生方式或者垂直衍生方式計(jì)算KeNB*后,通過(guò)HandoverRequest消息,將{KeNB*,NCC},通知給目標(biāo)eNB。源eNB生成KeNB*存在下述幾種方式:如果為初始接入后的第一次*2切換,使用初始KeNB生成KeNB*,則NCC為0;如果不存在未使用的{NH,NCC}對(duì),采用水平衍生方向進(jìn)行密鑰衍生,則采用KeNB生成KeNB*,NCC保持不變。如果存在未使用的{NH,NCC}對(duì),采用垂直衍生方向進(jìn)行密鑰衍生,NCC加1,并采用與NCC關(guān)聯(lián)的NH生成KeNB*。目標(biāo)eNB使用KeNB*直接作為KeNB使用,并將NCC放在目的到源透明盒的RRC重配消息中;此外,目標(biāo)eNB根據(jù)消息中的UE安全能力信息,通過(guò)算法選擇功能選擇AS層加密和完整性保護(hù)算法。目標(biāo)eNB通過(guò)源eNB向UE發(fā)送RRC重配消息,消息中攜帶NCC以及選定的AS層加密和完整性保護(hù)算法。UE從源eNB接收RRC重配消息后,則根據(jù)消息中指定的NCC計(jì)算KeNB,存在兩種情況:接收的NCC與當(dāng)前使用的NCC相同UE采用水平衍生方向進(jìn)行密鑰衍生,根據(jù)當(dāng)前KeNB生成KeNB*,切換到目標(biāo)側(cè)后直接將KeNB*作為KeNB使用。該場(chǎng)景特例:初始接入后的第一次*2切換,eNB下發(fā)的NCC=0,UE當(dāng)前使用的NCC=0,UE同樣采用水平衍生方向進(jìn)行密鑰衍生。接收的NCC與當(dāng)前使用的NCC不同UE采用垂直衍生方向進(jìn)行密鑰衍生,根據(jù)與NCC關(guān)聯(lián)的NH生成KeNB*。UE根據(jù)目標(biāo)側(cè)的加密完整性保護(hù)算法,采用KeNB生成的KRRC-enc,KRRC-int,andKUP-enc,對(duì)后續(xù)信令數(shù)據(jù)(包括RRC重配完成消息)進(jìn)行加密和完整性保護(hù),業(yè)務(wù)數(shù)據(jù)進(jìn)行加密。完成*2切換后,目的eNB向MME發(fā)送S1PATHSWITCHREQUEST。MME收到S1PATHSWITCHREQUEST消息,根據(jù)KASME和本地保存的NH計(jì)算新的NH,并將NCC加1。之后將重新計(jì)算的{NH,NCC}pair,通過(guò)S1PATHSWITCHREQUESTACKNOWLEDGE,通知給目標(biāo)eNB。在*2切換過(guò)程中,KeNB*是由源eNB計(jì)算并傳輸給目標(biāo)eNB的,源eNB知道目標(biāo)eNB中的加密密鑰;此時(shí)目標(biāo)eNB可直接使用源側(cè)計(jì)算的KeNB,也可以根據(jù)NH垂直衍生新的KeNB。目標(biāo)eNB存在兩種處理方式:目標(biāo)eNB將{NH,NCC}pair保存起來(lái),在后續(xù)的切換過(guò)程中使用。目標(biāo)eNB可以根據(jù)重新獲取的NH,垂直衍生重新計(jì)算KeNB,并通過(guò)小區(qū)切換方式通知UE。UE按照最新NCC,通過(guò)垂直衍生方式計(jì)算KeNB。此后,目標(biāo)eNB和UE都采用最新垂直衍生方式得到的KeNB生成最新KUPenc、KRRCenc、KRRCint,進(jìn)行加密和完整性保護(hù)。eNB切換 eNB切換流程,與*2切換流程類(lèi)似。eNB切換完成后,根據(jù)eNB實(shí)現(xiàn)方式不同,存在兩種情況:需要進(jìn)行PATHSWITCH過(guò)程,處理流程同*2切換。不需要進(jìn)行PATHSWITCH過(guò)程,每次eNB切換時(shí)密鑰通過(guò)水平衍生方向生成。S1切換圖5.1-4S1切換流程圖MME收到HandoverRequest消息之后,根據(jù)NH和KASME計(jì)算NH,并將NCC加1。MME將重新計(jì)算的NH和NCC保存起來(lái),并通過(guò)S1HANDOVERREQUEST.消息,將{NH,NCC}pair,發(fā)送到目標(biāo)eNB,消息中還包含UE安全能力信息。目標(biāo)eNB接收到HANDOVERREQUEST消息,根據(jù)消息中的{NH,NCC},計(jì)算KeNB,同時(shí)刪除保存的沒(méi)有使用的{NH,NCC}pairs;根據(jù)消息中的UE能力信息,通過(guò)算法選擇功能選擇AS層加密和完整性保護(hù)算法。目標(biāo)eNB通過(guò)透明盒傳送到源eNB,源eNB下發(fā)RRC重配消息,消息中包含選定的加密和完整性保護(hù)算法、NCC參數(shù)。UE接收RRC重配消息后,根據(jù)NCC計(jì)算KeNB,存在兩種情況:接收的NCC與當(dāng)前使用的NCC相同,UE采用水平衍生方向進(jìn)行密鑰衍生,根據(jù)當(dāng)前KeNB生成KeNB*,切換到目標(biāo)側(cè)后直接將KeNB*作為KeNB使用。接收的NCC與當(dāng)前使用的NCC不同,UE采用垂直衍生方向進(jìn)行密鑰衍生,根據(jù)與NCC關(guān)聯(lián)的NH生成KeNB*。UE根據(jù)目標(biāo)側(cè)的加密完整性保護(hù)算法,采用KeNB生成的KRRC-enc,KRRC-int,andKUP-enc,對(duì)后續(xù)信令數(shù)據(jù)包括RRC重配完成消息進(jìn)行加密和完整性保護(hù),業(yè)務(wù)數(shù)據(jù)進(jìn)行加密。RRC重建RRC重建包括兩種場(chǎng)景:穩(wěn)態(tài)的RRC重建,以及切換過(guò)程中的RRC重建。穩(wěn)態(tài)的重建存在幾種可能:源小區(qū)重建――可重建其他小區(qū)重建(其他小區(qū)屬于源eNB)――可重建其他小區(qū)重建(其他小區(qū)不屬于源eNB)――無(wú)法重建切換過(guò)程中的RRC重建存在幾種可能:源小區(qū)重建――可重建目標(biāo)小區(qū)重建――可重建第三小區(qū)重建(第三小區(qū)屬于源eNB)――可重建第三小區(qū)重建(第三小區(qū)屬于目標(biāo)eNB)――可重建第三小區(qū)重建(第三小區(qū)屬于第三eNB)――無(wú)法重建在切換過(guò)程中如果切換失敗,UE可能會(huì)進(jìn)行RRC重建過(guò)程。此時(shí)UE可能會(huì)選擇和目標(biāo)小區(qū)不同的一個(gè)小區(qū),發(fā)起RRC連接重建過(guò)程。為保證UE的RRC連接能夠成功重建,在切換準(zhǔn)備過(guò)程中,源eNB會(huì)為目標(biāo)eNB控制的多個(gè)小區(qū)分別計(jì)算KeNB*,也會(huì)為源eNB控制下的多個(gè)小區(qū)計(jì)算KeNB*。切換準(zhǔn)備過(guò)程中,源eNB在HandoverPreparationInformation消息的AS-Conte*tIE的ReestablishmentInfoIE中(參見(jiàn)36.331)包含目標(biāo)eNB控制的多個(gè)小區(qū)對(duì)應(yīng)的重建信息(KeNB*,ShortMAC-I,CellIdentity)信息;AS-ConfigIE中包含了源側(cè)使用的安全算法。同時(shí),源eNB部維護(hù)其控制下的多個(gè)小區(qū)對(duì)應(yīng)的重建信息(KeNB*,ShortMAC-I,CellIdentity)信息。ShortMAC-I根據(jù)VarShortMAC-Input作為MESSAGE,根據(jù)原服務(wù)小區(qū)的KRRCint作為KEY計(jì)算獲得;而VarShortMAC-Input由目標(biāo)小區(qū)cellIdentity,原服務(wù)小區(qū)的PCI和c-RNTI組成(理解:為支持源小區(qū)RRC重建,源eNB控制下的多個(gè)小區(qū),包含源小區(qū)本身)。為了避免UE無(wú)法執(zhí)行在切換或者重建過(guò)程發(fā)生的RRC連接重建失敗,UE需要在切換和RRC連接重建完成之前,一直保存KeNB值(理解:UE發(fā)生RRC連接重建,不管在源小區(qū)重建還是在其他小區(qū)重建,都可以通過(guò)該KeNB推出重建小區(qū)的KeNB)。在*2切換時(shí),目標(biāo)eNB直接使用源側(cè)計(jì)算的KeNB*作為KeNB;在S1切換時(shí),目標(biāo)eNB忽略源側(cè)提供的KeNB*,根據(jù)從MME收到的{NH,NC

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論