国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于進行rc4加密的裝置和方法

      文檔序號:7947608閱讀:391來源:國知局
      專利名稱:用于進行rc4加密的裝置和方法
      版權聲明本專利文件的公開的一部分所包含的材料是受版權保護的。版權的擁有者不反對任何人以在美國專利商標局的專利文件或檔案中出現(xiàn)的方式對本專利文獻或專利公開進行復制,但是在其他不管什么方面都保留與版權有關的全部權利。
      背景1、領域本公開一般地涉及網(wǎng)絡安全,并且更具體地,涉及用于執(zhí)行RC4加密的裝置和方法。
      2、描述網(wǎng)絡使計算機和其他設備能夠進行通信。例如,網(wǎng)絡可以運載代表視頻、音頻、電子郵件等等的數(shù)據(jù)。然而,網(wǎng)絡系統(tǒng)面臨包括泄密、喪失數(shù)據(jù)完整性、身份欺騙和拒絕服務攻擊在內(nèi)的很多威脅。為了解決這些威脅,已經(jīng)開發(fā)和采用了很多手段來提高網(wǎng)絡通信的安全性。例如,Rivest Cipher 4(RC4)算法被IEEE 802.11標準的組成部分——有線等效私密性(wired equivalent privacy,WEP)選擇來保護無線保真(“WiFi”)網(wǎng)絡,并且被安全套接字層(Secure Sockets Layer,SSL)通信協(xié)議選擇來提高因特網(wǎng)上通信的安全性。
      RC4算法是一種對稱密鑰流加密算法。對稱密鑰算法是使用同一加密密鑰來對消息進行加密和解密的密碼學算法。對稱密鑰算法可以被分成流加密和塊加密。流加密對消息的位一次加密一位,而塊加密取多個位并且將它們作為單個單元進行加密。RC4加密處理工作為從一多至256字節(jié)的密鑰初始化的偽隨機數(shù)生成器。RC4加密處理生成被稱為密鑰流的字節(jié)序列。輸入文本數(shù)據(jù)(“純文本”)是通過在所述純文本和密鑰流之間執(zhí)行異或(“XOR”)操作被加密的。所述XOR操作的結果是與所述輸入文本數(shù)據(jù)對應的加密文本。解密是通過產(chǎn)生相同的密鑰流并且將其與所述加密文本進行XOR以重新產(chǎn)生所述純文本來執(zhí)行的。如果RC4加密處理以硬件實現(xiàn),則更期望使用較不復雜的硬件部件而不是較復雜的硬件部件,因為較不復雜的部件可能更普遍可獲得。同樣地,在硬件實現(xiàn)中,較小的管芯(die)面積導致較低的成本、較高的產(chǎn)量以及通常較低的功率,這些對于網(wǎng)絡通信來說是有益的。
      附圖簡要說明從本公開的以下詳細描述中,本公開的特征和優(yōu)點將變得清楚,其中

      圖1是圖示一般網(wǎng)絡系統(tǒng)的圖2示出偽碼,所述偽碼圖示RC4加密處理如何加密純文本;圖3是圖示RC4加密處理的示例性實現(xiàn)的圖;圖4是根據(jù)本發(fā)明的實施方案,圖示RC4加密處理的流水線化(pipelining)的表;圖5是根據(jù)本發(fā)明的實施方案,圖示RC4加密處理的另一示例性實現(xiàn)的圖;圖6是根據(jù)本發(fā)明的另一實施方案,圖示RC4加密處理的流水線化的表;以及圖7是網(wǎng)絡系統(tǒng)的圖。
      詳細描述本發(fā)明的實施方案包括用于執(zhí)行RC4加密的裝置和方法。RC4加密處理通過產(chǎn)生被稱為密鑰流的字節(jié)序列來進行操作。純文本是通過將所述純文本的每個字節(jié)與密鑰流的每個字節(jié)進行XOR以產(chǎn)生加密文本來被加密的。解密是通過產(chǎn)生相同的密鑰流并且將其與所述加密文本進行XOR以重新產(chǎn)生所述純文本來執(zhí)行的。RC4加密處理以256-字節(jié)狀態(tài)陣列(被稱為S-box(狀態(tài)盒))的形式維護內(nèi)部狀態(tài)和兩個索引變量i和j。S-box的初始值產(chǎn)生自共享的秘密密鑰(接收方和傳送方兩者必須具有該相同的密鑰)。密鑰流是通過處理S-box的值和i、j變量被產(chǎn)生的。在RC4加密處理的典型硬件實現(xiàn)中,S-box被儲存在寄存器文件(register file)中。因為密鑰流的一個字節(jié)的產(chǎn)生涉及對S-box儲存組件(S-box storage device)的三個讀操作和兩個寫操作,所以具有三個讀端口和兩個寫端口的寄存器文件(“3-讀/2-寫寄存器文件”)對于S-box來說是期望的。通過連同流水線化技術使用3-讀/2-寫寄存器文件來儲存S-box,密鑰流產(chǎn)生可以達到每時鐘周期一個字節(jié)的吞吐量。然而,3-讀/2-寫寄存器文件并非普遍可獲得的,因為比之具有較少讀/寫端口的寄存器文件,它們復雜并且更昂貴。根據(jù)本發(fā)明的實施方案,可以使用緩存來儲存從S-box儲存組件讀取得多個字節(jié)。以這樣的方式,每時鐘周期所要求的從S-box儲存組件的讀操作數(shù)量可以被減少,從而具有兩個讀端口和一個寫端口的寄存器文件(“2-讀/1-寫寄存器文件”)可以被用來儲存S-box。2-讀/1-寫寄存器文件比3-讀/2-寫寄存器文件更普遍且更廉價。在一個實施方案中,通過連同流水線化技術來使用緩存和2-讀/1-寫寄存器文件,RC4加密處理可以比使用3-讀/2-寫寄存器文件更高效地以硬件實現(xiàn),而不會顯著地犧牲密鑰流生成處理的吞吐量。
      在本說明書中提及本公開的“一個實施方案”或“實施方案”意味著結合該實施方案描述的特定特征、結構或特性被包括在本公開的至少一個實施方案中。因此,短語“在一個實施方案中”在整篇說明書中不同地方的出現(xiàn)不一定全是指同一實施方案。
      圖1描繪支持多個終端的一般網(wǎng)絡系統(tǒng)110。網(wǎng)絡系統(tǒng)110可以包括例如路由器、交換機和網(wǎng)橋的多種設備,以便從一個終端到另一個的數(shù)據(jù)傳遞。所述網(wǎng)絡系統(tǒng)可以是無線系統(tǒng)、以太網(wǎng)系統(tǒng)、任何其他系統(tǒng),或者不同網(wǎng)絡系統(tǒng)的組合。所述網(wǎng)絡系統(tǒng)可以采用衛(wèi)星120來幫助將一個終端連接到另一個終端。網(wǎng)絡系統(tǒng)的終端可以包括服務器(130)、桌面型計算機(140)、個人目錄助理(PDA)(150)、蜂窩電話(160)、膝上型計算機(170)或其他設備。在不同終端之間通信的數(shù)據(jù)可以包括視頻、音頻、消息(message)和其他數(shù)據(jù)。所述網(wǎng)絡系統(tǒng)可以使用WEP、SSL或用于通信安全性的其他標準。作為WEP、SSL或其他標準的組成部分,RC4加密處理可以被用于加密數(shù)據(jù)以保證保密通信和通信的完整性。
      圖2示出偽碼,所述偽碼圖示純文本是如何使用RC4加密處理被加密的。RC4加密處理基于S-box逐字節(jié)生成密鑰流。S-box的初始值生成自共享密鑰。在圖2示出的偽碼中,S[i]代表S-box的第i字節(jié)的值,并且S[j]代表S-box的第j字節(jié)的值。K代表生成的密鑰流的一個字節(jié),Ptext是純文本的一個字節(jié)而Ctext是加密文本的一個字節(jié)。在行1中,索引變量i和j被初始化為0。行2開始逐字節(jié)加密所述純文本的循環(huán)。在行3中,索引變量i的值通過將其前一值增加1被更新。在行4中,S-box的第i字節(jié)從S-box儲存組件中被讀取;并且索引變量j的值基于其前一值和S-box的第i字節(jié)的值S[i]被更新。在行5,S-box的第i字節(jié)的值和第j字節(jié)的值被交換,這涉及從S-box儲存組件讀取S-box的第j字節(jié),以及將S[i]和S[j]分別作為第j字節(jié)和第i字節(jié)寫回S-box儲存組件。在行6中,通過將S[i]和S[j]加在一起獲得第三索引t。因為S-box具有總共256個字節(jié),所以任何索引i、j或t的值必須在0到255之間(包括0和255)。這解釋了為什么在行3、4和6中獲得i、j或k時需要“模(mod)256”操作。在行7中,S-box的第t字節(jié)從S-box儲存組件中被讀取,并且被用作生成的密鑰流的當前字節(jié)K。在行8中,通過將K與純文本的當前字節(jié)Ptext進行XOR,生成針對Ptext的加密字節(jié)Ctext。行2和行8之間的操作被迭代,直到純文本中的所有字節(jié)被加密。當純文本中所有字節(jié)被處理了時,加密循環(huán)在行9中結束。解密處理與加密處理相同,除了在行8中所描述的之外,即Ctext與K進行XOR以生成Ptext。
      圖3根據(jù)本發(fā)明的實施方案,描繪使用RC4加密處理的加密處理的示例性實現(xiàn)。S-box儲存組件310儲存256字節(jié)的S-box。在一個實施方案中,S-box儲存組件可以是寄存器文件。在另一個實施方案中,S-box儲存可以由觸發(fā)器構成。當使用觸發(fā)器時,可能需要約2048個觸發(fā)器來儲存該256 S-box。比之寄存器文件,具有2048個觸發(fā)器的實現(xiàn)可能要求更大的管芯面積。密鑰流生成器320通過執(zhí)行如從圖2的行3到行7所圖示的操作來逐字節(jié)生成密鑰流。所述操作可以包括增加第一索引變量i、從S-box儲存組件讀取S-box的第i字節(jié),運算第二索引變量j,交換S-box儲存組件中S-box的第i字節(jié)和第j字節(jié),運算第三索引t以及從S-box儲存組件讀取S-box的第t字節(jié)??刂破?30控制S-box儲存組件和密鑰流生成器以每次一字節(jié)的方式產(chǎn)生密鑰流??刂破骺梢灾该鱏-box儲存組件何時使一特定字節(jié)針對讀/寫來說可獲得。S-box儲存組件還可以通知控制器一特定字節(jié)何時準備好用于讀/寫操作,從而所述控制器可以指示密鑰流生成器執(zhí)行從S-box儲存組件的讀/到S-box儲存組件的寫。此外,控制器可以幫助為任何讀/寫操作解決抵觸或糾正錯誤。XOR機制(mechanism)340在輸入數(shù)據(jù)342和密鑰流344之間執(zhí)行XOR操作,以從輸入數(shù)據(jù)產(chǎn)生加密的數(shù)據(jù)346。XOR機制在控制器的指示下以每次一字節(jié)的方式執(zhí)行XOR操作。因此,輸出的加密數(shù)據(jù)346以逐字節(jié)的方式被產(chǎn)生。
      在很多應用中,期望具有較快的加密速度,因為較慢的加密速度導致較長的延遲,并且限制網(wǎng)絡通信的帶寬。為了通過RC4加密處理提高加密速度,在一個實施方案中,密鑰流生成處理可以被流水線化。使用流水線化技術的密鑰流生成器可以每個時鐘周期產(chǎn)生密鑰流的一個字節(jié),即,密鑰流生成器可以達到每周期一個字節(jié)的吞吐量。圖4圖示5級流水線可以如何被用來為RC4加密處理生成密鑰流。為了流水線化RC4加密,密鑰生成器和控制器(如圖3中所示)可能需要被修改,以支持流水線化方案。在圖4中,“Raddrnm”表示從S-box儲存組件讀取S-box的第nm字節(jié)來生成密鑰流的第m字節(jié)Km的操作。類似地,“Waddr nm”表示在S-box的第nm字節(jié)處向S-box儲存組件進行寫操作來生成密鑰流的第m字節(jié)Km的操作。為了方便,圖4未示出伴隨每個讀操作的任何額外的操作。
      密鑰流的第一字節(jié)K1的生成開始于周期1,在周期1期間索引變量i1的值通過將初始值i0增加1獲得,并且S-box的第i1字節(jié)S[i1]從S-box儲存組件中被讀取。在周期2中,索引變量j1的值通過將j的前一值(即j的初始值j0)和S[i1]相加而被運算(即j1=(j0+S[i1]mod 256),并且隨后S-box的第j1字節(jié)S[j1]從S-box儲存組件中被讀取。此外,K2的生成開始于周期2,在周期2期間i2通過將i1增加1獲得,并且S[i2]從S-box儲存組件中被讀取。在周期3中,S[j1]被寫回S-box儲存組件以替代S-box的第i1字節(jié);j2被獲得(j2=(j1+S[i2])mod 256),并且S[j2]從S-box儲存組件中被讀?。徊⑶襅3的生成以獲得i3(=(i2+1)mod 256)和從S-box儲存組件讀取S[i3]開始。在周期4中,S[i1]被寫回S-box儲存組件以替代S-box的第j1字節(jié);S[j2]被寫回S-box儲存組件以替代S-box的第i2字節(jié);j3被獲得(j3=(j2+S[i3])mod 256),并且S[j2]從S-box儲存組件中被讀取;并且K4的生成以獲得i4(=(i3+1)mod 256)和從S-box儲存組件讀取S[i4]開始。在周期5中,索引變量t1的值被獲得(t1=S[i1]+S[j1]mod 256),并且S[t1]從S-box儲存組件被讀??;S[i2]被寫回S-box儲存組件以替代S-box的第j2字節(jié);S[j3]被寫回S-box儲存組件以替代S-box的第j3字節(jié);j4被獲得(j4=(j3+S[i4])mod 256),并且S[j4]從S-box儲存組件中被讀取;并且K5的生成以獲得i5(=(i3+1)mod 256)和從S-box儲存組件讀取S[i5]開始。在周期5結束時,密鑰流的第一字節(jié)K1(=S[t1])被生成,所述K1可以被用來在周期6中加密輸入數(shù)據(jù)的第一字節(jié)。從周期5之后(包括周期5),在每個周期上三個讀操作和兩個寫操作被同時執(zhí)行。此外,從周期5再往后,在每個周期結束時,密鑰流的一個字節(jié)被生成。當要被生成的密鑰流包括很多字節(jié)時,密鑰流生成處理的吞吐量約為每周期一字節(jié)(在頭4個周期內(nèi)沒有密鑰流的字節(jié)被生成)。
      如圖4中所示,通過使用五級流水線,RC4加密處理的實現(xiàn)可以達到對于密鑰流生成器來說每周期一字節(jié)的吞吐量。這樣的途徑要求每個周期三個讀操作和兩個寫操作。典型地,用于RC4算法的S-box被儲存在寄存器文件中。使用如圖4所圖示的五級流水線將要求具有三個讀端口和兩個寫端口的寄存器文件(“3-讀/2-寫寄存器文件”)。3-讀/2-寫寄存器文件并非普遍可獲得的,因為比之具有較少讀/寫端口的寄存器文件,它們是復雜的,并且耗費大量的管芯面積。3-讀/2-寫寄存器文件可能甚至限制RC4加密處理可以在其上工作的頻率。替換性途徑是使用于RC4加密處理的密鑰流生成流水線化,而使用2-讀/1-寫寄存器文件來儲存S-box。然而,這樣的替換性途徑可能顯著地降低密鑰流生成的吞吐量。
      從圖2中注意到,索引變量i的值在每次迭代后遞增,這意味著在連續(xù)的迭代上S[i]從S-box儲存組件中的連續(xù)位置(字節(jié))被讀取/被寫到S-box儲存組件中的連續(xù)位置(字節(jié))。同樣地,使用RC4算法的加密操作通常是在多字節(jié)消息上被執(zhí)行的,并且因此如圖2所示的該算法的多次迭代被執(zhí)行以生成具有多個字節(jié)的密鑰流。因此,可以每次從寄存器文件中讀取S-box的幾個字節(jié)并且儲存在緩存中。每次從寄存器文件中被讀取的字節(jié)數(shù)量可以不同(例如,它可以是4或8)。緩存可以由觸發(fā)器構成。為了描述的方便,假設緩存的大小為8字節(jié),即每次可以從S-box儲存組件讀取S-box的8個字節(jié)。這將允許密鑰流生成器從緩存讀取/向緩存寫用于之后8次迭代(如圖2中所示)的S[i],以生成密鑰流的8個字節(jié)。在第8次迭代結束時,緩存中的8個字節(jié)在一次操作中被寫回寄存器文件。使用該途徑,2-讀/1-寫寄存器文件可以被用來儲存S-box,并且RC4算法可以仍舊能夠達到對于密鑰流生成來說接近每周期一字節(jié)的吞吐量。
      圖5描繪連同N-字節(jié)緩存(N可以為任何數(shù))使用2-讀/1-寫寄存器文件的RC4加密處理的實現(xiàn)的實施方案。S-box儲存組件510可以是2-讀/1-寫寄存器文件。S-box儲存組件具有兩個讀端口512和514以及一個寫端口516。用于讀端口512、514和寫端口516的地址分別由控制器540通過線502、504和506提供。緩存寫機制520可以從S-box儲存組件讀取N個字節(jié)并且將它們寫到緩存530。在一個實施方案中,緩存寫機制可以被集成到緩存中。緩存儲存從S-box儲存組件讀取的、用于生成密鑰流的N個字節(jié)的S-box的N個字節(jié)。在連續(xù)的迭代上,S[i]從S-box中連續(xù)的位置被讀取并且被寫到S-box中連續(xù)的位置。因為S[i]在RC4加密處理的連續(xù)迭代之間的可預測性,S-box的N個連續(xù)字節(jié)可以從S-box儲存組件被讀取,并且被儲存在緩存530中,從而對于RC4加密處理的后N次迭代來說,S[i]可以直接從緩存被讀取并且直接被寫到緩存。
      圖5中的密鑰生成器在每次迭代結束時生成密鑰流的一個字節(jié)??刂破?40控制S-box儲存組件、緩存寫機制、緩存、密鑰生成器和XOR機制590,從而它們可以一起工作來為輸入數(shù)據(jù)以逐字節(jié)的方式產(chǎn)生加密的輸出數(shù)據(jù)。密鑰生成器550包括第一選擇器555、第二選擇器560、第三選擇器565、第一加法器570、第二加法器575、交換機制585和調度器580。在來自控制器的指示下,第一選擇器555在來自緩存530的N個S-box字節(jié)(532)之間為RC4加密處理的當前迭代選擇S[i]。在來自控制器的指示下,第一加法器570將來自前一迭代的j值(584)與由第一選擇器所選擇的S[i]的值(562)相加,以產(chǎn)生用于當前迭代的j值(588)。在來自控制器的指示下,調度器580可以在第一迭代之前將i和j的值初始化為0;通過遞增來自前一迭代的i值來向第一選擇器提供用于當前迭代的i值(582);并且向第一加法器提供來自前一迭代的j值(584)。此外,由第一加法器產(chǎn)生的用于當前迭代的j值(588)被發(fā)送到調度器,從而調度器可以請求控制器540獲得用于當前迭代的S[j]。S[j]當前在緩存中是可能的。因為儲存在緩存中的S-box的N個字節(jié)代表這些字節(jié)的最新版本,所以如果緩存和S-box儲存組件兩者均包含S[j],則控制器將指示從緩存而不是從S-box儲存組件中讀取S[j]。在控制器的控制下,第二選擇器560在儲存于緩存中的多個字節(jié)和讀取自S-box儲存組件的那個字節(jié)(如果存在任何的話)中選擇一個字節(jié)作為S[j]。
      在控制器的控制下,由第二選擇器選擇的S[j](562)隨后通過交換機制585與由第一選擇器選擇的S[i](552)交換。在交換處理期間,S[j](在圖5中被示為564)通過緩存寫機制520被寫到緩存530,以替代S[i]。與此同時,如果用于當前迭代的S[j]是來自S-box儲存組件,則S[i](在圖5中被示為554)被寫回S-box儲存組件以替代S[j]。另一方面,如果S[j]曾讀取自緩存,則S[i]被寫回緩存以替代S[j]。此外,分別由第一和第二選擇器所選擇的S[i]和S[j]的值被加在一起以產(chǎn)生用于第三索引變量t的值(586)。t值(586)被發(fā)送到調度器580,從而調度器可以請求控制器獲得用于當前迭代的S[t]。S[t]當前在緩存中是可能的。因為儲存在緩存中的S-box的N個字節(jié)代表這些字節(jié)的最新版本(緩存中的字節(jié)在密鑰流生成處理期間被更新),所以如果緩存和S-box儲存組件兩者均包含S[t],則控制器將指示從緩存而不是從S-box儲存組件中讀取S[t]。在控制器的控制下,第三選擇器565在儲存于緩存中的多個字節(jié)和讀取自S-box儲存組件的那個字節(jié)(如果存在任何的話)中選擇一個字節(jié)作為S[t]。由第三選擇器選擇的S[t](592)是密鑰流的用于當前迭代的字節(jié)K。隨后,K通過XOR機制590與輸入數(shù)據(jù)的對應字(594)進行XOR,以產(chǎn)生針對輸入數(shù)據(jù)的該字節(jié)的加密的字節(jié)596。
      因為所有S-box索引變量i、j和t的值在0和255之間,包括0和255(假設S-box具有總共256個字節(jié);并且如果S-box具有總共M個字節(jié),則j的值應該在0和M-1之間),所以由調度器執(zhí)行的遞增操作和由第一和第二加法器執(zhí)行的加法操作全部都是以256為模(“mod 256”)或“mod M”的操作。在N次迭代之后,緩存中的N個字節(jié)可以被寫回S-box。注意,被寫回的N個字節(jié)的值可以與N次迭代開始之前從S-box儲存組件最初讀取的N個字節(jié)的值不同。
      圖6圖示三級流水線可以如何被用來為圖5中示出的實施方案生成密鑰流。為了流水線化密鑰流生成,如圖5中示出的控制器540和密鑰生成器550(特別地,調度器580)可能需要被修改,從而當可能時,每次迭代可以在每個時鐘周期上開始。在圖6中,“Raddrnm”表示從S-box儲存組件讀取S-box的第nm字節(jié)來生成密鑰流的第m字節(jié)Km的操作?!癢addr nm”表示在S-box的第nm字節(jié)處向S-box儲存組件進行寫操作來生成密鑰流的第m字節(jié)Km的操作?!癛addrnm-nl”表示從S-box儲存組件讀取S-box的從第nm字節(jié)開始的N個順序字節(jié)到緩存來生成密鑰流的第m到第l字節(jié)Km到Kl的操作(其中N是緩存的大小,并且l=m+N-1)?!癢addr nm-nl”表示將N個字節(jié)從緩存寫到S-box儲存組件來替代最初讀取自S-box儲存組件的N個順序字節(jié)以生成Km到Kl的操作(其中N是緩存的大小,并且l=m+N-1)。為了方便,圖6未示出伴隨每個讀操作的任何額外的操作。典型地,緩存的大小與寄存器文件的行大小(line size)相同,所述行大小可以為4字節(jié)、8字節(jié)、16字節(jié)或任何其他數(shù)。圖6假設緩存的大小為8字節(jié),從而每次可以讀取來自S-box儲存組件的8個順序字節(jié),并且儲存在緩存中。
      如圖6中所示,在周期1中,索引變量i1的值通過將初始值i0增加1獲得;并且S-box儲存組件中從第i1字節(jié)開始的8個順序字節(jié)被讀到緩存。在周期2中,索引變量j1的值通過將j的前一值(即j的初始值j0)和S[i1]相加而被運算(即j1=(j0+S[i1])mod 256),并且隨后如果S-box的第j1字節(jié)S[j1]在緩存中,則S[j1]從緩存中被讀取,否則S[j1]從S-box儲存組件中被讀取。在周期3中,S[j1]被寫到緩存以替代S-box的第i1字節(jié),并且如果S[j1]曾是在周期2中從緩存讀取的,則S[i1]被寫到緩存以替代S[j1],否則S[i1]被寫回S-box儲存組件以替代S[j1];j2被獲得(j2=(j1+S[i2])mod 256),并且如果S[j2]在緩存中,則S[j2]從緩存中被讀取,否則S[j2]從S-box儲存組件中被讀取;并且索引變量t1的值被獲得(t1=S[i1]+S[j1] mod 256),并且如果S[t1]在緩存中,則S[t1]從緩存中被讀取,否則S[t1]從S-box儲存組件中被讀取。在周期3結束時,密鑰流的第一字節(jié)K1(=S[t1])被生成,所述K1可以被用來加密輸入數(shù)據(jù)的第一字節(jié)。從周期3到周期10(包括周期3和周期10),在每個周期上兩個讀操作和一個寫操作被同時執(zhí)行;并且在每個周期結束時,密鑰流的一個字節(jié)被生成。
      在周期9之后,緩存中的所有8個字節(jié)已經(jīng)被讀取并被用來生成用于索引變量j的值,所述8個字節(jié)是曾在周期1中讀取自S-box儲存組件。在周期10中,S-box中從第i9字節(jié)(i9=i8+1=i1+8)開始的另外8個順序字節(jié)通過緩存寫機制從S-box儲存組件讀到緩存,在當前處于緩存中的字節(jié)被寫回S-box儲存組件之前,所述緩存暫時保存這些新近讀取的8個字節(jié)。同樣地,在周期10中,S[j8]被寫到緩存以替代S-box的第i8字節(jié),并且如果S[j8]曾是在周期9中從緩存讀取的,則S[i8]被寫到緩存以替代S[i8],否則S[i8]被寫回S-box儲存組件以替代那里的S[j8];并且t8被獲得(t8=S[i8]+S[j8]mod 256),并且如果S[t8]在緩存中,則S[t8]從緩存中被讀取,否則S[t8]從S-box儲存組件中被讀取。在周期11中,當前處于緩存中的8個字節(jié)可以被寫回S-box儲存組件以替代從第i1到第i8的字節(jié)(由于交換操作,正被寫回的字節(jié)可以不是與最初讀取自S-box儲存組件中相同位置的那些字節(jié)相同的)。隨后,在周期9中新近讀取的8個順序字節(jié)可以從緩存寫機制被移動到緩存。同樣地,在周期11中,j9被獲得(j9=(j8+S[i9])mod 256,在周期9中當8個字節(jié)曾讀取自S-box儲存組件時,S[i9]的值可以被獲得),并且S[j2]從S-box儲存組件被讀取。在從周期12開始的下8個周期中,兩個讀操作和一個寫操作將被執(zhí)行,并且在每個周期中密鑰流的一個字節(jié)可以被生成??傊?,使用如圖6中所圖示的三級流水線,本發(fā)明的實施方案可以達到對于密鑰流生成來說每9個周期8個字節(jié)的吞吐量。該吞吐量接近每周期一個字節(jié)。
      圖7描繪可以執(zhí)行RC4加密的網(wǎng)絡系統(tǒng)。所述系統(tǒng)可以包括通過交換結構710(例如縱橫結構或共享的存儲器交換結構)互連的線卡集合720(“刀片(blade)”)。各個線卡可以位于相同的物理位置或不同的物理位置(例如,不同城市)。所述交換結構例如可以遵循通用交換接口(CSIX)或其他結構技術,例如HyperTransport、Infiniband、外設部件互連(PCI)、基于SONET(同步光網(wǎng)絡)的分組傳輸、RapidIO和/或UTOPIA(用于ATM的通用測試和操作PHY(物理層)接口)。
      各個線卡(例如720A)可以包括一個或更多個處理網(wǎng)絡連接上的通信的物理層(PHY)設備722(例如光、有線和無線PHY)。PHY在不同網(wǎng)絡介質運載的物理信號和數(shù)字系統(tǒng)所使用的位(例如“0”和“1”)之間進行翻譯。線卡720還可以包括成幀器設備(例如,以太網(wǎng)、同步光網(wǎng)絡(SONET)、高級數(shù)據(jù)鏈路(HDLC)成幀器或其他的“層2”設備)724,所述成幀器設備可以對幀進行例如檢錯和/或糾錯的操作。示出的線卡720還可以包括一個或更多個網(wǎng)絡處理器726,所述網(wǎng)絡處理器726對通過一個或多個PHY 722接收到的分組(packet)執(zhí)行分組處理操作,并且經(jīng)由交換結構710將該分組引導到提供出口接口的線卡以轉發(fā)該分組。潛在地,一個或多個網(wǎng)絡處理器726可以代替成幀器設備724來履行“層2”的職責。
      一個或多個網(wǎng)絡處理器726可以是Intel因特網(wǎng)交換網(wǎng)絡處理器(IXP)或其他以不同設計為特征的網(wǎng)絡處理器。所述網(wǎng)絡處理器以在單個集成電路上的分組處理引擎集合為特征。各個引擎可以提供多個執(zhí)行線程。另外,網(wǎng)絡處理器包括核心處理器(所述核心處理器通常被編程來完成在網(wǎng)絡操作中所涉及的“控制面”的任務。然而,核心處理器也可以處理“數(shù)據(jù)面”的任務。網(wǎng)絡處理器726還以至少一個可以在處理器和其他網(wǎng)絡部件之間運載分組的接口為特征。例如,所述處理器可以以交換結構接口710為特征,所述交換結構接口710使得處理器726能夠向與所述結構相連的其他處理器或電路發(fā)送分組。處理器726還可以以使得處理器能夠與物理層(PHY)和/或鏈路層設備(例如MAC或成幀器設備)通信的接口為特征。處理器726還包括例如與主機或其他網(wǎng)絡處理器進行通信的接口(例如,外設部件互連(PCI)總線接口)。此外,處理器726還可以包括被引擎共享的其他部件,例如存儲器控制器、哈希引擎和內(nèi)部便箋式存儲器。
      如圖7中所示,每個線卡720可以以可操作的方式與至少一個執(zhí)行RC4加密的RC4模塊730(例如730A)耦合。在一個實施方案中,RC4模塊可以與線卡分離。在另一個實施方案中,RC4模塊可以與線卡集成。同樣,在一個實施方案中,RC4模塊可以是網(wǎng)絡處理器726的部分或PHY 722的部分。在再一個實施方案中,RC4模塊可以位于諸如鏈路層、網(wǎng)絡層和/或應用層的其他的網(wǎng)絡層次中。
      雖然參考圖1-7描述了本公開的示例性實施方案,但是本領域的普通技術人員將容易明白,可以替換地使用實現(xiàn)本公開的很多其他方法。例如,可以改變功能塊或處理過程的執(zhí)行順序,和/或可以改變、取消或組合所描述的功能塊或處理過程的一些。
      在以上描述中,已經(jīng)描述了本發(fā)明的不同方面。出于解釋的目的,闡述了具體的數(shù)量、系統(tǒng)和配置,以提供對本發(fā)明的完整理解。然而,獲知本公開的本領域的技術人員將會清楚,沒有這些具體的細節(jié)也可以實踐本公開。此外,為了不使本公開變得模糊,省略、簡化、組合或分離了公知的特征、部件或模塊。
      這里所描述的本公開的實施方案可以用電路來實現(xiàn),所述包括硬連線電路、數(shù)字電路、模擬電路、可編程電路等。它們也可以用計算機程序來實現(xiàn)。這樣的計算機程序可以用高級程序性語言或面向對象的編程語言來編寫。然而,如果期望的話,也可以用匯編語言或機器語言來實現(xiàn)所述程序。語言可以被編譯或解譯。另外,這些技術可以用在各種連網(wǎng)環(huán)境中。這樣的計算機程序可以被存儲在通用或專用可編程處理系統(tǒng)可讀的存儲介質或設備(例如硬盤驅動器、軟盤驅動器、只讀存儲器(ROM)、CD-ROM設備、閃存存儲器設備、數(shù)字多用途盤(DVD)或其他儲存設備)上,用于當所述儲存介質或設備由處理系統(tǒng)讀取時,配置并運行該處理系統(tǒng)來執(zhí)行這里所描述的過程。本公開的實施方案還可以被實現(xiàn)為機器可讀存儲介質,被配置來與處理系統(tǒng)一起使用,其中儲存介質被配置為導致處理系統(tǒng)以專門的和預定的方式來運行,以實現(xiàn)這里所描述的功能。
      雖然已參考圖示說明性的實施方案描述了本公開,但是該描述不想被理解為限制性的。對于本公開所屬領域的技術人員來說所清楚的對所述圖示說明性實施方案的各種修改以及本公開的其他實施方案都被視為落入本公開的精神和范圍內(nèi)。
      權利要求
      1.一種用于執(zhí)行RC4加密的裝置,包括字節(jié)陣列儲存組件,所述字節(jié)陣列儲存組件用于儲存字節(jié)陣列;緩存,所述緩存用于儲存讀取自所述字節(jié)陣列儲存組件的所述字節(jié)陣列的多個字節(jié);以及密鑰生成器,所述密鑰生成器用于基于被儲存在所述字節(jié)陣列儲存組件和所述緩存中的至少一個中的數(shù)據(jù)來生成用于對輸入數(shù)據(jù)進行加密的密鑰流。
      2.如權利要求1所述的裝置,其中所述字節(jié)陣列的初始值是從被網(wǎng)絡系統(tǒng)中的接收方和傳送方共享的秘密密鑰生成的。
      3.如權利要求1所述的裝置,其中所述字節(jié)陣列儲存組件包括2-讀和1-寫寄存器文件。
      4.如權利要求1所述的裝置,還包括控制器,所述控制器用于控制所述字節(jié)陣列儲存組件、所述緩存和所述密鑰生成器來流水線化所述密鑰流的生成。
      5.如權利要求1所述的裝置,還包括XOR機制,所述XOR機制用于在控制器的控制下將所述輸入數(shù)據(jù)與所述密鑰流以逐字節(jié)的方式進行XOR,以生成針對所述輸入數(shù)據(jù)的加密版本。
      6.如權利要求1所述的裝置,其中所述密鑰生成器在控制器的控制下以逐字節(jié)的方式生成所述密鑰流。
      7.如權利要求4所述的裝置,其中所述控制器在讀/寫操作期間檢測并解決所述字節(jié)陣列儲存組件和所述緩存之間的沖突。
      8.如權利要求1所述的裝置,其中所述密鑰生成器包括第一選擇器,所述第一選擇器用于基于第一索引從所述緩存選擇所述字節(jié)陣列中的第一字節(jié);第一加法器,所述第一加法器用于至少部分地基于所述第一字節(jié)的值獲得第二索引;第二選擇器,所述第二選擇器用于基于所述第二索引從所述字節(jié)陣列儲存組件和所述緩存中的至少一個中選擇所述字節(jié)陣列中的第二字節(jié);交換機制,所述交換機制用于交換所述第一字節(jié)和所述第二字節(jié)的值;第二加法器,所述第二加法器用于至少部分地基于所述第一字節(jié)和所述第二字節(jié)的值獲得第三索引;以及第三選擇器,所述第三選擇器用于基于所述第三索引從所述字節(jié)陣列儲存組件和所述緩存中的至少一個中選擇所述字節(jié)陣列中的第三字節(jié)。
      9.如權利要求8所述的裝置,還包括調度器,所述調度器用于為所述第一索引和所述第二索引提供初始值,為所述第一索引執(zhí)行遞增操作,并且為所述第一加法器提供一個輸入數(shù)據(jù)。
      10.如權利要求9所述的裝置,其中所述調度器與所述控制器協(xié)調來為所述字節(jié)陣列儲存組件和所述緩存中的至少一個提供讀/寫地址。
      11.如權利要求9所述的裝置,其中所述調度器與所述控制器協(xié)調來流水線化密鑰流生成。
      12.如權利要求1所述的裝置,還包括緩存寫機制,所述緩存寫機制用于便于將字節(jié)從所述字節(jié)陣列儲存組件寫到所述緩存的操作。
      13.一種用于執(zhí)行RC4加密的方法,包括接收輸入數(shù)據(jù);將字節(jié)陣列中的多個字節(jié)從字節(jié)陣列儲存組件讀到緩存;初始化第一索引和第二索引,所述第一索引和第二索引用于訪問被儲存在所述字節(jié)陣列儲存組件和所述緩存中的至少一個中的所述字節(jié)陣列的字節(jié);以及針對所述輸入數(shù)據(jù)的每個字節(jié)生成密鑰流的字節(jié),以及至少部分地基于所述密鑰流的所述字節(jié),產(chǎn)生針對所述輸入數(shù)據(jù)的所述字節(jié)的加密字節(jié)。
      14.如權利要求13所述的方法,其中針對所述輸入數(shù)據(jù)的每個字節(jié)的處理被流水線化,從而在第一迭代被完成之前第二迭代可以開始。
      15.如權利要求13所述的方法,其中生成所述密鑰流的所述字節(jié)的操作包括更新所述第一索引;基于所述第一索引,從所述緩存讀取所述字節(jié)陣列中的第一字節(jié);至少部分地基于所述第一字節(jié)更新所述第二索引;基于所述第二索引,從所述字節(jié)陣列儲存組件和所述緩存中的至少一個中讀取所述字節(jié)陣列中的第二字節(jié);交換所述第一字節(jié)和所述第二字節(jié);基于所述第一字節(jié)和所述第二字節(jié)運算第三索引;以及基于所述第三索引從所述字節(jié)陣列儲存組件和所述緩存中的至少一個中讀取所述字節(jié)陣列中的第三字節(jié)。
      16.如權利要求15所述的方法,其中更新所述第一索引的操作包括遞增所述第一索引在前一迭代期間的值,以所述字節(jié)陣列中的字節(jié)數(shù)量為模。
      17.如權利要求15所述的方法,其中更新所述第二索引的操作包括將所述第二索引在前一迭代期間的值與所述第一字節(jié)的值相加,以所述字節(jié)陣列中的所述字節(jié)數(shù)量為模。
      18.如權利要求15所述的方法,其中運算所述第三索引的操作包括將所述第一字節(jié)的值和所述第二字節(jié)的值相加,以所述字節(jié)陣列中的所述字節(jié)數(shù)量為模。
      19.如權利要求15所述的方法,其中交換所述第一字節(jié)和所述第二字節(jié)的操作包括在所述緩存中寫所述第二字節(jié)以替代所述第一字節(jié),以及在所述字節(jié)陣列儲存組件和所述緩存的至少一個中寫所述第一字節(jié)以替代所述第二字節(jié)。
      20.如權利要求13所述的方法,其中產(chǎn)生所述加密字節(jié)的操作包括在所述第三字節(jié)和所述輸入數(shù)據(jù)的所述字節(jié)之間執(zhí)行XOR操作。
      21.如權利要求13所述的方法,還包括在所述緩存中的所述多個字節(jié)已經(jīng)被使用過之后,從所述字節(jié)陣列儲存組件讀取所述字節(jié)陣列中另外的多個字節(jié),并且針對所述輸入數(shù)據(jù)的每個剩余字節(jié)繼續(xù)處理。
      22.如權利要求13所述的方法,還包括在所述緩存中的所述字節(jié)已經(jīng)被用于更新所述第二索引的值之后,將所述緩存中的字節(jié)寫回所述字節(jié)陣列儲存組件。
      23.如權利要求13所述的方法,還包括檢測并解決在讀操作和寫操作的至少一種中所述字節(jié)陣列儲存組件和所述緩存之間的沖突。
      24.一種網(wǎng)絡系統(tǒng),包括交換結構;通過所述交換結構互連的多個線卡;以及多個RC4模塊,每個所述RC4模塊以可操作的方式與線卡耦合以執(zhí)行RC4加密,RC模塊包括字節(jié)陣列儲存組件,所述字節(jié)陣列用于儲存組件儲存字節(jié)陣列;緩存,所述緩存用于儲存讀取自所述字節(jié)陣列儲存組件的所述字節(jié)陣列的多個字節(jié);以及密鑰生成器,所述密鑰生成器用于基于被儲存在所述字節(jié)陣列儲存組件和所述緩存中的至少一個中的數(shù)據(jù)來生成用于對輸入數(shù)據(jù)進行加密的密鑰流。
      25.如權利要求24所述的網(wǎng)絡系統(tǒng),其中所述字節(jié)陣列的初始值是從被所述網(wǎng)絡系統(tǒng)中的接收方和傳送方共享的秘密密鑰生成的。
      26.如權利要求24所述的網(wǎng)絡系統(tǒng),其中所述字節(jié)陣列儲存組件包括2-讀和1-寫寄存器文件。
      27.如權利要求24所述的網(wǎng)絡系統(tǒng),還包括控制器,所述控制器用于控制所述字節(jié)陣列儲存組件、所述緩存和所述密鑰生成器來流水線化所述密鑰流的生成。
      28.如權利要求24所述的網(wǎng)絡系統(tǒng),還包括XOR機制,所述XOR機制用于在控制器的控制下將所述輸入數(shù)據(jù)與所述密鑰流以逐字節(jié)的方式進行XOR,以生成針對所述輸入數(shù)據(jù)的加密版本。
      29.如權利要求24所述的網(wǎng)絡系統(tǒng),其中所述密鑰生成器在控制器的控制下以逐字節(jié)的方式生成所述密鑰流。
      30.如權利要求27所述的網(wǎng)絡系統(tǒng),其中所述控制器在讀/寫操作期間檢測并解決所述字節(jié)陣列儲存組件和所述緩存之間的沖突。
      31.如權利要求24所述的網(wǎng)絡系統(tǒng),其中所述密鑰生成器包括第一選擇器,所述第一選擇器用于基于第一索引從所述緩存選擇所述字節(jié)陣列中的第一字節(jié);第一加法器,所述第一加法器用于至少部分地基于所述第一字節(jié)的值獲得第二索引;第二選擇器,所述第二選擇器用于基于所述第二索引從所述字節(jié)陣列儲存組件和所述緩存中的至少一個中選擇所述字節(jié)陣列中的第二字節(jié);交換機制,所述交換機制用于交換所述第一字節(jié)和所述第二字節(jié)的值;第二加法器,所述第二加法器用于至少部分地基于所述第一字節(jié)和所述第二字節(jié)的值獲得第三索引;以及第三選擇器,所述第三選擇器用于基于所述第三索引從所述字節(jié)陣列儲存組件和所述緩存中的至少一個中選擇所述字節(jié)陣列中的第三字節(jié)。
      32.如權利要求31所述的網(wǎng)絡系統(tǒng),還包括調度器,所述調度器用于為所述第一索引和所述第二索引提供初始值,為所述第一索引執(zhí)行遞增操作,并且為所述第一加法器提供一個輸入數(shù)據(jù)。
      33.如權利要求32所述的網(wǎng)絡系統(tǒng),其中所述調度器與所述控制器協(xié)調來為所述字節(jié)陣列儲存組件和所述緩存中的至少一個提供讀/寫地址。
      34.如權利要求32所述的網(wǎng)絡系統(tǒng),其中所述調度器與所述控制器協(xié)調來流水線化密鑰流生成。
      35.如權利要求24所述的網(wǎng)絡系統(tǒng),還包括緩存寫機制,所述緩存寫機制用于便于將字節(jié)從所述字節(jié)陣列儲存組件寫到所述緩存的操作。
      全文摘要
      提供一種用于執(zhí)行RC4加密的方案。所述方案包括基于被稱為S-box的字節(jié)狀態(tài)陣列來流水線化密鑰流的生成的裝置和方法,所述S-box初始形成自被網(wǎng)絡系統(tǒng)中的接收方和傳送方共享的密鑰。所述S-box被儲存在儲存組件中,所述儲存組件可以是具有兩個讀端口和一個寫端口的寄存器文件。AI緩存被用來儲存讀取自所述S-box儲存組件的多個字節(jié)。
      文檔編號H04L9/00GK1973481SQ200580021106
      公開日2007年5月30日 申請日期2005年4月8日 優(yōu)先權日2004年4月27日
      發(fā)明者卡馬爾·科沙爾, 雅羅斯勞·西迪爾 申請人:英特爾公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1