專利名稱:以相似的效率處理任意密鑰位長加密操作的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及并行處理器,并尤其涉及一種能夠利用相同處理器、以相似的效 率來處理任意密鑰位長加密操作的并行處理器。
背景技術(shù):
例如通過諸如萬維網(wǎng)(WWW)的因特網(wǎng)的廣泛分布式信息網(wǎng)絡(luò)在各方之間交換電 子存儲的文件正變得較為常見。因特網(wǎng)的常見問題是缺少安全通信信道。因而,為了使醫(yī) 院、政府、銀行、股票經(jīng)紀人和信用卡公司利用因特網(wǎng),必須確保保密性和安全性。解決上 述問題的一種方法是在發(fā)送之前使用數(shù)據(jù)加密。在現(xiàn)有技術(shù)系統(tǒng)中,主計算機系統(tǒng)裝備有 加密單元,例如與用于至少存儲私有加密密鑰的至少一個存儲電路進行電通信的加密處理 器。當(dāng)信息要從主計算機系統(tǒng)、通過因特網(wǎng)發(fā)送給接收器、并且具有機密性質(zhì)時,信息首先 被傳遞到加密處理器,以便利用存儲的私有密鑰對信息加密。典型地,每當(dāng)執(zhí)行加密操作 時,都使用相同的私有密鑰。作為替換,從與加密處理器進行電通信的至少一個存儲電路中 存儲的一組有限的加密密鑰中選擇加密密鑰。當(dāng)然,由加密處理器執(zhí)行的數(shù)據(jù)加密操作是算術(shù)算法,其中輸入數(shù)據(jù)值,例如散列 型式的電子文件,是唯一變量值。因此,有可能對加密處理器進行優(yōu)化,以便利用最少量的 處理器資源來執(zhí)行期望的加密功能。另外,在現(xiàn)有技術(shù)加密單元中,優(yōu)化的加密處理器典型 地與主計算機系統(tǒng)的微處理器分開,因為加密單元這樣被最佳地優(yōu)化。現(xiàn)今,對于通過加密/解密的因特網(wǎng)上保密性和強鑒定有幾種標準。典型地,根據(jù) 意圖允許在各方之間在公開信道上進行數(shù)據(jù)傳送,同時維持消息內(nèi)容的保密性的算法,來 執(zhí)行加密/解密。這是通過由發(fā)送器利用加密密鑰對數(shù)據(jù)加密,并由接收器利用解密密鑰 對數(shù)據(jù)解密來實現(xiàn)的。在對稱密鑰密碼術(shù)中,加密密鑰和解密密鑰相同。加密算法典型地被分類為公開密鑰(public-key)和秘密密鑰(secret-key)算 法。在秘密密鑰算法中密鑰是秘密的,而在公開密鑰算法中,使密鑰之一廣為公眾所知。分 組密碼是當(dāng)今使用的秘密密鑰密碼系統(tǒng)的代表。通常,對于分組密碼,使用對稱密鑰。分組 密碼取一塊數(shù)據(jù),典型地為32-128位,作為輸入數(shù)據(jù),并產(chǎn)生相同的位數(shù)作為輸出數(shù)據(jù)。利 用具有典型地在56-128位范圍內(nèi)的長度的密鑰,來執(zhí)行加密和解密操作。加密算法被設(shè)計 成在不知道密鑰的情況下很難對消息解密。除分組密碼(block cipher)以外,因特網(wǎng)安全協(xié)議也依賴于基于公開密鑰 的算法。諸如Pogue和Rivest的美國專利No. 5,144,667中描述的Rivest, Shamir、 Adelman(RSA)加密系統(tǒng)的公開密鑰加密系統(tǒng)使用兩個密鑰,其中一個是秘密-私有的,而另一個是公開可得的。一旦某人公開了公開密鑰,任何人都可以向那個人發(fā)送利用那個公 開密鑰加密的秘密消息;然而,只能利用私有密鑰來實現(xiàn)消息的解密。這種公開密鑰加密的 優(yōu)點是,事先不將私有密鑰分發(fā)給會話的所有方。相反,當(dāng)使用對稱加密時,多個秘密密鑰 被產(chǎn)生,想要接收消息的每一方一個秘密密鑰,并且每個秘密密鑰被秘密地傳送。試圖以安 全的形式分發(fā)秘密密鑰導(dǎo)致了與只利用秘密密鑰加密發(fā)送消息所面臨的問題類似的問題; 這典型地被稱為密鑰分發(fā)問題。密鑰交換是公開密鑰技術(shù)的另一個應(yīng)用。在密鑰交換協(xié)議中,雙方能夠約定秘密 密鑰,即使第三方截取了他們的會話。美國專利No. 4,200, 770中描述的Diffie-HelIman 指數(shù)密鑰交換方法是這種協(xié)議的例子。大多數(shù)的公開密鑰算法,諸如RSA和DifTie-Hellman密鑰交換,是基于模取冪,模 取冪是α x模P的計算。該表達式表示,“使α乘以它自己Χ倍,使答案除以P,并取余數(shù)”。 由于以下原因,該計算執(zhí)行起來計算量非常大。為了執(zhí)行該操作,需要許多重復(fù)的乘法操作 和除法操作。諸如"Modular Multiplication Without Trial Division”,Mathematics of Computation, Vol. 44,No. 170,April, 1985 中描述的 Montgomery 方法的技術(shù)能夠減少除 法操作數(shù),但是沒有克服該總體計算開銷。另外,對于當(dāng)前的數(shù)據(jù)加密系統(tǒng),使用的數(shù)非常 大(典型地為1024位或更多),因此普通中央處理器(CPU)中存在的乘法和除法指令不能 直接使用。而是,使用特定算法來將大的乘法操作和除法操作分解成小得足以在CPU上執(zhí) 行的操作。這些算法通常具有與所涉及的機器字的數(shù)量的平方成比例的運行時間。例如, Pentium 處理器能夠在10個時鐘周期內(nèi)執(zhí)行32X32位乘法。2048位的數(shù)可以表示為 64個32位的字。2048X2048位的乘需要64X64個單獨的乘法操作,這在Pentium 處理 器上花費40960個時鐘。如果直接執(zhí)行,則對2048位指數(shù)取冪需要直到4096次乘法操作, 這需要大約167百萬個時鐘周期。如果Pentium 處理器以166MHz運行,則全部操作大概 需要一秒。當(dāng)然,除法操作進一步增加了整個計算時間。顯然,諸如Pentium 的普通CPU 不能期望以任何高的速率來執(zhí)行密鑰產(chǎn)生和交換。包括以串行陣列形式排列的多個獨立處理部件尤其是大量處理部件的流水線處 理器在現(xiàn)有技術(shù)中是周知的,并且尤其適于執(zhí)行數(shù)據(jù)加密算法。兩種類型的流水線處理器 是周知的一端進且另一端出類型的處理器,其中存在單一處理方向;以及同一端進和出 類型的雙向處理器,其中存在正向處理方向和返回處理方向??紤]雙向流水線處理器的特 定例子,第一數(shù)據(jù)塊從存儲緩沖器被讀入串行陣列的第一處理部件,第一處理部件執(zhí)行第 一階段處理,然后將第一數(shù)據(jù)塊傳遞給第二處理部件。第二處理部件執(zhí)行第二階段處理,同 時第一處理部件并行地從存儲緩沖器讀出第二數(shù)據(jù)塊,并對第二數(shù)據(jù)塊執(zhí)行相同的第一處 理階段。依次地,每個數(shù)據(jù)塊以逐步的形式沿串行陣列的正向處理方向從一個處理部件傳 播到下一個處理部件。在每一步都有處理階段,該處理階段對所提供的每一個數(shù)據(jù)塊執(zhí)行 相同的數(shù)學(xué)運算。同時,關(guān)于返回處理方向,在每一個處理部件中計算的結(jié)果被提供給串行 陣列的前一個處理部件,這些結(jié)果總計包括了加密處理器返回的經(jīng)過處理的數(shù)據(jù)。這種使 用大量處理部件的流水線數(shù)據(jù)處理方法是執(zhí)行前述的大計算量的數(shù)據(jù)加密算法的非常有 效方法。當(dāng)然,用于執(zhí)行大計算量處理操作的流水線處理器的應(yīng)用并不嚴格限于已經(jīng)舉例 詳細討論的數(shù)據(jù)加密算法。現(xiàn)有技術(shù)加密處理器的缺點是,處理器限于固定的密鑰大小或者作為替換地限于固定的性能。因而,或者處理器只處理例如128位的密鑰,或者處理器需要用與處理40位 加密操作所花時間相等的時間,來處理128位加密操作。典型地,這兩種設(shè)計要求考慮到處 理器的最佳性能。提供一種能夠利用相同處理器以相似的效率來處理任意密鑰位長加密操作的并 行處理器將是有利的。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,提供一種處理數(shù)據(jù)的方法,該方法包括以下步驟a)提供包括以串行陣列的形式排列的η個單獨處理部件的流水線處理器,以致第 一處理部件在領(lǐng)先于第η處理部件的第二處理部件之前;b)提供m位加密密鑰給流水線處理器;c)將指示加密密鑰長度的數(shù)據(jù)提供給流水線處理器;d)將數(shù)據(jù)提供給第一處理部件以便處理;e)至少根據(jù)指示加密密鑰長度的數(shù)據(jù)來確定最末處理部件;f)將指示處理部件是最末處理部件的信號提供給最末處理部件;g)從第一處理部件以逐步正向串行的形式來傳送用于進一步處理的數(shù)據(jù),僅僅到 最末處理部件為止;以及其中,同一流水線處理器內(nèi)的至少兩個處理部件可以被確定為最 末處理部件。根據(jù)本發(fā)明,提供一種處理數(shù)據(jù)的設(shè)備,備包括以串行陣列的形式排列的多個單獨處理部件,其中第一處理部件在領(lǐng)先于第η處 理部件的第二處理部件之前;端口,至少與串行陣列的處理部件電通信以便提供數(shù)據(jù)給串行陣列進行處理;以 及邏輯電路,該邏輯電路與所述端口以及串行陣列的至少兩個處理部件電通信,用 于在使用中處理指示加密密鑰長度的數(shù)據(jù)以便確定串行陣列的最末處理部件,以及根據(jù)指 示加密密鑰長度的數(shù)據(jù)將信號提供給作為串行陣列的被確定處理部件的至少兩個處理部 件之一。根據(jù)本發(fā)明,提供一種處理數(shù)據(jù)的設(shè)備,包括以串行陣列的形式排列的多個單獨處理部件,其中第一處理部件在領(lǐng)先于第η處 理部件的第二處理部件之前;以及每個單獨處理部件內(nèi)部的邏輯電路,用于在使用中處理指示加密密鑰長度的數(shù) 據(jù),以及將指示最末處理部件狀態(tài)(last processingelement status)的信號提供給處理 部件的內(nèi)部,該信號根據(jù)指示加密密鑰長度的數(shù)據(jù)來提供。
由以下連同附圖的優(yōu)選實施例的說明,本發(fā)明將更容易理解,其中圖1顯示了根據(jù)先有技術(shù)的流水線處理器的實施例的簡化框圖;圖2顯示了根據(jù)先有技術(shù)的流水線處理器的另一個實施例的簡化框圖;圖3a顯示了根據(jù)本發(fā)明第一實施例的具有分布式遞減電路的流水線處理器的簡化框圖;圖3b顯示了與分布式遞減電路通信的圖3a的流水線處理器的串行處理器陣列的 簡化框圖;圖4a顯示了根據(jù)本發(fā)明第二實施例的具有電路的流水線處理器的簡化框圖;圖4b顯示了與該電路通信的圖4a的流水線處理器的串行處理器陣列的簡化框 圖;圖5a顯示了根據(jù)本發(fā)明第三實施例的流水線處理器的簡化框圖;圖5b顯示了其中每個處理部件都具有內(nèi)部遞減電路的圖4a的流水線處理器的串 行處理器陣列的簡化框圖;圖6顯示了根據(jù)本發(fā)明的流水線處理器的第四優(yōu)選實施例的簡化框圖;圖7顯示了根據(jù)本發(fā)明的流水線處理器的第五優(yōu)選實施例的簡化框圖;圖8是供用于執(zhí)行加密功能的流水線陣列處理器之用的資源高效處理部件設(shè)計 的框圖;圖9是用于模乘的脈動陣列(systolic array)的框圖;圖10是其輸入路徑被顯示的單個單元的框圖;圖11是DP RAM Z單元的框圖;圖12是Exp RAM單元的框圖;圖13是Prec RAM單元的框圖;圖14是供用于執(zhí)行加密功能的流水線陣列處理器之用的速度高效處理部件設(shè)計 的框圖;圖15是用于模乘的脈動陣列的框圖;圖16是其輸入路徑被顯示的單一單元的框圖;以及圖17是DP RAM Z單元的框圖。
具體實施例方式本發(fā)明涉及供加密操作之用的并行處理器的實施過程,該實施過程使得并行處理 器在沒有大大犧牲效率的情況下支持可變長度加密密鑰。參考圖1,圖1顯示了根據(jù)現(xiàn)有技術(shù)的流水線處理器1的簡化框圖。處理器1包括 多個處理部件,例如支持256位加密的串行陣列2。輸入/輸出端口 3與陣列2的第一處 理部件(未顯示)通信,用于從例如也在操作中與端口 3通信的客戶站(client station) (未顯示)接收要被處理器1處理的數(shù)據(jù)。為了執(zhí)行加密操作,將預(yù)定長度的加密密鑰提供給處理器1,并且執(zhí)行加密操作。 作為替換,如果加密密鑰少于預(yù)定長度,則填補加密密鑰以使加密密鑰變成預(yù)定長度,然后 執(zhí)行操作。在任何一種情況下,操作都花費近似相同的預(yù)定量時間。不幸的是,當(dāng)密鑰長度 變得更長時,用于處理以前的更短密鑰的現(xiàn)有技術(shù)處理器1的效率降低了。例如,被設(shè)計成 可供256位密鑰使用的處理器將以用于處理僅僅40位密鑰的大約六分之一“高效”時間, 來處理被填補到256位的40位密鑰。這是很差的資源分配。為了更好地分配資源,一些處 理器包括多個處理器陣列,每個處理器陣列用于處理不同長度的加密密鑰,如圖2所示。因 而,處理器將包括40位加密處理器陣列2a,128位加密處理器陣列2b和256位加密處理器陣列2c。輸入/輸出端口 3分別與每個陣列2a、2b、2c的第一處理部件通信,用于從例如也 在操作中與端口 3通信的客戶站(未顯示)接收要被處理器4處理的數(shù)據(jù)。這種高效實施 的資源使用的效率低,因而是不合需要的?,F(xiàn)在參考圖3a,圖3a顯示了根據(jù)本發(fā)明第一實施例用于以相似的效率來處理任 意密鑰位長加密操作的流水線處理器5的簡化框圖。流水線處理器5包括至少一個陣列, 并且在圖3a中顯示了多個處理器部件(處理器部件未顯示)陣列6a、6b、6c,例如陣列6a 和6b的每一個都支持256位加密,而陣列6c支持512位加密。輸入/輸出端口 3分別與 每個陣列6a、6b、6c的第一處理部件通信,用于從也在操作中與端口 3通信的客戶站(未顯 示)接收要被流水線處理器5處理的數(shù)據(jù)。另外,邏輯電路7與輸入/輸出端口 3以及與 末位信號導(dǎo)體(conductor) 9進行電通信,該導(dǎo)體9以曲折的形式沿著每個陣列6a、6b、6c 內(nèi)的每個部件延伸。邏輯電路7用于接收指示加密密鑰長度的數(shù)據(jù)、以及取決于所述數(shù)據(jù) 而通過導(dǎo)體9向每個陣列6a、6b、6c內(nèi)的每個部件提供信號?,F(xiàn)在參考圖3b,圖3b顯示了包括處理器部件8\82、83、···、及8n的串行陣列6a(為 簡明起見省略了陣列6b和6c)的簡化框圖。每個處理器部件8分別通過連接11與末位信 號導(dǎo)體9進行電通信。作為特例,每個處理器部件是8位處理器部件,以致于串行陣列6a 包括32個單獨的處理器部件以便支持256位加密。因而,處理器資源的最有效分配需要5 個單獨的處理器部件來執(zhí)行40位加密操作,8個單獨處理器部件來執(zhí)行64位加密操作,以 及16個單獨處理器部件來執(zhí)行128位加密操作等等。任選地,可以使用不同于8位處理器 部件的處理器部件。說明性地考慮特定例子,例如需要至少5個單獨的8位處理器部件來完成的40位 加密操作。在使用中,客戶站(未顯示)通過端口 3提供要加密的數(shù)據(jù),例如作為總計包括 完整數(shù)據(jù)文件的單個數(shù)據(jù)塊的流。在第一處理周期開始時,陣列6a中的第一處理器部件81 從端口 3的緩沖存儲器(未顯示)接收第一數(shù)據(jù)塊,并對第一數(shù)據(jù)塊執(zhí)行預(yù)定的第一階段 處理。在該例子中,第一階段處理對應(yīng)于利用加密密鑰的8位段的加密操作。當(dāng)然,第一處 理器部件81與端口 3的緩沖存儲器(未顯示),以及與邏輯電路7是時間同步的,以致數(shù)據(jù) 塊的流被同步地選通到第一處理器部件81。在第二處理周期開始時,第一處理器部件81通 過端口 3接收第二數(shù)據(jù)塊。近似同時地,第一處理器部件81以第一數(shù)據(jù)塊的形式將輸出沿 正向處理路徑提供給第二處理器部件82。另外,第一處理器部件81把在其中計算的第一結(jié) 果沿返回處理路徑提供給端口 3的緩沖存儲器。這種處理數(shù)據(jù)的流水線方法繼續(xù),直到最 終結(jié)果沿返回處理路徑被提供給端口 3的緩沖存儲器為止。有利地,數(shù)據(jù)塊的流被同步地選通到第一處理器部件81,如前面所述的。在每個處 理周期開始時,邏輯電路7使指示加密密鑰長度的數(shù)據(jù)遞減預(yù)定量。在該例子中,加密密鑰 長度是40,需要5個處理器部件來完成加密操作,因而指示加密密鑰長度的數(shù)據(jù)代表5值。 于是,在第一處理周期開始時,邏輯電路7使值5遞減1,以指示剩下4個處理周期。在第二 至第五處理周期開始時,該值進一步被遞減,此時邏輯電路7返回零值。如果指示加密數(shù)據(jù) 已結(jié)束的零值產(chǎn)生了,則邏輯電路7通過末位信號導(dǎo)體9向每個處理器部件發(fā)送末位信號。 剛好沿正向處理路徑收到末位信號的處理器部件,在該情況下為第五處理器部件,立刻“知 道”它是最末處理器部件、并使數(shù)據(jù)轉(zhuǎn)向,以致數(shù)據(jù)不沿正向處理路徑傳播通過所述處理器 部件。在最末處理器部件之前的每一個處理器部件在末位信號被發(fā)送時,既沿正向處理路徑又沿返回處理路徑接收數(shù)據(jù),這表示不是最末部件狀態(tài)。當(dāng)然,如果在特殊處理周期期間邏輯電路7的值達到非零值,則處理正常地繼續(xù)。 例如,在第二處理周期期間,第一處理器部件81對第二數(shù)據(jù)塊執(zhí)行相同的第一處理操作,并 且第二處理器部件82對第一數(shù)據(jù)塊執(zhí)行第二處理操作。在第二處理周期末尾,第一數(shù)據(jù)塊 沿著第二處理器部件82與第三處理器部件83之間的正向處理路徑傳播。同時,第二數(shù)據(jù)塊 沿著第一處理器部件81與第二處理器部件82之間的正向處理路徑傳播。另外,第二處理器 部件82把在其中計算的結(jié)果沿著返回處理路徑提供給第一處理器部件81。當(dāng)然,同時沿著 相鄰處理器部件之間的正向處理路徑及返回處理路徑選通數(shù)據(jù)塊典型地涉及同步定時。利用所示的雙向流水線設(shè)計,高效地計算結(jié)果而與密鑰長度無關(guān),并且避免了附 加的處理周期。用于支持不同長度密鑰的處理器在設(shè)備中的使用同時支持多個高效加密過 程_每個過程都具有最大的密鑰大小。也就是說,在普通加密處理系統(tǒng)中,容易將統(tǒng)計學(xué)用 于選擇處理器大小,以便在統(tǒng)計學(xué)上為給定的資源使用提供最佳的性能。作為替換,末位信號導(dǎo)體9只與處理器部件8的子集進行電連接。例如,在串行陣 列6a中,末位信號導(dǎo)體9任選地連接到每第四個處理器部件。因此利用8位處理器部件, 處理器5將加密數(shù)據(jù)處理為一系列的32位段。對于支持通過32位段處理的直到256位加 密的處理器,支持8種可能的長度。有利的是,用于將末位信號從邏輯電路7引導(dǎo)至處理器 部件的數(shù)據(jù)路進的數(shù)量從32減少到僅僅8個單獨的數(shù)據(jù)路徑,大大方便了處理器5的制造 的容易。不幸的是,對于不能被32位除的加密密鑰長度,例如在處理之前被填補到至少64 位的40位加密密鑰,處理資源以較低效率被分配。因而,數(shù)據(jù)在第八個處理器部件而不是 在如上所討論的第五個處理器部件被轉(zhuǎn)向。現(xiàn)在參考圖4a和圖4b,圖4a和4b顯示了根據(jù)本發(fā)明第二實施例用于以相似的效 率來處理任意密鑰位長加密操作的流水線處理器20的簡化框圖。在此,與先前參考圖3a和 圖3b描述的部件相同的部件具有相同的附圖標記,并且為簡潔起見省略了對它們的論述。 例如包括一系列門(gate)的開關(guān)網(wǎng)絡(luò)21另外與輸入/輸出端口 3電通信,以及與一系列硬 連線的(hardwired)可尋址數(shù)據(jù)路徑22電通信。開關(guān)網(wǎng)絡(luò)21用于接收指示加密密鑰長度 的數(shù)據(jù),以及用于通過一系列硬連線的可尋址數(shù)據(jù)路徑22將信號提供給確定的處理部件。 在使用中,指示加密密鑰長度的數(shù)據(jù)被提供給開關(guān)網(wǎng)絡(luò)21,以致該一系列門確定指示最末 處理部件狀態(tài)的信號要發(fā)送給哪個處理器部件8。開關(guān)網(wǎng)絡(luò)21通過硬連線的可尋址數(shù)據(jù) 路徑22的選定數(shù)據(jù)路徑將所述信號發(fā)送給確定的處理部件。例如,該信號用于將確定的處 理部件的位設(shè)置為指示最末處理部件狀態(tài)的值。有利地,當(dāng)確定的處理部件完成數(shù)據(jù)加密 處理時,該處理部件立即使數(shù)據(jù)轉(zhuǎn)向,使得數(shù)據(jù)被端口 3的緩沖存儲器(未顯示)讀出。當(dāng) 然,任選地在開關(guān)網(wǎng)絡(luò)21與處理部件的預(yù)定子集,例如每第四個處理部件之間提供數(shù)據(jù)路 徑。有利的是,數(shù)據(jù)路徑的總數(shù)以及開關(guān)網(wǎng)絡(luò)的復(fù)雜性減小了。不幸的是,對于不能被32 位除的加密密鑰長度,例如在處理之前被填補到至少64位的40位加密密鑰,處理資源以較 低效率被分配?,F(xiàn)在參考圖5a和圖5b,圖5a和5b顯示了根據(jù)本發(fā)明第三實施例用于以相似的效 率來處理任意密鑰位長加密操作的流水線處理器12的簡化框圖。在此,與先前參考圖3a和 圖3b描述的部件相同的部件具有相同的附圖標記,并且為簡潔起見省略了對它們的論述。 根據(jù)本發(fā)明第三實施例,每個單獨處理部件14都包括專用邏輯電路15。在使用中,指示加密密鑰長度的數(shù)據(jù)連同要加密的數(shù)據(jù)一起被提供給第一處理器部件141。第一處理器部件 141對第一數(shù)據(jù)塊執(zhí)行預(yù)定的第一階段處理,并且另外使指示加密密鑰長度的數(shù)據(jù)遞減預(yù) 定量。遞減的指示加密密鑰長度的數(shù)據(jù)連同第一數(shù)據(jù)塊一起被提供給第二處理器部件142。 第二處理器部件142的邏輯電路接收該遞減的指示加密密鑰長度的數(shù)據(jù),并使所述數(shù)據(jù)遞 減附加的預(yù)定量。如果第二處理器部件142的邏輯電路計算零值,則第二處理器部件142的 邏輯電路在第二處理器部件142內(nèi)部產(chǎn)生指示最末處理器部件狀態(tài)的信號。近似與第二處 理器部件142完成預(yù)定的第二階段處理同時地,第二處理器部件142使數(shù)據(jù)轉(zhuǎn)向,并且經(jīng)過 處理的數(shù)據(jù)被讀出串行陣列13a,并被讀入端口 3的緩沖存儲器(未顯示)。參考圖6,圖6顯示了根據(jù)本發(fā)明第四優(yōu)選實施例的流水線處理器16的簡化框圖。 流水線處理器16包括多個處理器部件(未顯示的處理器部件)陣列6a、6b和6c,例如陣 列6a和6b的每一個都支持256為加密操作,而陣列6c支持512位加密操作。虛線17a和 17b分別表示用于在陣列6a的最末處理部件與陣列6b的最末處理部件之間提供電通信的 任選電耦合,以及用于在陣列6b的第一處理部件與陣列6c的第一處理部件之間提供電通 信的任選電耦合。與每個陣列6a、6b、6c的第一處理部件通信的輸入/輸出端口 3用于接 收由也在操作中與輸入/輸出端口 3通信的客戶站(未顯示)提供的數(shù)據(jù),該數(shù)據(jù)要被陣 列6a、6b和6c中的一個專門陣列處理。在此,提供了三個處理器,每個處理器具有支持的最 大加密密鑰大小,但是其中三個處理器可任選地被連接以形成一個1024位處理器。當(dāng)然, 也有可能裝備任意長度的處理器,但是這常常招致大量的尋址開銷,而這是不合乎需要的。 當(dāng)然,當(dāng)希望最大限度的靈活性時,按照該實施例來把許多例如用于處理64位密鑰的較小 處理陣列連在一起。因為指示密鑰長度的數(shù)據(jù)連同待處理的數(shù)據(jù)及加密密鑰一起被提供給處理器,因 此處理器能夠分配足夠的處理單元給任務(wù),并由此高效地分配資源。所示的處理器16具有 邏輯電路7,如先前參考圖3a和圖3b所討論的情況一樣。因而,在該實施例中,邏輯電路計 算被處理器16處理的位數(shù),將計數(shù)與指示加密密鑰長度的數(shù)據(jù)進行比較,以及取決于指示 加密數(shù)據(jù)結(jié)束的比較,來通過最末處理器信號導(dǎo)體9發(fā)送通用信號。任選地,使用用于指示 最末處理器部件狀態(tài)的其它系統(tǒng),例如參考本發(fā)明第二和第三實施例之一所述的系統(tǒng)。現(xiàn)在參考圖7,圖7顯示了根據(jù)本發(fā)明第五優(yōu)選實施例的流水線處理器18的簡化 框圖。流水線處理器18包括多個處理器部件(未顯示的處理器部件)陣列6a、6b和6c, 例如陣列6a和6b的每一個都支持256為加密操作,而陣列6c支持512位加密操作。陣列 6a的最末處理部件與陣列6b的最末處理部件通過硬件連接19a進行電通信,并且陣列6b 的第一處理部件與陣列6c的第一處理部件通過硬件連接19b進行電通信。與陣列6a的第 一處理部件通信的輸入/輸出端口 3用于接收由也在操作中與輸入/輸出端口 3通信的客 戶站(未顯示)提供的數(shù)據(jù),該數(shù)據(jù)要被陣列6a、6b和6c的串行配置處理。任選地,提供 單獨的輸入(未顯示),以便直接將數(shù)據(jù)選通到至少除陣列6a的第一部件之外的處理器部 件。在此,陣列6b是雙向的,并且因為流水線過程被實施為雙向流水線過程,因此一 旦陣列6b完成了相對于其另一個方向上發(fā)生的操作的處理,就有可能利用陣列6b的最末 部件來開始。因而,大大地提高了效率。因為指示密鑰長度的數(shù)據(jù)連同待處理的數(shù)據(jù)及加密密鑰一起被提供給處理器,因此處理器能夠分配足夠的處理單元給任務(wù)、并由此高效地分配資源。所示的處理器18具有 邏輯電路7,如先前參考圖3a和圖3b所討論的情況一樣。因而,在該實施例中,邏輯電路計 算被處理器18處理的位數(shù),將計數(shù)與指示加密密鑰長度的數(shù)據(jù)進行比較,以及根據(jù)指示加 密數(shù)據(jù)結(jié)束的比較,來通過最末處理器信號導(dǎo)體9發(fā)送通用信號。任選地,使用用于指示最 末處理器部件狀態(tài)的其它系統(tǒng),例如參考本發(fā)明第二和第三實施例之一所述的系統(tǒng)。圖6和圖7的流水線處理器16和18分別可以在以下模式下操作其中使被選通 到陣列6a的最末處理器部件的數(shù)據(jù)可以被陣列6b的最末處理器部件得到。例如,當(dāng)某一 特殊處理操作需要超過256個處理器部件時,通過在第二個不同陣列中繼續(xù)該處理操作來 增加處理器陣列的有效長度。當(dāng)然,當(dāng)某一特殊處理操作需要超過512個處理器部件時, 通過在第三個不同陣列中繼續(xù)該處理操作來增加處理器陣列的有效長度。例如,圖6和圖 7中所示的流水線處理器中的任何一個都可以操作以便執(zhí)行利用一個陣列的256位加密; 利用兩個不同陣列的512位加密;以及利用所有3個不同陣列的1024位加密。有利的是,因為知道處理器什么時候?qū)⑼瓿商幚恚虼擞锌赡苤甘灸莻€處理器進 行另一個處理器的下游的處理。例如,假定處理器6a具有用于處理256位加密操作的處理 部件,并開始處理256位加密操作。假定6b是類似的處理器。如果,有時在處理部件6a開 始處理之后并且在它被完成之前用于512位操作的處理請求到來了,則有可能在知道當(dāng)數(shù) 據(jù)被傳播到處理陣列6a的最末部件時那個部件將完成當(dāng)前處理中的處理工作的處理的處 理部件6b上開始操作。這通過減少處理器的停機時間同時等待其它處理器可以用來支持 連起來的陣列處理,提高了整體系統(tǒng)性能?;贛ontgomery的加密數(shù)據(jù)流水線處理應(yīng)用Montgomery算法,模取冪的成本被降低到一系列的超長整數(shù)的加法。位避免 乘法/加法體系結(jié)構(gòu)中的進位傳送,幾種解決方法是周知的。這些解決方法將Montgomery 算法與冗余基數(shù)系統(tǒng)或余數(shù)系統(tǒng)結(jié)合使用。在 S. E. Eldridge and C. D. Walter. Hardware implementation ofMontgomery* s modular algorithm. IEEE Transactions on Computers,42 (6) :693_699,July 1993 —文 中,Montgomery模乘算法適于高效的硬件實施。由于更簡單的組合邏輯,由更高的時鐘頻 率獲得了速度的增加。與基于Brickell算法的現(xiàn)有技術(shù)相比,報道了加速系數(shù)2。^ J. E. Vuillemin, P. Bertin, D. Roncin, M. Shand, H. H. Touati, andP. Boucard. Programmable active memories Reconfigurab1e systems comeof age. IEEE Transactions on VLSI Systems,4(1) 56-59, March 1996 禾口 M. Shand and J. Vuillemin. Fast implementations of RSA cryptography. InProceedings 11th IEEE Symposium on Computer Arithmetic,pages252_259,1993 中 艮道的 Research Laboratory ofDigital Equipment Corp.(數(shù)字設(shè)備公司研究實驗室),使用包括中國余數(shù)定理、異步進位完成加法 器和開窗口取冪方法的幾種加速方法的16個XILINX 3090FPGA (現(xiàn)場可編程門陣列)的陣 列用于實施模取冪。該實施過程以185kb/s的速率計算970位RSA解密(每970位解密 5. 2ms),以及以超過300kb/s的速率計算512位RSA解密(每512位解密1. 7ms)。該解決 方法的缺點是,模數(shù)的二進制表示被硬連接到邏輯表示(logicr印resentation)中,使得 必須重新為體系結(jié)構(gòu)配置每個新的模數(shù)(modulus)。在Montgomery模乘算法中使用高基數(shù)的問題是更復(fù)雜地確定商。該行為造成了算法流水線操作不直接進行。在 H. Orup. Simplifyingquotient determination in high-radix modular multiplication. InProceedings 12th Symposium on Computer Arithmetic,pages 193-9,1995中,算法被重寫以避免在確定商的過程中涉及的任何操作。 只為給定的模數(shù)執(zhí)行一次必需的預(yù)先計算。P. A. Wang ^t New VLSI architectures of RSA public key cryptosystems. In Proceedings of 1997IEEE International Symposium onCircuits and Systems, volume 3,pages 2040-3,1997文章中提出了用于Montgomery模乘算法的新VLSI體系結(jié)構(gòu)。確定 時鐘速度的關(guān)鍵途徑是流水線。這是通過使算法的每次迭代交錯來實現(xiàn)的。與先前的提議 相比,報道了系數(shù)2的時間面積乘積的改進。J. Bajard, L. Didier, and P. Kornerup 在 An RNS Montgomery modularmultiplication algorithm. IEEE Transactions on Computers,47 (7) :766_76, July 1998文章中描述了一種使用余數(shù)系統(tǒng)(RNS)的新方法。在η個相當(dāng)簡單的處理器商 利用RNS中的η個模數(shù)來實施該算法。由此引起的處理時間為Ο(η)。當(dāng)然,以上引用的參考文獻的大多數(shù)都涉及幾乎沒有或沒有靈活性的處理器硬件 實施。也有許多用于模運算的脈動陣列體系結(jié)構(gòu)的提議。這些提議在復(fù)雜性和靈活性方 面不同。在 Ε. F. Brickell. A survey of hardware implementations of RSA. InAdvances in Cryptology-CRYPTO' 89, pages 368-70. Springer-Verlag, 1990 中,E. F. Brickell 總結(jié)了 1990年可得的用于執(zhí)行RSA加密的芯片。在N. Takagi. A radix_4modular multiplication hardware algorithmefficient for iterative modular multiplication operations. In ProceedingslOth IEEE Symposium on Computer Arithmetic, pages 35-42,1991 文章中,作者提出了 一種基 4(radix-4)硬件算法。冗余數(shù)被使用,并由此避免了加法中的進位傳送。與先前工作相比, 報道了大約6倍的處理加速。更近一些,提出了這樣一種方法,該方法利用預(yù)先計算的模數(shù)的補數(shù),并且基于 J. Yong-Yin and W. P. Burleson. VLSI array algorithms andarchitectures for RSA modular multiplication. IEEE Transactions on VLSISystems,5(2) :211_17, June 1997 文章中的迭代Horner規(guī)則。與Montgomery算法相比,這些方法利用中間結(jié)果的最高有效 位來決定要減去模數(shù)的哪些乘。這些解決方法的缺點是,它們或者需要大量存儲空間、或者 需要許多時鐘周期,來完成模乘。最流行的模取冪算法是自乘與乘(square&multiply)算法。公開密鑰加密系 統(tǒng)典型地基于模取冪或重復(fù)的點加法(point addition)。這兩種操作是由自乘與乘 (square&multiply)算法執(zhí)行的最基本形式。方法1. 1 計算 Z = Xe mod M,其中 l.Z = X2. FOR i = n-2down to O DO3. Z = Z2mod M4. IF ei = 1 THEN Z = Z · X mod M
5. END FOR方法1. 1在最壞情況下需要2 (n-1)次操作,并且平均需要1. 5(n_l)次操作。為 并行地計算自乘和乘法,可以使用以下型式的自乘與乘(square&multiply)方法方法1. 2 計算 ρ = Xe mod M,其中£ = Σ二e'2',ei e ⑷,1. P0 =1,Z0 = X2. FOR i = 1 to n-1 DO3. Zi+1 = Zi2 mod M4. IF θ = ITHEN Pi+1 = Pi · Zi mod MELSE Pi+1 = Pi5. END FOR方法1. 2在最壞情況下需要2η次操作,并且平均需要1. 5η次操作。通過應(yīng)用 l_ary 方法,如 D. Ε. Knuth, The Art of Computer Programming. Volume 2 :Seminumerical Algorithms. Addison-ffesley, Reading,Massachusetts, 2nd edition, 1981 idP7^Jf
法1. 1的一般化的1-ary方法,來實現(xiàn)加速。l_ary方法每次處理1階位。在此的缺點是必 須預(yù)先計算并存儲X的O1D次乘。減少到21—1次預(yù)先計算是有可能的。最后所得的復(fù)雜 性粗略地為η/1次乘法操作和η次自乘操作。如上所示,利用Montgomery方法將模取冪簡化為一系列的模乘操作和自乘步驟。 P. L. Montgomery ^ P. L. Montgomery. Modularmultiplication without trial division. Mathematics of Computation,44(170) :519_21,April 1985 文章中提出了用于下述模乘 的方法。該方法是使兩個整數(shù)相乘并以M為模、同時避免除以M的方法。其思想是將整數(shù) 變換成m余數(shù),并計算這些m余數(shù)的乘法。最后,表示被變換回到其正規(guī)表示。只有當(dāng)計算 變換域中的一系列乘法操作(例如模取冪)時,該方法才有益。為計算Montgomery乘法,基數(shù)R > M,并選擇gcd (M,R) = 1。除以R優(yōu)選地是計 算量小的,因而如果M = ^ilom/2'、則最佳的選擇是R = 2m。χ的m余數(shù)是xR mod Μ。也 計算M’ = M_imod Ro提供函數(shù)MRED (T)來計算Ttr1Hiod M。假定T是m余數(shù),該函數(shù)計算T 的正規(guī)表示。方法1. 3MRED (T)計算 T 的 Montgomery 簡化T < 冊,R = 2m,M = ^0V 2',gcd(M, R) = 1 ELSE return tMRED(T)的結(jié)果是 t = TtT1Iiiod Μ?,F(xiàn)在使兩個整數(shù)a和b在變換域中相乘,其中它們各自的表示是(aR mod Μ)和 (bR mod Μ),將這兩個表示的乘積提供給MRED (T)。MRED ((aR mod Μ) · (bR mod M)) = abR2R_1 = abR mod M對于模取冪,依據(jù)方法1. 1或1. 2重復(fù)該步驟許多次,以便獲得最終結(jié)果ZRmod M 或PnR mod Μ。將這些值之一提供給MRED (T),以獲得Z mod M或Pn mod Μ。
13
初始變換步驟仍然需要代價高的模簡化,為避免涉及除法,利用除法計算R2Hiod M。只需要為給定密碼系統(tǒng)執(zhí)行一次該步驟。為獲得變換域中的a和b,執(zhí)行MRED(a. R2Hiod Μ)禾Π MRED (b. R2mod Μ),以獲得aR mod M和bR mod Μ。顯然,可以照這樣變換任何變量。對于方法1. 3的硬件實施利用mXm位乘法和2m位加法來計算步驟2。中間結(jié) 果可以具有和2m—樣多的位。不是立刻計算U,而是每次計算r基表示的一個數(shù)位。選擇 基數(shù)r,使得gcd(M,r)是優(yōu)選的。除以r優(yōu)選地也是計算量小的,因而最佳選擇是r = 2k。 現(xiàn)在,所有變量都以r基表示來表示。另一個改進是在算法中包括乘法A X B。方法1.4用于計算A · B mod M的Montgomery模乘,其中ELSE 返回 Sm應(yīng)用方法1. 4的結(jié)果是Sm = ABR^mod M。對于基數(shù)2k,需要最多兩個kXk位乘法 操作和k位加法來計算步驟3。對于步驟4,需要兩個kXm位乘法操作和兩個m+k位加法。 與方法1. 3的2m位相比,S的最大位長被減小到m+k+2位。方法1. 5是相對于r = 2的方法1. 4的簡化。對于基數(shù)r = 2,對方法1. 4的步驟 3中的操作執(zhí)行模2。由于條件gcd(M,2k) =1,使得模數(shù)M為奇數(shù)。立即得出,M= Imod 2。因此,M’ = HTlIiiod 2也退化為M’ = 1。因而,任選地省略步驟3中的乘M’ mod 2。方法1. 5用于計算A · B mod M的Montgomery模乘(基數(shù)r = 2),其中M = ^{2kym,^ e {0,1} ;B = ^(2kyb,,^ e {0,1};A = YjI^y a a, e {0,1} ;A, B < M ;M < R = 2m ;gcd (2,Μ) =1LS0 = O2. FOR i = O to m-lD03. qi = (Si+aiB)mod 24. Si+1 = (Si+qiM+ajB) /25END FOR6. IF Sm 彡 M 返回 Sm-MELSE 返回 Sm方法1. 5的步驟6中的最終比較和減法執(zhí)行起來是高代價的,因為m位比較是很 慢的,并且在資源使用方面是高花費的。它也使算法的流水線執(zhí)行成為不可能??梢匀菀?地驗證,如果A,B < M,則Si+1 < 2M總是保持。然而,Sffl不能重新用作下一次模乘的輸入A 或B。如果在am+1 = O且輸入A,B < 2M的情況下來執(zhí)行for循環(huán)的兩次多余運行,則滿足
14不等式Sm+2 < 2M?,F(xiàn)在,Sm+2可以用作下一次模乘的輸入B。為進一步減小方法1. 5的復(fù)雜性,使B上移一個位置,即使B乘以2。這導(dǎo)致 ·Β mod 2 = 0,并且避免了步驟3中的加法。在Si+1的更新期間,用^+ιΜ)/2+ Β來代替 (Si+c^M+aiB)/〗。該簡化的成本是在am+2 = 0的情況下多運行一次循環(huán)。以下方法包括這些 優(yōu)化。方法1. 6用于計算A · B mod M的Montgomery模乘(基數(shù)r = 2),其中M = X^ymi5lIii e {0,1} ;5 = 二(2”'仏 e {0,1}; LS0 = O2. FOR i = 0 to m+2D03. qj = Si mod 2 5END FOR以上算法計算Sm+3 = (2-(m+2)AB)mod M。為得到正確的結(jié)果,執(zhí)行額外的Montgomery 模乘22(m+2)mod Μ。然而,如果如在取冪算法中一樣需要進一步的乘法操作,最好使所有的 輸入預(yù)先乘以系數(shù)22(m+2)mod Μ。因而,每個中間結(jié)果都攜帶系數(shù)22(m+2)。使結(jié)果與“1”進行 Montgomery相乘來消除該系數(shù)。與“1”的最終Montgomery乘確保了最終的結(jié)果小于M。高基數(shù) Montgomery 算法通過避免代價高的步驟6的比較和減法操作、并將條件改變?yōu)?M < ?^“且八,B <2M,產(chǎn)生了相對于在硬件中實施方法1.4的某些優(yōu)化。其代價是多運行兩次循環(huán)。最終 所得的方法如下方法1. 7用于計算A · B mod M的Montgomery模乘,其中 1. S0 = 02. FOR i = 0 至 m-lD03. qi = (Si+aiB)mod 2k 5END FOR通過用B· 2k代替B,進一步減小商 確定的復(fù)雜性。因為aiB md2k = 0,步驟3 被簡化為Qi = Si mod 2k。以附加的循環(huán)迭代為代價來避免步驟3中的加法,以補償B中的 額外系數(shù)2k。為硬件實施而優(yōu)化的Montgomery方法如下所示方法1. 8用于計算A · B mod M的Montgomery模乘,其中 然后,使最終結(jié)果與“1”進行Montgomery相乘,以消除如上所述的其中的系數(shù)。在此處被引入作為參考的、Thomas Blum于1999年4月8日提交給Faculty of the Worcester Polytechnic Institute 的題為 ModularExponentiation on Reconfigurable Hardware的論題中,Thomas Blum提出了兩種不同的用于利用模乘和Montgomery空間執(zhí)行 加密功能的流水線體系結(jié)構(gòu)基于方法1. 6的面積高效體系結(jié)構(gòu)和速度高效體系結(jié)構(gòu)。使 用Xilinx XC4000系列設(shè)備作為目標設(shè)備。一般2基脈動陣列使用mXm處理部件,其中m為模數(shù)的位數(shù),并且每一部件處理 一位。可以同時處理2m個模乘操作,以每時鐘周期一個模乘的處理量以及2m個周期的等 待時間為特色。因為對于現(xiàn)代公開密鑰方案中所需的典型位長、該方法導(dǎo)致了不實際的大 CLB計數(shù),因此只實施一行處理部件。利用該方法,可以同時處理2個模乘操作,而執(zhí)行降低 到每2m個周期2個模乘操作的處理量。等待時間保持為2m周期。第二考慮事項是基數(shù)r = 2k的選擇。增大k將減少方法1. 8中要執(zhí)行的步驟的 數(shù)量。然而,這種方法需要更多的資源。主要的花費在于浐與M和B相乘的計算。這些或 者被預(yù)先計算并存儲在隨機存儲器(RAM)中,或者被多路復(fù)用器網(wǎng)絡(luò)計算。無疑,對于r = 2、CLB基數(shù)變成最小,因為不必計算或預(yù)先計算M或B的乘。利用基數(shù)r = 2,來計算依據(jù)方法1. 6的方程式。為進一步減少所需的CLB數(shù)量, 任選地采取以下措施每個單元處理多于一位。單個加法器用于預(yù)先計算B+M,以及執(zhí)行正 常處理期間的其它加法操作。并行地計算自乘和乘法操作。該設(shè)計按等級被分為三個級別。處理部件計算模乘的U位。模乘處理部件陣列計算模乘模取冪將模乘操作與根據(jù)算法1. 2的模取冪相結(jié)合處理部件圖8顯示了處理部件的實施過程。在處理部件中,存在以下寄存器· M-Reg (U 位)存儲模數(shù)· B-Reg (U 位)存儲 B 乘數(shù)· B+M-Reg(u位)存儲中間結(jié)果B+M· S-Reg(u+1位)存儲中間結(jié)果(包括進位)· S-Reg-2 (u-1位)存儲中間結(jié)果· Control-Reg(3位)控制多路復(fù)用器和時鐘使能
· ai、qi(2 位)乘數(shù) A、商 Q· Result-Reg (u位)存儲乘法最后的結(jié)果寄存器需要總共(6U+5V2個CLB,加法器需要u/2+2個CLB,多路復(fù)用器需要 4 -u/2個CLB,以及解碼器需要2個CLB。將寄存器重新用于組合邏輯的可能性允許CLB的 某些節(jié)省。將Muxb和MuxKes實施在B-Reg和Result-Reg的CLB中,將Mux1和Mux2部分地 實施在M-Reg和B+M-Reg中。最終所得的成本是大約每u位處理單元3u+4個CLB。S卩,每 位3到4個CLB,這取決于單元大小u。在單元能夠計算模乘之前,必須加載系統(tǒng)參數(shù)。將M存儲到單元的M-Reg中。在 模乘開始時,根據(jù)多路復(fù)用器B-Mux的選擇線,從B-in或S-Reg加載操作數(shù)B。下一步是計 算一次M+B,并將結(jié)果存儲在B+M-Reg中。該操作需要兩個時鐘周期,因為結(jié)果首先隨著時 鐘進入到S-Reg中。分別通過 或控制字來控制Mux1和Mux2的選擇線。在接著的2(m+2)個周期中,根據(jù)方法1. 6來計算模乘。多路復(fù)用器Mux1根據(jù)二 進制變量 和qi的值,來選擇要饋入加法器中的其輸入0、M、B、B+M之一。Mux2將先前結(jié) 果S-Reg2的u-1個最高有效位加上下一單元(除以2/右移)的最低有效結(jié)果位饋入加法 器的第二輸入端。將結(jié)果存儲在S-Reg中一個周期。最低有效位進入向右的單元(除以2/ 右移),而進位進入向左的單元。在該周期中,利用更新的S-Reg2、ai、qi值在加法器中計算 第二模乘。第二模乘使用相同的操作數(shù)B,但是不同的操作數(shù)A。在模乘的末尾,在加法器的輸出端處,Sm+3在一個周期內(nèi)有效。將該值存儲到 Result-Reg中,如通過S-Reg饋入B-Reg中一樣。在一個周期之后將第二乘法的結(jié)果饋入 Result-Reg 中。圖9顯示了處理部件怎樣連接到用于計算m位模乘的陣列。為執(zhí)行相對于m的方 法,使用每單元處理u位的m/u+1個單元。Unitci只有u_l個B輸入,因為Btl被加到移位值 SJqiM上。根據(jù)Montgomery算法的特性,結(jié)果位S-Regtl總是為0。Unitm7u處理B的最高有 效位以及中間結(jié)果Si+1的臨時溢出。沒有到該單元的M輸入。單元的輸入和輸出以以下方式相互連接??刂谱帧?和 被從右向左泵 送(bumped)通過單元。結(jié)果從左向右泵送。carry-out(載出)信號被饋給向右的 carry-in (載入)輸入。輸出S_0_0ut總是連接到向右的單元的輸入S_0_ln。這代表方程 式除以2。首先將模數(shù)M饋入單元中。為允許信號有足夠的時間傳播到所有單元,M在兩個 時鐘周期內(nèi)有效。我們使用兩個M-Bus,M-even-Bus連接到所有的偶數(shù)單元、M-odd-Bus連 接到所有的奇數(shù)單元,該方法允許每時鐘周期將u位饋給單元。因而,需要m/u個周期來加 載完整模數(shù)M。類似地加載操作數(shù)B。信號也在兩個時鐘周期內(nèi)有效。在加載操作數(shù)B之后,方法 1.6的步驟的執(zhí)行就開始了。從最右邊的單元Imitci開始,將控制字、a,和qi饋入它們的寄存器中。加法器根 據(jù) 和qi、在一個時鐘周期內(nèi)計算S-Reg-2加上B、M或B+M。讀回結(jié)果的最低有效位作為 下一次計算的qi+1。將所得到的進位位、控制字、a,和qi泵入向左的單元中,其中在下一個 時鐘周期中發(fā)生相同的計算。以這種脈動的形式,將控制字、a” Qi和進位位從右向左泵送通過整個單元陣列。方法1. 6中的除以2也導(dǎo)致了右移操作。單元的加法(Stl)的最低有效位總是被反饋到向 右的單元中。在完成模乘之后,將結(jié)果從左向右泵送通過單元、并連續(xù)地存儲在RAM中用于 進一步處理。單個處理部件計算Si+1 = (S^qi · M)/2+ai · B的u位。在時鐘周期i中,unit。計 算Si的位0. . . U。在時鐘周期i+Ι中,Imit1使用所得的進位、并計算Si的位u. . . 2u。Unit0 在時鐘周期i+2中、利用Si(Stl)的右移(除以2)位u來計算Si+1的位O...u-Ι。在單元 Unit0中時鐘周期i+Ι是非生產(chǎn)性的、同時等待Imit1的結(jié)果。通過依據(jù)方法1. 2并行地計 算自乘和乘法操作,來避免這種低效率。都取決于Zi。因此,將中間結(jié)果Zi存儲 在B-Register中,并將Zi和Pi —起饋入單元的輸入中用于自乘和乘法。圖10顯示了單元陣列怎樣用于模取冪。在設(shè)計的核心是具有以下17種狀態(tài)的有 限狀態(tài)機(FSM)空閑狀態(tài),用于加載系統(tǒng)參數(shù)的4種狀態(tài),以及用于計算模取冪的4X3種 狀態(tài)。實際的模取冪是在預(yù)先計算1、預(yù)先計算2、計算和計算后4種主要狀態(tài)下執(zhí)行的。 這些主要狀態(tài)的每一種都細分為3種子狀態(tài)load-B、B+M和計算乘法。根據(jù)狀態(tài)來對饋入 control-in的控制字編碼。以二分之一時鐘頻率對FSM計時。同樣對加載和讀取RAM和 DP RAM元件也成立。該措施確保最大傳播時間是在單元中。因而,最小時鐘周期時間和最 終所得的模取冪的速度與單元中的有效計算時間有關(guān),而與計算開銷無關(guān)。在計算模取冪之前,加載系統(tǒng)參數(shù)。從I/O將模數(shù)M的2u位讀入M-Reg中。從低 數(shù)位開始向高數(shù)位讀。從M-Reg將M的u位交替地饋給M-even-Bus和M-odd_Bus。每次 信號在兩個周期內(nèi)有效。當(dāng)時,從I/O讀取指數(shù)E的16位、并存儲到Exp-RAM中。來自I/ 0的最初16位寬的字指定了指數(shù)的位長。直到64個后面的字包含了實際的指數(shù)。當(dāng)時,從 I/O讀出預(yù)先計算系數(shù)22(m+2Vod M的2u位。將該2u位存儲到Prec-RAM中。在預(yù)先計算1狀態(tài)下,我們從I/O讀取X值,每個時鐘周期u位,并將它存儲到DP RAM Z中。同時,從Prec-RAM讀出預(yù)先計算系數(shù)22(m+2)mod Μ、并且每時鐘周期將u位交替地 通過B-even-Bus和B-odd_Bus饋給單元的B-Register。在接下來的兩個時鐘周期中,在單 元中計算B+M。用于方法1. 2的初值是可得的。兩個值都必須乘以2,這可以被并行地執(zhí)行,因 為兩個乘法操作都使用已經(jīng)存儲在B中的公共操作數(shù)22(m+2)mod Μ。時分復(fù)用(TDM)單 元從DP RAM Z讀出X,并將X與1復(fù)用。在2(m+3)個時鐘周期之后,結(jié)果的低數(shù)位出現(xiàn) 在Result-Out,并被存儲在DP RAM Z中。在一個周期之后,下一個結(jié)果的低數(shù)位出現(xiàn)在 Result-Out,并被存儲在DP RAM P中。該過程重復(fù)2m個周期,直到兩個結(jié)果的所有數(shù)位都 被存儲在DP RAM Z和DP RAM P中為止。結(jié)果X*2m+2mod M也被存儲在單元的B-Register 中。在預(yù)先計算2狀態(tài)下,方法1. 2的實際步驟開始。對于Zl和Pl兩者的計算,都將 ZO用作操作數(shù)。該值被存儲在B-Register中。第二操作數(shù)ZO或PO分別從DP RAM Z和 DP RAM P被讀出,并作為 、通過TDM被“泵”入單元中。在另外的2(m+3)個時鐘周期之 后,Zl和Pl的結(jié)果的低數(shù)位出現(xiàn)在Result-Out。Zl被存儲在DP RAM Z中。只有當(dāng)指數(shù) e0的第一位等于“1”時,才需要P1。取決于e0,Pl被存儲在DP RAM P中、或者被丟棄。在計算狀態(tài)下,方法1.2的循環(huán)被執(zhí)行n-1次。在每個周期之后DP RAM Z中的Zi 都被更新,并作為 被“泵”回到單元中。只有當(dāng)指數(shù)ei的相關(guān)位等于“1”時,才更新DP
18RAM P中的Pit5這樣,總是最后存儲的P被“泵”回到單元中。在en_i的處理之后,F(xiàn)SM進入計算后狀態(tài)。為了從結(jié)果Pn消除系數(shù)2m+2,計算最 終的Montgomery乘1。首先交替地通過B-even-Bus和B-odd-Bus、將向量0,0,... 0,1饋 入單元的B-Register中。從DP RAMP將Pn作為 泵入單元中。在執(zhí)行計算后狀態(tài)之后, 結(jié)果Pn = XE modM的u位在I/O端口處有效。每兩個時鐘周期另外的u位出現(xiàn)在I/O處。 現(xiàn)在可以立即重新進入預(yù)先計算1狀態(tài),以計算另一 X值。在2 (n+2) (m+4)個時鐘周期內(nèi)計算完整的模乘。那是從把X的最初u位插入設(shè)備 中,直到最初的u個結(jié)果位出現(xiàn)在輸出處為止的延遲。在那一點上,另一個X值可以進入設(shè) 備中。在附加的m/u個時鐘周期的等待時間之后,最后的u位出現(xiàn)在輸出總線上。以下,說明圖10中的功能塊。圖11顯示了 DP RAM Z的設(shè)計。m/uXu位DP RAM 在該單元的核心。它具有分開的寫(A)和讀(DPRA)地址輸入。計數(shù)直到m/u的寫計數(shù)器 計算寫地址(A)。當(dāng)Zi的最初u位出現(xiàn)在data-in時,寫計數(shù)器在B-Ioad子狀態(tài)下開始 計數(shù)(時鐘使能)。同時,DP RAM的使能信號有效,并且數(shù)據(jù)被存儲在DP RAM中。當(dāng)達到 m/u時,終端計數(shù)(terminal-count)使DP RAM的計數(shù)使能和寫使能復(fù)位。在計算子狀態(tài) 下,讀計數(shù)器被允許操作。當(dāng)讀計數(shù)器達到其上限m+2時,終端計數(shù)(terminal-count)觸 發(fā)FSM轉(zhuǎn)換為子狀態(tài)B-load。讀計數(shù)器值(q_out)的log2(m/u)最高有效位對DP RAM的 DPRA尋址。每u個周期讀出DP RAM中存儲的另一個值。當(dāng)q-out的Iog2 (U)最低有效位 達到O時,將該值加載到移位寄存器中。在接下來的u個周期,u位逐位地出現(xiàn)在移位寄存 器的串行輸出處。Zi的最后值被存儲在u位寄存器中。該辦法允許我們選擇m/uXu位DP RAM,而不是 2m/uXu 位 DP RAM(m = 2χ, χ = 8,9,10)。DP RAM P幾乎以同樣的方式工作。它具有附加的輸入61;在力=1的情況下,力 激活DP RAM的寫使能信號。圖12顯示了 Exp RAM的設(shè)計。在加載指數(shù)狀態(tài)(load-exponentstate)的第一周 期中,從1/0讀出第一個字,并存儲到10位寄存器中。它的值指定了指數(shù)的位長。在后續(xù)的 周期中,每次讀出指數(shù)的16位、并存儲在RAM中。通過6位寫計數(shù)器來計算存儲地址。在 每一個計算狀態(tài)開始時,10位讀計數(shù)器都被允許操作。它的6個最高有效位計算存儲器地 址。因而,每第16次激活,就從RAM讀出新的值。在讀計數(shù)器的4個最低有效位等于O的 同時,將該值存儲在16位移位寄存器中。當(dāng)讀計數(shù)器達到10位寄存器中指定的值時,終端 計數(shù)(terminal-count)信號觸發(fā)FSM進入計算后狀態(tài)。圖13顯示了 Prec RAM的設(shè)計。在加載預(yù)先系數(shù)狀態(tài)下,當(dāng)時從1/0讀出預(yù)先計 算系數(shù)的2u位、并存儲在RAM中。計數(shù)直到m/2u的計數(shù)器對RAM尋址。當(dāng)所有的m/2u個 值都被讀出時,終端計數(shù)(terminal-count)信號觸發(fā)FSM離開加載預(yù)先系數(shù)狀態(tài)。在預(yù)先計算1狀態(tài)下,從RAM讀出預(yù)先計算系數(shù),并饋給單元的B-Register。每個 時鐘周期都遞增計數(shù)器,并將2u位加載到2u位寄存器中。每個時鐘周期的正沿從那里將 u位饋在B-even-Bus上。在負時鐘邊沿,將u位饋在B-odd-Bus上。速度高效體系結(jié)構(gòu)以上設(shè)計是在資源使用方面進行優(yōu)化的。利用基數(shù)r = 2k,k > 1,將使方法1. 6 中的步驟數(shù)量減少k倍。方法1. 8的計算倍執(zhí)行m+3次(i = 0至m+2)。很容易按等級將速度高效設(shè)計分為3個級別。
處理部件計算模乘的4位模乘處理部件陣列計算模乘模取冪將模乘操作與根據(jù)方法1 · 2的模取冪相結(jié)合圖14顯示了處理部件的實施。提供了以下元件· B-Reg (4 位)存儲 B 乘數(shù)· B-Adder-Reg (5 位)存儲 B 的倍數(shù)· S-Reg(4位)存儲中間結(jié)果Si· Control-Reg(3位)控制多路復(fù)用器和時鐘使能· ai-Reg(4 位)乘數(shù) A· qi_Reg(4 位)商 Q· Result-Reg (4位)存儲在乘法末尾的結(jié)果· B-Adder (4位)將B加到先前計算的B的倍數(shù)上· B+M -Adder (4位)將M 的乘加到B的倍數(shù)上· S+B+M^-Adder (5 位)將 M Si 加到 B+M -Adder 上· B-RAM (16 X 4 位)存儲 B 的 16 倍數(shù)· M -RAM(16X4位)存儲M 的16倍數(shù)從以上參考的T. Blum的論題,以及從圖的回顧,單元的操作是顯然的。圖15顯示了處理部件怎樣連接到用于計算全尺寸模乘的陣列。圖16顯示了單元陣列怎樣用于模取冪。圖17顯示了 DP RAM Z的設(shè)計。mX4位DP RAM位于該單元的核心。它具有分開 的寫(A)和讀(DPRA)地址輸入。計數(shù)直到m+2的兩個計數(shù)器計算這些地址。當(dāng)Zi的第 一數(shù)位出現(xiàn)在data-in時,寫計數(shù)器在B-Ioad子狀態(tài)下開始計數(shù)(時鐘使能)。同時,DP RAM的使能信號有效,并且數(shù)據(jù)被存儲在DP RAM中。當(dāng)達到m+2時,寫計數(shù)器的終端計數(shù) (terminal-count)信號使兩個使能信號復(fù)位。在計算子狀態(tài)下讀計數(shù)器被允許操作。DP RAM的數(shù)據(jù)被讀計數(shù)器的q-out尋址、并立即出現(xiàn)在DPO處。當(dāng)讀計數(shù)器達到m+2時,終端 計數(shù)(terminal-count)觸發(fā)FSM轉(zhuǎn)變?yōu)锽-Ioad子狀態(tài)。最后兩個Zi值的每一個都被存 儲在4位寄存器中。該辦法允許我們選擇100%利用的mX 4位DP RAM,而不是僅僅50%利用的2mX4 位DP RAM。DP RAM P幾乎以同樣的方式工作。它具有附加的輸入在力=“ 1”的情況 下,e,激活DP RAM的寫使能信號。因為以上的流水線處理器體系結(jié)構(gòu)體現(xiàn)了許多流水線處理部件,所以常常難以、 并且代價高地在同一集成電路內(nèi)使每個部件與時鐘脈沖源同步。因此,本發(fā)明的極其有利 之處在于,通過簡化時鐘分配問題來減少總的資源需求。而且,因為在一個方向上需要加 法,而在另一個方向上需要乘法,所以顯然沿一條路徑所需的時間比沿另一條路徑所需的 時間多,因此根據(jù)本發(fā)明的實施例,路徑的時間平均是有可能的。在不背離本發(fā)明的精神和范圍的情況下,可以設(shè)想大量的其它實施例。
權(quán)利要求
一種處理數(shù)據(jù)的系統(tǒng),包括數(shù)據(jù)加密設(shè)備,所述數(shù)據(jù)加密設(shè)備包括以串行陣列的形式排列的多個單獨處理部件,其中第一處理部件在領(lǐng)先于最終處理部件的第二處理部件之前;端口,至少與串行陣列的處理部件電通信,以便提供數(shù)據(jù)給串行陣列進行處理;以及邏輯電路,該邏輯電路與所述端口以及串行陣列的至少兩個處理部件電通信,用于在使用中處理指示加密密鑰長度的數(shù)據(jù)以便確定串行陣列的最末處理部件,以及根據(jù)指示加密密鑰長度的數(shù)據(jù)而將信號提供給作為串行陣列的被確定處理部件的至少兩個處理部件之一,處理部件被配置為從第一處理部件以逐步正向串行的形式沿正向處理路徑來傳送用于進一步處理的數(shù)據(jù),僅僅到最末處理部件為止,并防止該數(shù)據(jù)經(jīng)過最末處理部件后的其他處理部件,其中,同一流水線處理器內(nèi)的至少兩個處理部件能夠被確定為最末處理部件,其中最末處理部件不同于最終處理部件。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其中多個單獨處理部件排列成兩個或多個流水線處理 陣列,其中陣列用于獨立地接收要處理的數(shù)據(jù),或者用于當(dāng)最末處理部件狀態(tài)是由超出單 個流水線處理陣列的最末處理部件以外的處理部件引起時,被連接到單個更大陣列中。
3.根據(jù)權(quán)利要求1所述的系統(tǒng),其中少于總數(shù)目的處理部件能夠被確定為最末處理部件。
4.根據(jù)權(quán)利要求3所述的系統(tǒng),其中能夠被確定為最末處理部件的處理部件進一步包 括用于接收所述信號的電路。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),其中邏輯電路是用于通過可尋址數(shù)據(jù)路徑將信號提供 給確定的處理部件的門邏輯開關(guān)電路。
6.根據(jù)權(quán)利要求4所述的系統(tǒng),其中邏輯電路包括第二處理器,用于執(zhí)行用來根據(jù)指示密鑰長度的數(shù)據(jù)來確定最末處理部件的程序代碼 以及提供信號給確定的處理部件;以及在第二處理器與串行陣列的至少兩個處理部件之間延伸的通信路徑,所述通信路徑用 于將所述信號從第二處理器引導(dǎo)至確定的處理部件。
7.—種處理數(shù)據(jù)的系統(tǒng),包括數(shù)據(jù)加密設(shè)備,所述數(shù)據(jù)加密設(shè)備包括以串行陣列的形式排列的多個單獨處理部件,其中第一處理部件在領(lǐng)先于最終處理部 件的第二處理部件之前;以及每個單獨處理部件內(nèi)部的邏輯電路,用于在使用中處理指示加密密鑰長度的數(shù)據(jù),以 及在處理部件的內(nèi)部提供指示最末處理部件狀態(tài)的信號,該信號根據(jù)指示加密密鑰長度的 數(shù)據(jù)來提供,處理部件被配置為從第一處理部件以逐步正向串行的形式沿正向處理路徑來傳送用 于進一步處理的數(shù)據(jù),僅僅到最末處理部件為止,并防止該數(shù)據(jù)經(jīng)過最末處理部件后的其 他處理部件;其中,同一流水線處理器內(nèi)的至少兩個處理部件能夠被確定為最末處理部件,其中最 末處理部件不同于最終處理部件。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其中多個單獨處理部件排列成兩個或多個流水線處理陣列,其中陣列用于獨立地接收要處理的數(shù)據(jù),或者用于當(dāng)最末處理部件狀態(tài)是由超出單 個流水線處理陣列的最末處理部件以外的處理部件引起時,被連接到單個更大陣列中。
9. 一種處理數(shù)據(jù)的系統(tǒng),包括數(shù)據(jù)加密設(shè)備,所述數(shù)據(jù)加密設(shè)備包括 以串行陣列的形式排列的多個單獨處理部件,其中第一處理部件在領(lǐng)先于最終處理部 件的第二處理部件之前;端口,至少與串行陣列的處理部件電通信,以便提供數(shù)據(jù)給串行陣列進行處理;以及 邏輯電路,該邏輯電路與所述端口以及串行陣列的至少兩個處理部件電通信,用于在 使用中處理指示加密密鑰長度的數(shù)據(jù)以便確定串行陣列的最末處理部件,以及根據(jù)指示加 密密鑰長度的數(shù)據(jù)而將信號提供給作為串行陣列的被確定處理部件的至少兩個處理部件 之一,其中,少于總數(shù)目的處理部件能夠被確定為最末處理部件,其中,能夠被確定為最末處理部件的處理部件進一步包括用于接收所述信號的電路,以及其中,所述邏輯電路包括第二處理器,用于執(zhí)行用來根據(jù)指示密鑰長度的數(shù)據(jù)來確定最末處理部件的程序代碼 以及提供信號給確定的處理部件;以及在第二處理器與串行陣列的至少兩個處理部件之間延伸的通信路徑,所述通信路徑用 于將所述信號從第二處理器引導(dǎo)至確定的處理部件。
全文摘要
本發(fā)明涉及一種以相似的效率處理任意密鑰位長加密操作的方法和設(shè)備,一種具有諸如以流水線形式排列的多級的計算設(shè)備或系統(tǒng),該計算設(shè)備或系統(tǒng)具有沿著級安置的計時軌或?qū)w。在大量的即幾百個級并行地排列成子陣列的情況下,計時導(dǎo)體沿著子陣列迂回延伸。在單個級中排列成,在級中進行的兩個計算中的最短計算出現(xiàn)在返回路徑中??梢詫㈥嚵蟹殖煞珠_的部件用于獨立處理。
文檔編號G06F12/14GK101916178SQ20101011408
公開日2010年12月15日 申請日期2003年8月25日 優(yōu)先權(quán)日2002年8月26日
發(fā)明者哈非茲·扎阿比 申請人:睦塞德技術(shù)公司