專利名稱:實(shí)現(xiàn)rc4加/解密的裝置及其方法
技術(shù)領(lǐng)域:
本發(fā)明涉及無線局域網(wǎng)(WLAN ffireless Local Area Network)領(lǐng)域中媒體訪問層(MAC Medium Access Control)的設(shè)計(jì)及實(shí)現(xiàn)技術(shù)領(lǐng)域,尤其涉及一種高吞吐率、低延遲的RC4加/解密的裝置及其方法。
背景技術(shù):
無線局域網(wǎng)正以驚人的速度日益普及井深入到日常生活和工作的各個(gè)領(lǐng)域。在當(dāng)今信息爆炸的時(shí)代,高的數(shù)據(jù)傳輸速率是其發(fā)展的ー個(gè)重要方向。2009年通過的IEEE802. I In標(biāo)準(zhǔn)的最高吞吐率達(dá)到600Mbps以上,目前吞吐率超過IGbps的IEEE 802. I Iac標(biāo)準(zhǔn)也已在起草中。無線網(wǎng)絡(luò)是開放的網(wǎng)絡(luò),任何人都可以監(jiān)聽通信的過程,因此其安全性尤為重要。IEEE 802. Ili標(biāo)準(zhǔn)詳細(xì)規(guī)定了無線局域網(wǎng)的安全方案,包括TKIP和CCMP兩種安全協(xié)議。TKIP是對(duì)最初的WEP安全協(xié)議的升級(jí),使用RC4算法進(jìn)行數(shù)據(jù)的加/解密。RC4是ー種分組對(duì)稱加密算法,具有安全性高、實(shí)現(xiàn)簡(jiǎn)單等優(yōu)點(diǎn),廣泛應(yīng)用于無線網(wǎng)絡(luò)安全中。RC4加密的基本思想是,生成一個(gè)叫密鑰流的偽隨機(jī)序列字節(jié)流,然后與明文數(shù)據(jù)相異或,生成密文。解密算法與加密算法一致,使用相同的密鑰流與密文異或得到明文。RC4加密算法關(guān)鍵在于生成偽隨機(jī)的密鑰流。RC4實(shí)際上包含兩個(gè)算法一個(gè)是密鑰調(diào)度算法(Key Scheduling Algorithm),它是將RC4加密密鑰(64位或128位)按一定算法與S盒中的初始狀態(tài)S {0,1,ロ,N-1}運(yùn)算,得到新的置亂后的狀態(tài)序列。具體說,這個(gè)算法的步驟是I)建立ー個(gè)I字節(jié)X 256的陣列,稱為S-B0X,先用0-255按順序依次填充S-B0X。然后再建立ー個(gè)I字節(jié)X 256的陣列,叫做Κ-Β0Χ,用RC4加密密鑰(64位或128位)順序填充Κ-Β0Χ,密鑰用完后重復(fù)使用直到填滿為止。2)將S-BOX中的每個(gè)字節(jié)依次(從第I個(gè)字節(jié)開始)與S-BOX中的另外ー個(gè)字節(jié)(該字節(jié)的地址由特定算法給出)互換,完成S-BOX的初始化。密鑰調(diào)度算法的偽代碼描述如下,其中,S[i]是S-BOX中第i個(gè)單元的值,S[j]是S-BOX中第j個(gè)單元的值
KSA(K)//S-box 初始化
H=O;
For i=0 to N-I
S[i]=i;
For i=0 to N-Ij=j+ S[i]+K[i mod L];
SWAPS[i],SD];
另一個(gè)算法是偽隨機(jī)序列產(chǎn)生算法(Pseudo-Random Generation Algorithm),是利用上一步產(chǎn)生的打亂后的S-BOX來產(chǎn)生ー個(gè)偽隨機(jī)序列,使用該隨機(jī)序列加/解密數(shù)據(jù)。算法的偽代碼描述如下,其中Z[i]即為生成的密鑰流
PRGA(K) //密鑰流生成i=0 ;
J=O;
i=(i+l) mod N; j=G+ S[i])modN;
SWAPS[i],SD];Z[i]=S[S[i]+SD]];在算法的硬件實(shí)現(xiàn)中,毎次S-BOX交換都要進(jìn)行兩次讀操作與兩次寫操作,如何提高S-BOX交換效率成為提高加密吞吐率的關(guān)鍵因素。在傳統(tǒng)的實(shí)現(xiàn)方式中通常需要3個(gè)時(shí)鐘周期完成一次S-BOX交換操作。在文獻(xiàn)M中,使用ー塊256X8的雙端ロ RAM作為S-BOX存儲(chǔ),在RAM兩端ロ采用相位相反的時(shí)鐘,實(shí)現(xiàn)了兩個(gè)時(shí)鐘周期完成一次交換。但是由于這種實(shí)現(xiàn)方法需要兩個(gè)不同的時(shí)鐘,在邏輯綜合時(shí)需要將兩個(gè)不同的時(shí)鐘分別作用 的邏輯施加不同的約束。另外,該實(shí)現(xiàn)方法對(duì)兩個(gè)時(shí)鐘的相位有著較為嚴(yán)格的要求,如果時(shí)鐘出現(xiàn)偏差,將導(dǎo)致更新失效。算法實(shí)現(xiàn)時(shí)的另外ー個(gè)問題是,S-BOX初始化需要較長(zhǎng)的時(shí)間,而在初始化完成之后,才能夠開始產(chǎn)生密鑰流。在傳統(tǒng)設(shè)計(jì)中,順序處理KSA和PRNA過程,這樣勢(shì)必會(huì)造成加密幀流相對(duì)明文幀流有一個(gè)較大的延遲,同時(shí)也會(huì)減小加密引擎的呑吐率。在WLAN中,進(jìn)行加密過程吋,發(fā)送站點(diǎn)能夠知道下一個(gè)數(shù)據(jù)包的計(jì)數(shù)序號(hào),并能夠通過該序號(hào)以及給定的密鑰計(jì)算出用于下ー個(gè)數(shù)據(jù)包加密的密鑰;而在解密過程中,接收站點(diǎn)從ー個(gè)發(fā)送站點(diǎn)接收連續(xù)的數(shù)據(jù)包,在接收到擴(kuò)展的MAC頭部分之后,能夠得知幀序號(hào),將該幀序號(hào)加I可以推斷出下一個(gè)要接收數(shù)據(jù)包的解密密鑰。因此,在接收到擴(kuò)展的MAC頭之后,就可以開始下ー個(gè)要接收的數(shù)據(jù)包的密鑰初始化。通過這種預(yù)處理下一個(gè)數(shù)據(jù)包的密鑰的方式,可以減少因?yàn)槊荑€預(yù)處理過程而引起的延遲,同時(shí)提高數(shù)據(jù)包吞吐率。
發(fā)明內(nèi)容
本發(fā)明目的之ー在于提供ー種適用于IGbps高速無線局域網(wǎng)MAC控制器的RC4加
/解密裝置及其方法。根據(jù)本發(fā)明的ー個(gè)方面,提供實(shí)現(xiàn)RC4加/解密的裝置包括第一密鑰盒子、第二密鑰盒子,及構(gòu)成數(shù)據(jù)流乒乓結(jié)構(gòu)的第一密鑰調(diào)度控制單元、第二密鑰調(diào)度控制單元、第一 S-BOX存儲(chǔ)器、第二 S-BOX存儲(chǔ)器、第三S-BOX存儲(chǔ)器、第一偽隨機(jī)序列產(chǎn)生控制単元、第二偽隨機(jī)序列產(chǎn)生控制単元;其中,所述第一 S-BOX存儲(chǔ)器、第二 S-BOX存儲(chǔ)器、第三S-BOX存儲(chǔ)器存儲(chǔ)密鑰初始化及密鑰流生成操作中間過程中的值;
所述第一密鑰調(diào)度控制單元調(diào)用所述第一密鑰盒子存儲(chǔ)的密鑰,所述第二密鑰調(diào)度控制單元調(diào)用所述第二密鑰盒子存儲(chǔ)的密鑰,按RC4算法交替對(duì)所述三個(gè)S-BOX存儲(chǔ)器中空閑的S-BOX存儲(chǔ)器進(jìn)行初始化;所述第一偽隨機(jī)數(shù)產(chǎn)生控制単元與所述第二偽隨機(jī)數(shù)產(chǎn)生控制単元,交替對(duì)所述三個(gè)S-BOX存取器中已初始化完畢的S-BOX存儲(chǔ)器進(jìn)行置換,以產(chǎn)生加/解密的偽隨機(jī)密鑰流。根據(jù)本發(fā)明提供的一種實(shí)現(xiàn)RC4加/解密的裝置及其方法,將密鑰流的生成效率提高了 50%,使RC4加密引擎的呑吐率提高了一倍,同時(shí)減小了密鑰流的延遲。
圖I是本發(fā)明實(shí)施例提供的基于乒乓結(jié)構(gòu)及密鑰預(yù)處理結(jié)構(gòu)的RC4加解密裝置總體結(jié)構(gòu)框圖;
圖2是本發(fā)明實(shí)施例提供的基于鏡像RAM的S-BOX交換結(jié)構(gòu)框圖;圖3是本發(fā)明實(shí)施例提供的基于鏡像RAM的S-BOX交換結(jié)構(gòu)操作時(shí)序示意圖。
具體實(shí)施例方式傳統(tǒng)的實(shí)現(xiàn)方法中,存在S-BOX交換效率過低、吞吐率不高的問題。在能夠提高吞吐率的方法中,又對(duì)時(shí)鐘相位有嚴(yán)格的要求,加大了時(shí)鐘樹插入及滿足時(shí)序要求的難度?;谏鲜鰡栴},本發(fā)明提供了一種在不增加時(shí)序要求的前提下,提高RC4加/解密吞吐率及減小密鑰流延遲的方法。為達(dá)到上述目的,本發(fā)明提出了一種鏡像RAM密鑰流生成方法,將密鑰流的生成效率提高了 50% ;提供了ー種乒乓結(jié)構(gòu)的數(shù)據(jù)流處理方法和ー種S-BOX預(yù)初始化方法,使RC4加密引擎的呑吐率提高了一倍,同時(shí)減小了密鑰流的延遲。在160M時(shí)鐘下,本發(fā)明提供的加/解密裝置吞吐率可達(dá)到I. 25Gbps。下面結(jié)合圖I至圖4對(duì)本發(fā)明所提供的RC4加/解密裝置及方法進(jìn)行說明。如圖I所示,提供了實(shí)現(xiàn)RC4加/解密的裝置,其包括第一密鑰盒子、第二密鑰盒子,及構(gòu)成數(shù)據(jù)流乒乓結(jié)構(gòu)的第一密鑰調(diào)度控制單元、第二密鑰調(diào)度控制單元、第一 S-BOX存儲(chǔ)器、第二 S-BOX存儲(chǔ)器、第三S-BOX存儲(chǔ)器、第一偽隨機(jī)序列產(chǎn)生控制単元、第二偽隨機(jī)序列產(chǎn)生控制単元,異或門及輸入輸出緩存。其中,第一密鑰盒子與第二密鑰盒子為兩個(gè)16X8的寄存器堆,用來存儲(chǔ)數(shù)據(jù)包的加/解密密鑰。RC4加密密鑰由會(huì)話密鑰、發(fā)送端MAC地址與初始化向量(IV)經(jīng)過一定的算法混合而成,長(zhǎng)度為64位或128位。第一密鑰調(diào)度控制單元與第二密鑰調(diào)度控制單元為兩個(gè)獨(dú)立的密鑰初始化控制單元。在第一密鑰調(diào)度控制單元調(diào)用第一密鑰盒子存儲(chǔ)的密鑰及第ニ密鑰調(diào)度控制單元調(diào)用第二密鑰盒子存儲(chǔ)的密鑰后,按RC4算法交替對(duì)所述三個(gè)S-BOX存儲(chǔ)器中空閑的S-BOX存儲(chǔ)器進(jìn)行初始化。初始化的具體順序?yàn)槭紫鹊谝幻荑€調(diào)度控制單元與第二密鑰調(diào)度控制單元同時(shí)分別對(duì)第一 S-BOX存儲(chǔ)器與第二 S-BOX存儲(chǔ)器進(jìn)行初始化;之后對(duì)S-BOX存儲(chǔ)器按照第三S-BOX存儲(chǔ)器-第二 S-BOX存儲(chǔ)器-第三S-BOX存儲(chǔ)器-第一 S-BOX存儲(chǔ)器-第二 S-BOX
存儲(chǔ)器......的順序進(jìn)行初始化,而相應(yīng)的密鑰調(diào)度単元操作的順序是交替的方式,即按
照第一密鑰調(diào)度控制單元一第二密鑰調(diào)度控制單元一第一密鑰調(diào)度控制單元......_的順序。初始化步驟可按照以下順序(I)第一密鑰調(diào)度控制單元一第一 S-BOX存儲(chǔ)器;(2)第二密鑰調(diào)度控制單元一第二 S-BOX存儲(chǔ)器;(3)第一密鑰調(diào)度控制單元一第三S-BOX存儲(chǔ)器;(4)第二密鑰調(diào)度控制單元一第一 S-BOX存儲(chǔ)器;(5)第一密鑰調(diào)度控制單元一第二 S-BOX存儲(chǔ)器; (6)第二密鑰調(diào)度控制單元一第三S-BOX存儲(chǔ)器;(7)第一密鑰調(diào)度控制單元一第一 S-BOX存儲(chǔ)器。第一 S-BOX存儲(chǔ)器、第二 S-BOX存儲(chǔ)器及第三S-BOX存儲(chǔ)器相同,但獨(dú)立,用于存儲(chǔ)密鑰初始化及密鑰流生成操作中間過程中的值。第一偽隨機(jī)序列產(chǎn)生控制単元與第二偽隨機(jī)序列產(chǎn)生控制単元,使用初始化完畢的S-BOX產(chǎn)生加密數(shù)據(jù)包所需的偽隨機(jī)密鑰流。這兩個(gè)偽隨機(jī)序列產(chǎn)生控制単元交替按照輪詢的順序訪問三個(gè)S-BOX存儲(chǔ)單元,構(gòu)成乒乓結(jié)構(gòu)的數(shù)據(jù)流加密/解裝置,提高了加/解密運(yùn)算的呑吐率。另外對(duì)每ー個(gè)數(shù)據(jù)包,密鑰初始化過程及偽隨機(jī)序列生成過程都可以流水進(jìn)行,從而減小了輸出數(shù)據(jù)流對(duì)輸入數(shù)據(jù)流的延遲。基于圖I所示RC4加解密裝置的數(shù)據(jù)包加/解密的步驟包括步驟SI、加/解密裝置獲得第一幀數(shù)據(jù)的加/解密密鑰,以及由此推斷出的第二幀數(shù)據(jù)的密鑰。步驟S2、按照RC4算法,分別使用相應(yīng)密鑰對(duì)第一密鑰盒子、第二密鑰盒子進(jìn)行填充;將第一 S_B0X存儲(chǔ)器及第ニ S_B0X存儲(chǔ)器中的雙端ロ RAM的內(nèi)容依次用0-255填充。步驟S3、按照RC4的密鑰調(diào)度算法,由第一密鑰調(diào)度控制單元和第二密鑰調(diào)度控制単元,分別對(duì)第一 S_B0X存儲(chǔ)器、第二 S_B0X存儲(chǔ)器進(jìn)行初始化。步驟S4 :第一偽隨機(jī)數(shù)產(chǎn)生控制単元通過操作已經(jīng)初始化完畢的第一 S_B0X存儲(chǔ)器產(chǎn)生用于加/解密第一幀數(shù)據(jù)的偽隨機(jī)密鑰流。步驟S5 :在執(zhí)行步驟S4的同時(shí),如果第二幀數(shù)據(jù)到達(dá),則第二偽隨機(jī)數(shù)產(chǎn)生控制単元通過操作已經(jīng)初始化完畢的第二 S_B0X存儲(chǔ)器產(chǎn)生用于加/解密第二幀數(shù)據(jù)的密鑰流。同時(shí),根據(jù)所推斷出的第三幀數(shù)據(jù)的密鑰,由第一密鑰調(diào)度控制單元對(duì)第三S_B0X存儲(chǔ)器進(jìn)行步驟S1-S3的初始化操作。步驟S6 :第三幀數(shù)據(jù)到達(dá)時(shí),第一偽隨機(jī)數(shù)產(chǎn)生控制単元通過操作已經(jīng)初始化完畢的第三S_B0X存儲(chǔ)器產(chǎn)生用于加/解密第三幀數(shù)據(jù)的密鑰流。同時(shí),獲得所推斷出的第四幀數(shù)據(jù)的密鑰,由第二密鑰調(diào)度控制單元對(duì)第一 S_B0X存儲(chǔ)器初始化操作。偽隨機(jī)密鑰流產(chǎn)生的順序可包括(I)第一偽隨機(jī)數(shù)產(chǎn)生控制単元使用初始化完畢的S-BOXl產(chǎn)生第一幀的密鑰流,第一幀加密完成第一幀后S-BOXl即處于空閑狀態(tài),可以進(jìn)行上面提到的初始化;(2)第二偽隨機(jī)數(shù)產(chǎn)生控制單元使用初始化完畢的S-B0X2產(chǎn)生第二幀的密鑰流,之后的步驟同I)。注意這時(shí)候第I)步可能還未完成,即同時(shí)為兩個(gè)幀生成密鑰流;(3)第一偽隨機(jī)數(shù)產(chǎn)生控制単元使用初始化完畢的S-B0X3產(chǎn)生第三幀的密鑰流;(4)第二偽隨機(jī)數(shù)產(chǎn)生控制単元使用初始化完畢的S-BOXl產(chǎn)生第四幀的密鑰流。上述的RC4結(jié)構(gòu)方案中,S-BOX的交換操作是最關(guān)鍵的環(huán)節(jié)。密鑰預(yù)初始化單元與偽隨機(jī)序列產(chǎn)生單元都需要對(duì)S-BOX進(jìn)行讀寫操作以完成相應(yīng)的算法,這兩個(gè)階段對(duì)S-BOX進(jìn)行的置換操作在實(shí)現(xiàn)上是類似的,下面以偽隨機(jī)序列產(chǎn)生單元為例,詳細(xì)說明其結(jié)構(gòu)與操作方法。如圖2所示,每個(gè)S-BOX存儲(chǔ)結(jié)構(gòu)包含兩塊相同的256 X 8的雙端口 RAM (RAM_1及RAM_2)。這兩塊RAM作為鏡像RAM,在每個(gè)置換周期結(jié)束后,都完成相同的更新,從而保持內(nèi)容的完全一致。第一偽隨機(jī)數(shù)產(chǎn)生控制單元和第二偽隨機(jī)產(chǎn)生控制單元都包含四個(gè)寄存器以及一個(gè)交換控制單元RC4_CU。其中,寄存器i_reg與地址寄存器j_reg用來存放置換過程中S_B0X的地址信息;數(shù)據(jù)寄存器Si_reg與數(shù)據(jù)寄存器Sj_reg用來暫存從S-B0X讀出的內(nèi)容。RC4_CU是完成S-BOX置換操作的控制核心,按照一定的時(shí)序?qū)崿F(xiàn)近似在兩個(gè)時(shí)鐘周期完成一次S-BOX置換操作。下面以解密接收到的1000字節(jié)長(zhǎng)的802. 11幀流為例,詳細(xì)說明本發(fā)明的工作步驟步驟I :加/解密裝置獲得第一幀數(shù)據(jù)的加/解密密鑰,以及由此推斷出的第二幀 數(shù)據(jù)的密鑰,將這兩個(gè)密鑰分別填充至第一密鑰盒子及第二密鑰盒子。按照RC4算法,分別由第一密鑰調(diào)度控制單元、第二密鑰調(diào)度控制單元控制單元對(duì)第一 S_B0X存儲(chǔ)器、第二 S_BOX存儲(chǔ)器中的雙端口 RAM依次用0-255填充,該過程需要128個(gè)時(shí)鐘周期(兩個(gè)端口同時(shí)寫入)。步驟2 :按照RC4的密鑰調(diào)度算法,由第一密鑰調(diào)度控制單元和第二密鑰調(diào)度控制單元,分別對(duì)第一 S_B0X存儲(chǔ)器、第二 S_B0X存儲(chǔ)器進(jìn)行初始化,該步驟需要514個(gè)時(shí)鐘周期。步驟3 :第一偽隨機(jī)數(shù)產(chǎn)生控制單元通過操作已經(jīng)初始化完畢的第一 S_B0X存儲(chǔ)器產(chǎn)生用于加/解密第一幀數(shù)據(jù)的密鑰流,該步驟需要2002個(gè)時(shí)鐘周期。在WLAN網(wǎng)絡(luò)中,數(shù)據(jù)幀之間存在SIFS時(shí)間的間隔,在第三幀數(shù)據(jù)到達(dá)之前,第一偽隨機(jī)數(shù)產(chǎn)生控制單元能夠完成第一幀數(shù)據(jù)的解密。步驟4 :在執(zhí)行步驟3的同時(shí),第二幀數(shù)據(jù)到達(dá),第二偽隨機(jī)數(shù)產(chǎn)生控制單元通過操作已經(jīng)初始化完畢的第二 S_B0X存儲(chǔ)器產(chǎn)生用于解密第二幀數(shù)據(jù)的密鑰流。同時(shí),根據(jù)所推斷出的第三幀數(shù)據(jù)的RC4密鑰,由第一密鑰調(diào)度控制單元對(duì)第三S_B0X存儲(chǔ)器進(jìn)行步驟I、步驟2的初始化操作。第三S_B0X存儲(chǔ)器的初始化操作需要642個(gè)時(shí)鐘周期,因此在第三幀數(shù)據(jù)到來之前,第三S_B0X存儲(chǔ)器已初始化完畢。步驟5 :第三幀數(shù)據(jù)到達(dá)時(shí),第一偽隨機(jī)數(shù)產(chǎn)生控制單元通過操作已經(jīng)初始化完畢的第SS_B0X存儲(chǔ)器產(chǎn)生用于解密第三幀數(shù)據(jù)的密鑰流。同時(shí),獲得所推斷出的第四幀數(shù)據(jù)的密鑰,由第二密鑰調(diào)度控制單元對(duì)第一 S_B0X存儲(chǔ)器進(jìn)行步驟I、步驟2的初始化操作。經(jīng)過642個(gè)時(shí)鐘周期后,第一 S_B0X存儲(chǔ)器已經(jīng)使用第四幀數(shù)據(jù)的RC4加/解密密鑰初始化完畢。通過以上步驟可以看出,本發(fā)明可以完成近似每個(gè)時(shí)鐘周期I個(gè)字節(jié)的加/解密吞吐率,時(shí)鐘為160M時(shí),最高吞吐率約可達(dá)到I. 25Gbps。如圖3所示,以上第一 S-BOX存儲(chǔ)器、第二 S_B0X存儲(chǔ)器、第三S_B0X存儲(chǔ)器及第四S_B0X存儲(chǔ)器的置換操作(置換操作完成一次,生成一個(gè)字節(jié)的密鑰流,能夠?qū)σ粋€(gè)字節(jié)的明文進(jìn)行加密。如果幀長(zhǎng)為1000字節(jié),那么要進(jìn)行1000次這樣的置換操作)的步驟如下步驟I :RAM_1通過端口 A讀地址i。步驟2 :該步驟進(jìn)行兩個(gè)操作,I) RAM_1通過端口 A讀取S&),其中,j⑴為要與地址i做置換的地址,Sj⑴為S-BOX中地址j (i)存儲(chǔ)的內(nèi)容。2) RAM_2通過端口 A將Si寫入地址j (i),并保存Si的值至Si寄存器。步驟3 該步驟進(jìn)行兩個(gè)操作,I) RAM_1通過端口 A對(duì)地址i寫S」⑴,通過端口 B對(duì)地址j寫Si,完成置換。2) RAM_2通過端口 B對(duì)地址i寫入Sj⑴,通過端口 A讀地址i+1,開始下一次置換。在此步驟后,RAM_1與RAM_2皆完成第一次置換。步驟4 :設(shè)i+1對(duì)應(yīng)的置換地址為j (i+1),該步驟進(jìn)行兩個(gè)操作,I) RAM_1通過端口 A讀取Sj(i+1),RAM_1通過端口 B讀地址tl(tl = SdSj⑴),得到第一個(gè)密鑰流字節(jié)。2)RAM_2通過端口 A向地址j (i+1)寫入Si+1。步驟5 :該步驟進(jìn)行兩個(gè)操作,I) RAM_1通過端口 A對(duì)地址i+1寫入Sj(i+1),通過端口 B對(duì)地址j (i+1)寫入Si+1,完成置換。2)RAM_2通過端口 B向地址i+1寫入Sj(i+1),通過端口 A讀地址i+2,開始下一次置換。在此步驟后,RAM_1與RAM_2完成第二次置換。由上述步驟可以看出,第一次置換需要4個(gè)時(shí)鐘周期,之后的每次置換操作需要2個(gè)時(shí)鐘周期。因此,可以在514個(gè)時(shí)鐘周期內(nèi)完成密鑰調(diào)度過程(Key Scheduling)。在偽隨機(jī)序列生成階段,產(chǎn)生1000字節(jié)的偽隨機(jī)密鑰流需要2002個(gè)周期。從上述技術(shù)方案可以看出,本發(fā)明具有以下有益效果I、本發(fā)明提供的基于鏡像RAM的S-BOX置換結(jié)構(gòu)和方法,在不增加時(shí)序要求的前提下,實(shí)現(xiàn)了近似在兩個(gè)時(shí)鐘周期內(nèi)完成一次S-BOX置換操作,與傳統(tǒng)實(shí)現(xiàn)方法相比,效率提聞了 50。2、本發(fā)明提供乒乓加/解密結(jié)構(gòu)及密鑰預(yù)初始化結(jié)構(gòu)和方法,進(jìn)一步提高了本RC4加/解密裝置的吞吐率,并大大減少了加/解密幀流的延遲。3、本發(fā)明提供的RC4加解密裝置,能夠在不太高的時(shí)鐘頻率下(eg. 160MHz),滿足未來IGbps超高速無線局域網(wǎng)MAC控制器的要求,能夠直接應(yīng)用于超高速無線局域網(wǎng)中。
權(quán)利要求
1.一種實(shí)現(xiàn)RC4加/解密的裝置,其特征在于,包括用于存儲(chǔ)數(shù)據(jù)包的加/解密密鑰的第一密鑰盒子、第二密鑰盒子,及構(gòu)成數(shù)據(jù)流乒乓結(jié)構(gòu)的第一密鑰調(diào)度控制單元、第二密鑰調(diào)度控制單元、第一 S-BOX存儲(chǔ)器、第二 S-BOX存儲(chǔ)器、第三S-BOX存儲(chǔ)器、第一偽隨機(jī)序列產(chǎn)生控制單元、第二偽隨機(jī)序列產(chǎn)生控制單元;其中,所述第一 S-BOX存儲(chǔ)器、第二 S-BOX存儲(chǔ)器、第三S-BOX存儲(chǔ)器存儲(chǔ)密鑰初始化及密鑰流生成操作中間過程中的值; 所述第一密鑰調(diào)度控制單元調(diào)用所述第一密鑰盒子存儲(chǔ)的密鑰,所述第二密鑰調(diào)度控制單元調(diào)用所述第二密鑰盒子存儲(chǔ)的密鑰,按RC4算法交替對(duì)所述三個(gè)S-BOX存儲(chǔ)器中空閑的S-BOX存儲(chǔ)器進(jìn)行初始化;所述第一偽隨機(jī)數(shù)產(chǎn)生控制單元與所述第二偽隨機(jī)數(shù)產(chǎn)生控制單元,交替對(duì)所述三個(gè)S-BOX存取器中已初始化完畢的S-BOX存儲(chǔ)器進(jìn)行置換,以產(chǎn)生加/解密的偽隨機(jī)密鑰流。
2.根據(jù)權(quán)利要求I所述的裝置,其特征在于 所述第一 S-BOX存儲(chǔ)器、第二 S-BOX存儲(chǔ)器及第三S-BOX存儲(chǔ)器使用鏡像RAM存儲(chǔ)結(jié)構(gòu),均包括256 X 8的雙端口 RAM_1、256 X 8的雙端口 RAM_2、用于暫存地址的寄存器、用于暫存中間交換數(shù)據(jù)的數(shù)據(jù)寄存器以及用于控制暫存中間交換數(shù)據(jù)的交換控制單元。
3.根據(jù)權(quán)利要求I所述的裝置,其特征在于 所述第一偽隨機(jī)數(shù)產(chǎn)生控制單元、第二偽隨機(jī)數(shù)產(chǎn)生控制單元包括用來兩個(gè)存放置換過程中S_B0X的地址信息的寄存器、兩個(gè)用來暫存從S-BOX讀出內(nèi)容的寄存器及完成S-BOX置換操作控制的置換操作控制器。
4.根據(jù)權(quán)利要求I所述的裝置,其特征在于 所述RC4加密密鑰由會(huì)話密鑰、發(fā)送端MAC地址與初始化向量IV混合得到;該RC4加密密鑰長(zhǎng)度為64位或128位。
5.根據(jù)權(quán)利要求2-4任一項(xiàng)所述的裝置,其特征在于,還包括 異或門,用于將產(chǎn)生的所述偽隨機(jī)密鑰流與明文數(shù)據(jù)異或,從而產(chǎn)生密文。
6.基于權(quán)利要求5所述的一種實(shí)現(xiàn)RC4加/解密的方法,其特征在于,包括 步驟SI、獲得第n幀數(shù)據(jù)的加解密密鑰,由此推斷出第n+1幀數(shù)據(jù)的密鑰; 步驟S2、按照RC4算法,使用所述第n幀數(shù)據(jù)加解密密鑰對(duì)第一密鑰盒子進(jìn)行填充,使用第n+1幀數(shù)據(jù)的密鑰對(duì)第二密鑰盒子進(jìn)行填充; 步驟S3、按照RC4的密鑰調(diào)度算法,由第一密鑰調(diào)度控制單元和第二密鑰調(diào)度控制單元,分別對(duì)第一 S_B0X存儲(chǔ)器、第二 S_B0X存儲(chǔ)器進(jìn)行初始化; 步驟S4、通過第一偽隨機(jī)數(shù)產(chǎn)生控制單元對(duì)已經(jīng)初始化完畢的第一 S_B0X存儲(chǔ)器進(jìn)行置換,以產(chǎn)生用于加/解密的第n幀數(shù)據(jù)的偽隨機(jī)密鑰流; 步驟S5、在執(zhí)行步驟S4的同時(shí),如果第n+1幀數(shù)據(jù)到達(dá),則通過第二偽隨機(jī)數(shù)產(chǎn)生控制單元對(duì)已經(jīng)初始化完畢的第二 S_B0X存儲(chǔ)器進(jìn)行置換,以產(chǎn)生用于加/解密的第n+1幀數(shù)據(jù)的偽隨機(jī)密鑰流;同時(shí),根據(jù)所推斷出的第n+2幀數(shù)據(jù)的密鑰,由第一密鑰調(diào)度控制單元對(duì)第三S_B0X存儲(chǔ)器進(jìn)行步驟1-3的初始化操作; 步驟S6、當(dāng)?shù)趎+2幀數(shù)據(jù)到達(dá)時(shí),通過第一偽隨機(jī)數(shù)產(chǎn)生控制單元對(duì)已經(jīng)初始化完畢的第三S_B0X存儲(chǔ)器進(jìn)行置換,以產(chǎn)生用于加/解密的第n+2幀數(shù)據(jù)的偽隨機(jī)密鑰流。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述第一偽隨機(jī)數(shù)產(chǎn)生控制單元對(duì)已經(jīng)初始化完畢的第一 S_BOX存儲(chǔ)器進(jìn)行置換,以產(chǎn)生用于加/解密的第n幀數(shù)據(jù)的偽隨機(jī)密鑰流或第二偽隨機(jī)數(shù)產(chǎn)生控制單元對(duì)已經(jīng)初始化完畢的第二 S_BOX存儲(chǔ)器進(jìn)行置換,以產(chǎn)生用于加/解密的第n+1幀數(shù)據(jù)的偽隨機(jī)密鑰流或通過第一偽隨機(jī)數(shù)產(chǎn)生控制單元操作對(duì)已經(jīng)初始化完畢的第三S_BOX存儲(chǔ)器進(jìn)行置換,以產(chǎn)生用于加/解密的第n+2幀數(shù)據(jù)的密鑰流包括 步驟Al RAM_1通過端口 A讀地址i ; 步驟A2 RAM_1通過端口 A讀取Sj⑴,其中,j(i)為要與地址i做置換的地址,Sj⑴為S-BOX中地址j (i)存儲(chǔ)的內(nèi)容;RAM_2通過端口 A將Si寫入地址j (i),并保存Si的值至Si寄存器; 步驟A3 RAM_1通過端口 A對(duì)地址i寫Sm”通過端口 B對(duì)地址j寫Si,完成置換;RAM_2通過端口 B對(duì)地址i寫入S」⑴,通過端口 A讀地址i+1,開始下一次置換;步驟A4 :設(shè)i+1對(duì)應(yīng)的置換地址為j (i+1), RAM_1通過端口 A讀取Sj(i+1),RAM_1通過端口 B讀地址tl ( tl=Si+Sj⑴),得到第一個(gè)密鑰流字節(jié);RAM_2通過端口 A向地址j (i+1)與入Si+1 ; 步驟A5 RAM_1通過端口 A對(duì)地址i+1寫入Sj(i+1),通過端口 B對(duì)地址j (i+1)寫入Si+1,完成置換;RAM_2通過端口 B向地址i+1寫入Sw+1),通過端口 A讀地址i+2,開始下一次置換。
全文摘要
本發(fā)明公開了一種實(shí)現(xiàn)RC4加/解密的裝置及其方法,其中裝置包括用于存儲(chǔ)數(shù)據(jù)包的加/解密密鑰的第一密鑰盒子、第二密鑰盒子,及構(gòu)成數(shù)據(jù)流乒乓結(jié)構(gòu)的第一密鑰調(diào)度控制單元、第二密鑰調(diào)度控制單元、第一S-BOX存儲(chǔ)器、第二S-BOX存儲(chǔ)器、第三S-BOX存儲(chǔ)器、第一偽隨機(jī)序列產(chǎn)生控制單元、第二偽隨機(jī)序列產(chǎn)生控制單元。根據(jù)本發(fā)明提供的實(shí)現(xiàn)RC4加/解密的裝置及其方法,將密鑰流的生成效率提高了50%,使RC4加密引擎的吞吐率提高了一倍,同時(shí)減小了密鑰流的延遲。
文檔編號(hào)H04L9/18GK102752107SQ20111009791
公開日2012年10月24日 申請(qǐng)日期2011年4月19日 優(yōu)先權(quán)日2011年4月19日
發(fā)明者吳斌, 周玉梅, 尉志偉, 楊坤, 程鵬, 馬洪亮 申請(qǐng)人:中國(guó)科學(xué)院微電子研究所