專利名稱:序列密碼加密系統中控制密鑰序列的方法與裝置的制作方法
技術領域:
本發明涉及加密,特別是指在序列密碼加密系統中對密鑰序列進行控制的方法和裝置。
背景技術:
加密是指對數據進行變換,使之除了對目標接收者外,變得無法或者難以理解。對數字化的數據進行加密的一種方法是采用序列密碼(或流密碼,stream cipher)。通常,序列密碼將數據與密鑰序列(或密鑰流,keystream;或加密比特流,encryption bit stream),采用異或(exclusive-or,XOR)運算而結合在一起,從而獲得密文(即,被加密了的數據)。解密則是生成與發送者同樣的密鑰序列以及從被加密了的數據中移除密鑰序列的過程。如果異或操作在發送者加密數據時被執行,則同樣的異或操作也在接收者解密數據時被執行。
序列密碼在數據的安全傳輸與存儲中有著廣泛的應用。比如,在計算機系統中采用的RC4序列密碼加密技術;高通公司(QUALCOMM,Incorporated)提出的用于碼分多址(CDMA)無線電話系統的序列密碼加密技術(美國專利,專利號6510228);等等。
序列密碼加密的性能是一個需要著重考慮的方面。雖然加密過程中與數據實施異或操作是一種簡單的運算,但生成密鑰序列的過程則需要一定的代價。在一個系統中,如果序列密碼加密功能與其它應用功能共享一個共同的系統資源或計算實體(比如,在通常的計算機系統中基于軟件程序實現RC4序列密碼加密功能時,RC4的相關功能是與系統中其它應用共同由該計算機系統的CPU完成的),那么對系統資源的共享過程會使得(1)完成序列密碼功能所需的代價會影響其它應用的性能;(2)其它應用也會影響序列密碼加密功能完成加密的速度。在某些情況下,例如當系統的工作負載很小時,這種相互影響是細微的。但在某些情況下,例如當系統的工作負載很大時,這種相互影響會變得顯著。舉例來說,如果一個計算機系統的CPU正處于繁忙的狀態中(比如,正在計算一個復雜的矩陣),那么此時的加密請求(比如,加密矩陣計算的中間結果)將會比其它時候(比如,當CPU不處于繁忙狀態時加密同樣數量的數據)需要更多的延遲才能完成,因為可供加密功能使用的CPU時間減少了。另外,即使序列密碼的功能與其它應用是由系統中不同的實體完成的(比如,加密功能是由單獨的加密協處理器完成的),當生成密鑰序列的速度小于待加密數據生成的速度時,也會延遲數據的加密過程。
現有的序列密碼加密的性能優化技術主要致力于如何降低總體運行代價;比如,通過硬件結構的改進、更好的軟件編程方法和技術,可以使得同樣的序列密碼算法在更少的指令周期內完成其全部工作。但是,在序列密碼加密過程的總體代價已確定后,系統中存在的其它應用對系統資源的爭用會使得序列密碼加密功能完成加密需要更長的時間(比如,當序列密碼加密功能與其它應用功能共享同一系統資源時),或者由于待加密數據生成的帶寬更大而不得不引入額外的等待(比如,當序列密碼加密功能使用與其它應用功能不同的系統資源或使用單獨的資源,但生成密鑰序列的帶寬低于待加密數據生成的帶寬時)。因此,如果能夠有效地消除或減小這些因素所帶來的影響,序列密碼加密將具有更好的性能表現。
發明內容
本發明的目的在于給出序列密碼加密系統中,為提高加密的性能而對密鑰序列進行預先生成并緩存的方法和裝置。
為實現本發明的目的,本發明所采用的技術方案是使用一個密鑰序列緩沖區來存儲密鑰序列;超前于待加密數據準備就緒來預先生成密鑰序列并以之填充密鑰序列緩沖區;利用系統空閑或系統不繁忙的時候來預先生成密鑰序列并以之填充密鑰序列緩沖區;響應加密請求而對數據實施加密時直接從密鑰序列緩沖區獲取所需的全部或部分密鑰序列。
在為實現本發明的目的所采用的技術方案中,密鑰序列緩沖區是以先進先出的方式進行存取操作的。
在為實現本發明的目的所采用的技術方案中,預先生成密鑰序列并以之填充密鑰序列緩沖區的過程可以通過對系統資源使用情況的監控來控制。
在為實現本發明的目的所采用的技術方案中,預先生成密鑰序列并以之填充密鑰序列緩沖區的過程可以通過調整密鑰序列生成和密鑰序列緩沖區填充所對應程序的優先級來控制。
在為實現本發明的目的所采用的技術方案中,預先生成密鑰序列并以之填充密鑰序列緩沖區的過程可以依據對密鑰序列緩沖區空間的使用情況來控制。
通過本發明所提出的方法和裝置,由于所需的全部或部分密鑰序列已事先準備就緒,在加密請求發生時,序列密碼加密功能只需異或操作的代價即可完成數據加密過程。并且,有效地將序列密碼加密功能的代價分散在系統運行的整個時期內來完成;其中,生成密鑰序列的代價是利用系統空閑或系統不繁忙的時候完成的。這樣一來,由于系統資源競爭或由于密鑰序列生成帶寬不足而產生的數據延遲將顯著降低,從而提高序列密碼加密的性能。
說明書附圖是在通常的計算機系統中,應用本發明而構造的帶有密鑰序列預先生成和緩存功能的序列密碼加密框圖。
具體實施例方式
本發明所考慮的,是通過預先生成和緩存序列密碼加密所需的密鑰序列而提高序列密碼加密的性能。本發明所描述的對密鑰序列進行預先生成和緩存的方法和裝置是按照如下步驟進行的1.使用一個緩沖區以緩存預先生成的密鑰序列,該緩沖區稱為密鑰序列緩沖區。這一緩沖區可以創建于系統通常的計算資源中,如系統內存(指CPU片外存儲器)、CPU片內或片外Cache,等。也可創建于特殊的計算資源中,如專門的硬件加密模塊所帶有的存儲器。密鑰序列緩沖區的長度可以取密鑰序列生成器一次生成的密鑰序列長度的整數倍,或者取加密一幀數據所需的密鑰序列長度的整數倍。密鑰序列緩沖區的訪問或存取模式是先進先出(First In First Out,FIFO)的。
2.當密鑰序列緩沖區沒有被填滿或者有空間容納新的密鑰序列時,不管當前是否存在加密請求,序列密碼的密鑰序列生成器生成新的密鑰序列,并將新生成的密鑰序列填充到密鑰序列緩沖區的剩余空間內,直到密鑰序列緩沖區被填滿為止。該填充密鑰序列緩沖區的過程即為緩存密鑰序列。這一過程的目的在于使所需的密鑰序列超前于待加密數據生成而準備就緒。同時,為了使這一過程能夠有效地分散序列密碼加密的代價以減輕加密過程與其它應用運行過程的相互影響,采取如下所述的一種或多種控制方式1)序列密碼的密鑰序列生成功能與其它應用共享同樣的系統資源時,通過監控共享資源的使用狀態來進行控制。典型的情形是指序列密碼功能是由軟件完成的,而對應的軟件程序與其它應用程序共享系統資源;比如,共享可用的CPU時間。此時,設置一個狀態監控器對共享資源的當前使用狀態實施監控,如監控當前空閑的CPU時間的百分比;并對狀態監控器設置一個門限。當狀態監控器所測得的資源狀態滿足所設置的門限時,比如所測得的當前空閑的CPU時間的百分比大于某一數值,則觸發密鑰序列生成器生成新的密鑰序列,并以新生成的密鑰序列填充密鑰序列緩沖區;反之,則不啟動密鑰序列生成與密鑰序列緩沖區填充的過程。
這種控制方式,能夠利用系統空閑或者不繁忙的時期來完成預先準備密鑰序列所需的代價。這種控制方式有時可以忽略依據狀態監控器的控制作用即,當密鑰序列緩沖區為空(或即將為空)且依然有加密請求存在時,即使狀態監控器測得的資源狀態不滿足所設置的門限,也觸發密鑰序列生成與密鑰序列緩沖區填充的過程。另外,當密鑰序列緩沖區為空且依然有加密請求存在時,新生成的密鑰序列可以不必先填入密鑰序列緩沖區,而是可以直接提供給序列密碼加密功能的異或操作邏輯(或其它將密鑰序列與數據結合在一起的邏輯)。
2)序列密碼的密鑰序列生成功能與其它應用共享同樣的系統資源時,通過動態調整相應過程的優先級進行控制。典型的情形是指序列密碼功能是由軟件完成的并與其它應用程序共享系統資源,而系統可以通過優先級調整來改變相應軟件程序對系統資源的爭用能力。此時,保持密鑰序列生成與密鑰序列緩沖區填充所對應的程序處于活動狀態。但一般情況下,將密鑰序列生成與密鑰序列緩沖區填充所對應的程序的優先級設置為‘低’(‘低’指對系統資源的爭用能力弱);當密鑰序列緩沖區為空(或即將為空)且依然有加密請求存在時,則將密鑰序列生成與密鑰序列緩沖區填充所對應的程序的優先級調高。另外,當密鑰序列緩沖區為空且依然有加密請求存在時,所生成的密鑰序列可以不必先填入密鑰序列緩沖區,而是直接提供給序列密碼加密功能的異或操作邏輯(或其它將密鑰序列與數據結合在一起的邏輯)。
使用這種控制方式,當系統中不存在加密請求時,密鑰序列生成與密鑰序列緩沖區填充相對應的程序處于低優先級狀態,減弱了對其它應用運行的影響;同時,能夠利用系統的空閑狀態來完成預先準備密鑰序列的過程。
3)序列密碼的密鑰序列生成功能使用單獨的資源但密鑰序列生成帶寬小于待加密數據的生成帶寬時,通過密鑰序列緩沖區剩余空間的有無來進行控制。典型的情形是指序列密碼的密鑰序列生成功能是由獨立于系統常規資源的特殊部件完成的(比如,由一個專門的硬件加密協處理器完成的);雖然該部件不與系統中其它應用爭用系統資源,但其生成密鑰序列的帶寬小于待加密數據生成的帶寬。此時,密鑰序列生成部件的運行受密鑰序列緩沖區是否有剩余空間的控制。只要密鑰序列緩沖區沒有被完全填滿,密鑰序列生成部件就保持運行狀態而生成新的密鑰序列,并以之填充密鑰序列緩沖區。另外,若密鑰序列緩沖區為空且依然存在加密請求時,所生成的密鑰序列可以不必先填入密鑰序列緩沖區,而是直接提供給序列密碼加密功能的異或操作邏輯(或其它將密鑰序列與數據結合在一起的邏輯)。
使用這種控制方式,能夠消除或減少由于密鑰序列生成帶寬不足而引入的等待延遲。
4)其它。其它的能夠使所需的密鑰序列超前于待加密數據生成而準備就緒的控制方法,并且所采用的控制方法對系統中其它應用的運行不會產生明顯的影響作用。
3.當序列密碼加密功能對被加密的數據實施異或操作(或其它將密鑰序列與數據結合在一起的操作)時,所需的全部或者部分密鑰序列直接從密鑰序列緩沖區獲取。為了維持發送者和接收者對加密和解密過程的同步(即發送者和接收者使用同樣的密鑰序列來加密和解密同一數據包),發送者和接收者從各自的密鑰序列緩沖區取出密鑰序列和填充各自的密鑰序列緩沖區的過程應保持一致性;比如,都以先進先出的模式存取密鑰序列緩沖區;再比如,當新生成的密鑰序列直接傳送給異或邏輯(或其它將密鑰序列與數據結合在一起的邏輯)時,都應先將密鑰序列緩沖區中的密鑰序列用完。
從上述描述可看出,本發明所提出的方法和裝置能夠將序列密碼加密功能的代價分散到系統整個運行期間來完成。其中,密鑰序列是超前于待加密數據生成而準備就緒的,并且是利用系統空閑或者系統不繁忙的時候完成的;或者,是讓單獨的密鑰序列生成部件超前于待加密數據生成而保持運行來完成的。這樣一來,序列密碼加密數據的過程表現出更好的“運行時”性能;這里,“運行時”是指待加密數據生成到數據加密完成所經歷的時期。其主要原因在于(1)系統的繁忙狀態所造成的序列密碼加密功能的“運行時”延遲減小;雖然系統繁忙時可供序列密碼加密功能使用的資源減少,但通過密鑰序列的預先生成和緩存,使得序列密碼在加密數據時只需完成異或操作,因而序列密碼加密功能在“運行時”對資源的需求亦減少。(2)序列密碼加密功能的運行過程對其它應用的影響減小;一是由于序列密碼加密功能準備密鑰序列的工作是分散在系統空閑或不繁忙的時候完成的,而使得相應代價的完成不會顯著影響其它應用的運行;二是由于序列密碼加密功能在“運行時”只需與待加密數據完成異或操作,因而在“運行時”對系統資源的爭用減小。(3)即便密鑰序列是由單獨的資源或部件生成的,通過預先生成和緩存密鑰序列,也不會因為密鑰序列生成帶寬小于待加密數據的生成帶寬而給數據加密過程帶來額外的延遲。
因此,本發明通過預先生成和緩存密鑰序列可以提高序列密碼加密的性能。
下面對本發明所描述的方法和裝置加以示例說明。
(示例)通常的計算機系統中,帶有密鑰序列預先生成和緩存功能的序列密碼加密功能附圖中,序列密碼的密鑰序列生成邏輯101依據輸入200(即,所設定的序列密碼初始向量,如初始的密鑰)生成密鑰序列。由密鑰序列生成邏輯101輸出的密鑰序列被填充到密鑰序列緩沖區102。當有對數據100的加密請求發生時,數據100和直接來自密鑰序列緩沖區102的密鑰序列一起送入異或邏輯103。異或邏輯103的輸出201即為密文形式的數據;也就是,完成了數據加密過程。
附圖中,控制邏輯104負責觸發和停止密鑰序列生成邏輯101生成新的密鑰序列和填充密鑰序列緩沖區102的過程。本例中,控制邏輯104實施控制的步驟為①監控CPU的使用情況,當CPU的空閑時間超過設定的閾值(如,Windows 2000操作系統中,“System Idle Process”的“CPU使用”超過95%),并且密鑰序列緩沖區102有剩余空間時,則觸發密鑰序列生成邏輯101;否則,不觸發密鑰序列生成邏輯101。
②如果密鑰序列生成邏輯101被觸發,則進行一輪生成新的密鑰序列并將新生成的密鑰序列填充到密鑰序列緩沖區102的過程;這里,一輪是指生成1個或n個(n為整數)新的密鑰序列,并將新生成的密鑰序列填充到密鑰序列緩沖區102。
③如果密鑰序列緩沖區102為空(或者即將為空)且依然存在加密請求時,則忽略CPU使用情況的監控結果而觸發密鑰序列生成邏輯101生成新的密鑰序列,并將新生成的密鑰序列填充到密鑰序列緩沖區102。
④重復步驟①~③。
附圖中,當密鑰序列緩沖區102已空且仍存在未完成的加密請求時,為避免額外的緩沖區存取的代價,密鑰序列生成邏輯101所生成的新的密鑰序列可以旁路密鑰序列緩沖區102,而直接經由路徑105流入異或邏輯103。
另外,附圖中密鑰序列填充到密鑰序列緩沖區102和從密鑰序列緩沖區102取出密鑰序列的方式,以及通過路徑105旁路密鑰序列緩沖區102的方式,應保持發送者與接收者的一致性。為此,密鑰序列緩沖區102采用先進先出(FIFO)的存取模式;并且,只有在密鑰序列緩沖區102為空時,才經由路徑105而直接將新生成的密鑰序列旁路到異或邏輯103。
還有,附圖中如果發送者和接收者啟用了新的序列密碼初始向量(如,啟用了新的初始密鑰),則應清空或者作廢密鑰序列緩沖區102;然后按照新設定的參數,在控制邏輯104的作用下,由密鑰序列生成邏輯101生成新的密鑰序列,并將新生成的密鑰序列填充到密鑰序列緩沖區102。
采用附圖所示的序列密碼加密系統,可將序列密碼加密的整體代價分散在系統運行的整個時期內來完成。其中,生成加密所需密鑰序列的代價基本上是在系統處于空閑或不繁忙的狀態時完成的;而與待加密數據實施異或操作的代價,則只占序列密碼加密的整體代價的一部分。這樣一來,序列密碼加密功能不但能夠在不影響其它應用的情況下準備好密鑰序列,而且將待加密數據通過異或操作轉換為密文時所需的代價減小,從而具有更好的“運行時”性能。
本發明并不局限于上述具體示例所描述的構造或實現。基于本發明所描述的內容以及所給出的示例,可以推出多種變化的形式。比如,實現可以是軟件的、硬件的以及軟硬件相結合的形式;控制密鑰序列預先生成和緩存可以選擇多種合理的方式;密鑰序列緩沖區可以定義在內存中,或者定義在CPU的高速緩沖區(即Cache)中,或者定義在其它部件中;密鑰序列緩沖區的存取控制,以及清空等維護性操作,可以有多種合理的控制方式;等等。
本發明適用于所有的依據本發明的內容而構造的方法和裝置,以及不需其它創造性質的能力而可獲得的變化形式。因此,本發明適用于同這里所描述的原理與特征相一致的最廣的范圍。
權利要求
1.一種在序列密碼加密系統中,預先生成并緩存密鑰序列的方法,其特征在于使用一個密鑰序列緩沖區來存儲密鑰序列;超前于待加密數據準備就緒來預先生成密鑰序列并以之填充密鑰序列緩沖區;利用系統空閑或系統不繁忙的時候來預先生成密鑰序列并以之填充密鑰序列緩沖區;響應加密請求而對數據實施加密時直接從密鑰序列緩沖區獲取所需的全部或部分密鑰序列。
2.根據權利要求1所述的密鑰序列緩沖區,是按照先進先出的方式進行存取操作的。
3.根據權利要求1所述的預先生成密鑰序列并以之填充密鑰序列緩沖區,采用能夠使所需的密鑰序列超前于待加密數據生成而準備就緒,并且對系統中其它應用的運行不會產生明顯影響的控制方法。
4.根據權利要求1所述的預先生成密鑰序列并以之填充密鑰序列緩沖區,通過對系統資源使用情況的監控進行控制。
5.根據權利要求1所述的預先生成密鑰序列并以之填充密鑰序列緩沖區,通過調整密鑰序列生成和密鑰序列緩沖區填充所對應程序的優先級進行控制。
6.根據權利要求1所述的預先生成密鑰序列并以之填充密鑰序列緩沖區,依據對密鑰序列緩沖區空間的使用情況進行控制。
7.根據權利要求1至權利要求6中任一權利要求所述的方法,采用這些方法所構造的裝置。
全文摘要
序列密碼加密系統中控制密鑰序列的方法與裝置。本發明涉及加密或密碼中的序列密碼技術,其主要內容是對序列密碼加密數據過程中所需的密鑰序列進行預先生成和緩存。所采用的技術要點是使用一個密鑰序列緩沖區來存儲密鑰序列;超前于待加密數據準備就緒以及利用系統空閑或系統不繁忙的時候來預先生成密鑰序列,并以之填充密鑰序列緩沖區;響應加密請求而對數據實施加密時直接從密鑰序列緩沖區獲取所需的全部或部分密鑰序列。這樣,序列密碼實施數據加密的代價被有效分散在系統運行的整個時期內;在加密請求發生時,序列密碼只需異或操作的代價即可完成加密過程。
文檔編號H04L9/18GK1708004SQ20041002328
公開日2005年12月14日 申請日期2004年6月8日 優先權日2004年6月8日
發明者侯方勇 申請人:侯方勇