專利名稱:以相似的效率處理任意密鑰位長(zhǎng)加密操作的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及并行處理器,并尤其涉及一種能夠利用相同處理器、以相似的效率來(lái)處理任意密鑰位長(zhǎng)加密操作的并行處理器。
背景技術(shù):
例如通過(guò)諸如萬(wàn)維網(wǎng)(WWW)的因特網(wǎng)的廣泛分布式信息網(wǎng)絡(luò)在各方之間交換電子存儲(chǔ)的文件正變得較為常見(jiàn)。因特網(wǎng)的常見(jiàn)問(wèn)題是缺少安全通信信道。因而,為了使醫(yī)院、政府、銀行、股票經(jīng)紀(jì)人和信用卡公司利用因特網(wǎng),必須確保保密性和安全性。解決上述問(wèn)題的一種方法是在發(fā)送之前使用數(shù)據(jù)加密。在現(xiàn)有技術(shù)系統(tǒng)中,主計(jì)算機(jī)系統(tǒng)裝備有加密單元,例如與用于至少存儲(chǔ)私有加密密鑰的至少一個(gè)存儲(chǔ)電路進(jìn)行電通信的加密處理器。當(dāng)信息要從主計(jì)算機(jī)系統(tǒng)、通過(guò)因特網(wǎng)發(fā)送給接收器、并且具有機(jī)密性質(zhì)時(shí),信息首先被傳遞到加密處理器,以便利用存儲(chǔ)的私有密鑰對(duì)信息加密。典型地,每當(dāng)執(zhí)行加密操作時(shí),都使用相同的私有密鑰。作為替換,從與加密處理器進(jìn)行電通信的至少一個(gè)存儲(chǔ)電路中存儲(chǔ)的一組有限的加密密鑰中選擇加密密鑰。
當(dāng)然,由加密處理器執(zhí)行的數(shù)據(jù)加密操作是算術(shù)算法,其中輸入數(shù)據(jù)值,例如散列型式的電子文件,是唯一變量值。因此,有可能對(duì)加密處理器進(jìn)行優(yōu)化,以便利用最少量的處理器資源來(lái)執(zhí)行期望的加密功能。另外,在現(xiàn)有技術(shù)加密單元中,優(yōu)化的加密處理器典型地與主計(jì)算機(jī)系統(tǒng)的微處理器分開(kāi),因?yàn)榧用軉卧@樣被最佳地優(yōu)化。
現(xiàn)今,對(duì)于通過(guò)加密/解密的因特網(wǎng)上保密性和強(qiáng)鑒定有幾種標(biāo)準(zhǔn)。典型地,根據(jù)意圖允許在各方之間在公開(kāi)信道上進(jìn)行數(shù)據(jù)傳送,同時(shí)維持消息內(nèi)容的保密性的算法,來(lái)執(zhí)行加密/解密。這是通過(guò)由發(fā)送器利用加密密鑰對(duì)數(shù)據(jù)加密,并由接收器利用解密密鑰對(duì)數(shù)據(jù)解密來(lái)實(shí)現(xiàn)的。在對(duì)稱密鑰密碼術(shù)中,加密密鑰和解密密鑰相同。
加密算法典型地被分類為公開(kāi)密鑰(public-key)和秘密密鑰(secret-key)算法。在秘密密鑰算法中密鑰是秘密的,而在公開(kāi)密鑰算法中,使密鑰之一廣為公眾所知。分組密碼是當(dāng)今使用的秘密密鑰密碼系統(tǒng)的代表。通常,對(duì)于分組密碼,使用對(duì)稱密鑰。分組密碼取一塊數(shù)據(jù),典型地為32-128位,作為輸入數(shù)據(jù),并產(chǎn)生相同的位數(shù)作為輸出數(shù)據(jù)。利用具有典型地在56-128位范圍內(nèi)的長(zhǎng)度的密鑰,來(lái)執(zhí)行加密和解密操作。加密算法被設(shè)計(jì)成在不知道密鑰的情況下很難對(duì)消息解密。
除分組密碼(block cipher)以外,因特網(wǎng)安全協(xié)議也依賴于基于公開(kāi)密鑰的算法。諸如Pogue和Rivest的美國(guó)專利No.5,144,667中描述的Rivest、Shamir、Adelman(RSA)加密系統(tǒng)的公開(kāi)密鑰加密系統(tǒng)使用兩個(gè)密鑰,其中一個(gè)是秘密—私有的,而另一個(gè)是公開(kāi)可得的。一旦某人公開(kāi)了公開(kāi)密鑰,任何人都可以向那個(gè)人發(fā)送利用那個(gè)公開(kāi)密鑰加密的秘密消息;然而,只能利用私有密鑰來(lái)實(shí)現(xiàn)消息的解密。這種公開(kāi)密鑰加密的優(yōu)點(diǎn)是,事先不將私有密鑰分發(fā)給會(huì)話的所有方。相反,當(dāng)使用對(duì)稱加密時(shí),多個(gè)秘密密鑰被產(chǎn)生,想要接收消息的每一方一個(gè)秘密密鑰,并且每個(gè)秘密密鑰被秘密地傳送。試圖以安全的形式分發(fā)秘密密鑰導(dǎo)致了與只利用秘密密鑰加密發(fā)送消息所面臨的問(wèn)題類似的問(wèn)題;這典型地被稱為密鑰分發(fā)問(wèn)題。
密鑰交換是公開(kāi)密鑰技術(shù)的另一個(gè)應(yīng)用。在密鑰交換協(xié)議中,雙方能夠約定秘密密鑰,即使第三方截取了他們的會(huì)話。美國(guó)專利No.4,200,770中描述的Diffie-Hellman指數(shù)密鑰交換方法是這種協(xié)議的例子。
大多數(shù)的公開(kāi)密鑰算法,諸如RSA和Diffie-Hellman密鑰交換,是基于模取冪,模取冪是αx模p的計(jì)算。該表達(dá)式表示,“使α乘以它自己x倍,使答案除以p,并取余數(shù)”。由于以下原因,該計(jì)算執(zhí)行起來(lái)計(jì)算量非常大。為了執(zhí)行該操作,需要許多重復(fù)的乘法操作和除法操作。諸如“Modular Multiplication Without Trial Division”,Mathematics of Computation,Vol.44,No.170,April,1985中描述的Montgomery方法的技術(shù)能夠減少除法操作數(shù),但是沒(méi)有克服該總體計(jì)算開(kāi)銷。另外,對(duì)于當(dāng)前的數(shù)據(jù)加密系統(tǒng),使用的數(shù)非常大(典型地為1024位或更多),因此普通中央處理器(CPU)中存在的乘法和除法指令不能直接使用。而是,使用特定算法來(lái)將大的乘法操作和除法操作分解成小得足以在CPU上執(zhí)行的操作。這些算法通常具有與所涉及的機(jī)器字的數(shù)量的平方成比例的運(yùn)行時(shí)間。例如,Pentium處理器能夠在10個(gè)時(shí)鐘周期內(nèi)執(zhí)行32×32位乘法。2048位的數(shù)可以表示為64個(gè)32位的字。2048×2048位的乘需要64×64個(gè)單獨(dú)的乘法操作,這在Pentium處理器上花費(fèi)40960個(gè)時(shí)鐘。如果直接執(zhí)行,則對(duì)2048位指數(shù)取冪需要直到4096次乘法操作,這需要大約167百萬(wàn)個(gè)時(shí)鐘周期。如果Pentium處理器以166MHz運(yùn)行,則全部操作大概需要一秒。當(dāng)然,除法操作進(jìn)一步增加了整個(gè)計(jì)算時(shí)間。顯然,諸如Pentium的普通CPU不能期望以任何高的速率來(lái)執(zhí)行密鑰產(chǎn)生和交換。
包括以串行陣列形式排列的多個(gè)獨(dú)立處理部件尤其是大量處理部件的流水線處理器在現(xiàn)有技術(shù)中是周知的,并且尤其適于執(zhí)行數(shù)據(jù)加密算法。兩種類型的流水線處理器是周知的一端進(jìn)且另一端出類型的處理器,其中存在單一處理方向;以及同一端進(jìn)和出類型的雙向處理器,其中存在正向處理方向和返回處理方向??紤]雙向流水線處理器的特定例子,第一數(shù)據(jù)塊從存儲(chǔ)緩沖器被讀入串行陣列的第一處理部件,第一處理部件執(zhí)行第一階段處理,然后將第一數(shù)據(jù)塊傳遞給第二處理部件。第二處理部件執(zhí)行第二階段處理,同時(shí)第一處理部件并行地從存儲(chǔ)緩沖器讀出第二數(shù)據(jù)塊,并對(duì)第二數(shù)據(jù)塊執(zhí)行相同的第一處理階段。依次地,每個(gè)數(shù)據(jù)塊以逐步的形式沿串行陣列的正向處理方向從一個(gè)處理部件傳播到下一個(gè)處理部件。在每一步都有處理階段,該處理階段對(duì)所提供的每一個(gè)數(shù)據(jù)塊執(zhí)行相同的數(shù)學(xué)運(yùn)算。同時(shí),關(guān)于返回處理方向,在每一個(gè)處理部件中計(jì)算的結(jié)果被提供給串行陣列的前一個(gè)處理部件,這些結(jié)果總計(jì)包括了加密處理器返回的經(jīng)過(guò)處理的數(shù)據(jù)。這種使用大量處理部件的流水線數(shù)據(jù)處理方法是執(zhí)行前述的大計(jì)算量的數(shù)據(jù)加密算法的非常有效方法。當(dāng)然,用于執(zhí)行大計(jì)算量處理操作的流水線處理器的應(yīng)用并不嚴(yán)格限于已經(jīng)舉例詳細(xì)討論的數(shù)據(jù)加密算法。
現(xiàn)有技術(shù)加密處理器的缺點(diǎn)是,處理器限于固定的密鑰大小或者作為替換地限于固定的性能。因而,或者處理器只處理例如128位的密鑰,或者處理器需要用與處理40位加密操作所花時(shí)間相等的時(shí)間,來(lái)處理128位加密操作。典型地,這兩種設(shè)計(jì)要求考慮到處理器的最佳性能。
提供一種能夠利用相同處理器以相似的效率來(lái)處理任意密鑰位長(zhǎng)加密操作的并行處理器將是有利的。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,提供一種處理數(shù)據(jù)的方法,該方法包括以下步驟a)提供包括以串行陣列的形式排列的n個(gè)單獨(dú)處理部件的流水線處理器,以致第一處理部件在領(lǐng)先于第n處理部件的第二處理部件之前;b)提供m位加密密鑰給流水線處理器;c)將指示加密密鑰長(zhǎng)度的數(shù)據(jù)提供給流水線處理器;d)將數(shù)據(jù)提供給第一處理部件以便處理;e)至少根據(jù)指示加密密鑰長(zhǎng)度的數(shù)據(jù)來(lái)確定最末處理部件;f)將指示處理部件是最末處理部件的信號(hào)提供給最末處理部件;g)從第一處理部件以逐步正向串行的形式來(lái)傳送用于進(jìn)一步處理的數(shù)據(jù),僅僅到最末處理部件為止;以及其中,同一流水線處理器內(nèi)的至少兩個(gè)處理部件可以被確定為最末處理部件。
根據(jù)本發(fā)明,提供一種處理數(shù)據(jù)的設(shè)備,備包括以串行陣列的形式排列的多個(gè)單獨(dú)處理部件,其中第一處理部件在領(lǐng)先于第n處理部件的第二處理部件之前;端口,至少與串行陣列的處理部件電通信以便提供數(shù)據(jù)給串行陣列進(jìn)行處理;以及邏輯電路,該邏輯電路與所述端口以及串行陣列的至少兩個(gè)處理部件電通信,用于在使用中處理指示加密密鑰長(zhǎng)度的數(shù)據(jù)以便確定串行陣列的最末處理部件,以及根據(jù)指示加密密鑰長(zhǎng)度的數(shù)據(jù)將信號(hào)提供給作為串行陣列的被確定處理部件的至少兩個(gè)處理部件之一。
根據(jù)本發(fā)明,提供一種處理數(shù)據(jù)的設(shè)備,包括以串行陣列的形式排列的多個(gè)單獨(dú)處理部件,其中第一處理部件在領(lǐng)先于第n處理部件的第二處理部件之前;以及每個(gè)單獨(dú)處理部件內(nèi)部的邏輯電路,用于在使用中處理指示加密密鑰長(zhǎng)度的數(shù)據(jù),以及將指示最末處理部件狀態(tài)(last processingelement status)的信號(hào)提供給處理部件的內(nèi)部,該信號(hào)根據(jù)指示加密密鑰長(zhǎng)度的數(shù)據(jù)來(lái)提供。
由以下連同附圖的優(yōu)選實(shí)施例的說(shuō)明,本發(fā)明將更容易理解,其中圖1顯示了根據(jù)先有技術(shù)的流水線處理器的實(shí)施例的簡(jiǎn)化框圖;圖2顯示了根據(jù)先有技術(shù)的流水線處理器的另一個(gè)實(shí)施例的簡(jiǎn)化框圖;圖3a顯示了根據(jù)本發(fā)明第一實(shí)施例的具有分布式遞減電路的流水線處理器的簡(jiǎn)化框圖;圖3b顯示了與分布式遞減電路通信的圖3a的流水線處理器的串行處理器陣列的簡(jiǎn)化框圖;圖4a顯示了根據(jù)本發(fā)明第二實(shí)施例的具有電路的流水線處理器的簡(jiǎn)化框圖;圖4b顯示了與該電路通信的圖4a的流水線處理器的串行處理器陣列的簡(jiǎn)化框圖;圖5a顯示了根據(jù)本發(fā)明第三實(shí)施例的流水線處理器的簡(jiǎn)化框圖;圖5b顯示了其中每個(gè)處理部件都具有內(nèi)部遞減電路的圖4a的流水線處理器的串行處理器陣列的簡(jiǎn)化框圖;
圖6顯示了根據(jù)本發(fā)明的流水線處理器的第四優(yōu)選實(shí)施例的簡(jiǎn)化框圖;圖7顯示了根據(jù)本發(fā)明的流水線處理器的第五優(yōu)選實(shí)施例的簡(jiǎn)化框圖;圖8是供用于執(zhí)行加密功能的流水線陣列處理器之用的資源高效處理部件設(shè)計(jì)的框圖;圖9是用于模乘的脈動(dòng)陣列(systolic array)的框圖;圖10是其輸入路徑被顯示的單個(gè)單元的框圖;圖11是DP RAM Z單元的框圖;圖12是Exp RAM單元的框圖;圖13是Prec RAM單元的框圖;圖14是供用于執(zhí)行加密功能的流水線陣列處理器之用的速度高效處理部件設(shè)計(jì)的框圖;圖15是用于模乘的脈動(dòng)陣列的框圖;圖16是其輸入路徑被顯示的單一單元的框圖;以及圖17是DP RAMZ單元的框圖。
具體實(shí)施例方式
本發(fā)明涉及供加密操作之用的并行處理器的實(shí)施過(guò)程,該實(shí)施過(guò)程使得并行處理器在沒(méi)有大大犧牲效率的情況下支持可變長(zhǎng)度加密密鑰。
參考圖1,圖1顯示了根據(jù)現(xiàn)有技術(shù)的流水線處理器1的簡(jiǎn)化框圖。處理器1包括多個(gè)處理部件,例如支持256位加密的串行陣列2。輸入/輸出端口3與陣列2的第一處理部件(未顯示)通信,用于從例如也在操作中與端口3通信的客戶站(client station)(未顯示)接收要被處理器1處理的數(shù)據(jù)。
為了執(zhí)行加密操作,將預(yù)定長(zhǎng)度的加密密鑰提供給處理器1,并且執(zhí)行加密操作。作為替換,如果加密密鑰少于預(yù)定長(zhǎng)度,則填補(bǔ)加密密鑰以使加密密鑰變成預(yù)定長(zhǎng)度,然后執(zhí)行操作。在任何一種情況下,操作都花費(fèi)近似相同的預(yù)定量時(shí)間。不幸的是,當(dāng)密鑰長(zhǎng)度變得更長(zhǎng)時(shí),用于處理以前的更短密鑰的現(xiàn)有技術(shù)處理器1的效率降低了。例如,被設(shè)計(jì)成可供256位密鑰使用的處理器將以用于處理僅僅40位密鑰的大約六分之一“高效”時(shí)間,來(lái)處理被填補(bǔ)到256位的40位密鑰。這是很差的資源分配。為了更好地分配資源,一些處理器包括多個(gè)處理器陣列,每個(gè)處理器陣列用于處理不同長(zhǎng)度的加密密鑰,如圖2所示。因而,處理器將包括40位加密處理器陣列2a,128位加密處理器陣列2b和256位加密處理器陣列2c。輸入/輸出端口3分別與每個(gè)陣列2a、2b、2c的第一處理部件通信,用于從例如也在操作中與端口3通信的客戶站(未顯示)接收要被處理器4處理的數(shù)據(jù)。這種高效實(shí)施的資源使用的效率低,因而是不合需要的。
現(xiàn)在參考圖3a,圖3a顯示了根據(jù)本發(fā)明第一實(shí)施例用于以相似的效率來(lái)處理任意密鑰位長(zhǎng)加密操作的流水線處理器5的簡(jiǎn)化框圖。流水線處理器5包括至少一個(gè)陣列,并且在圖3a中顯示了多個(gè)處理器部件(處理器部件未顯示)陣列6a、6b、6c,例如陣列6a和6b的每一個(gè)都支持256位加密,而陣列6c支持512位加密。輸入/輸出端口3分別與每個(gè)陣列6a、6b、6c的第一處理部件通信,用于從也在操作中與端口3通信的客戶站(未顯示)接收要被流水線處理器5處理的數(shù)據(jù)。另外,邏輯電路7與輸入/輸出端口3以及與末位信號(hào)導(dǎo)體(conductor)9進(jìn)行電通信,該導(dǎo)體9以曲折的形式沿著每個(gè)陣列6a、6b、6c內(nèi)的每個(gè)部件延伸。邏輯電路7用于接收指示加密密鑰長(zhǎng)度的數(shù)據(jù)、以及取決于所述數(shù)據(jù)而通過(guò)導(dǎo)體9向每個(gè)陣列6a、6b、6c內(nèi)的每個(gè)部件提供信號(hào)。
現(xiàn)在參考圖3b,圖3b顯示了包括處理器部件81、82、83、...、及8n的串行陣列6a(為簡(jiǎn)明起見(jiàn)省略了陣列6b和6c)的簡(jiǎn)化框圖。每個(gè)處理器部件8分別通過(guò)連接11與末位信號(hào)導(dǎo)體9進(jìn)行電通信。作為特例,每個(gè)處理器部件是8位處理器部件,以致于串行陣列6a包括32個(gè)單獨(dú)的處理器部件以便支持256位加密。因而,處理器資源的最有效分配需要5個(gè)單獨(dú)的處理器部件來(lái)執(zhí)行40位加密操作,8個(gè)單獨(dú)處理器部件來(lái)執(zhí)行64位加密操作,以及16個(gè)單獨(dú)處理器部件來(lái)執(zhí)行128位加密操作等等。任選地,可以使用不同于8位處理器部件的處理器部件。
說(shuō)明性地考慮特定例子,例如需要至少5個(gè)單獨(dú)的8位處理器部件來(lái)完成的40位加密操作。在使用中,客戶站(未顯示)通過(guò)端口3提供要加密的數(shù)據(jù),例如作為總計(jì)包括完整數(shù)據(jù)文件的單個(gè)數(shù)據(jù)塊的流。在第一處理周期開(kāi)始時(shí),陣列6a中的第一處理器部件81從端口3的緩沖存儲(chǔ)器(未顯示)接收第一數(shù)據(jù)塊,并對(duì)第一數(shù)據(jù)塊執(zhí)行預(yù)定的第一階段處理。在該例子中,第一階段處理對(duì)應(yīng)于利用加密密鑰的8位段的加密操作。當(dāng)然,第一處理器部件81與端口3的緩沖存儲(chǔ)器(未顯示),以及與邏輯電路7是時(shí)間同步的,以致數(shù)據(jù)塊的流被同步地選通到第一處理器部件81。在第二處理周期開(kāi)始時(shí),第一處理器部件81通過(guò)端口3接收第二數(shù)據(jù)塊。近似同時(shí)地,第一處理器部件81以第一數(shù)據(jù)塊的形式將輸出沿正向處理路徑提供給第二處理器部件82。另外,第一處理器部件81把在其中計(jì)算的第一結(jié)果沿返回處理路徑提供給端口3的緩沖存儲(chǔ)器。這種處理數(shù)據(jù)的流水線方法繼續(xù),直到最終結(jié)果沿返回處理路徑被提供給端口3的緩沖存儲(chǔ)器為止。
有利地,數(shù)據(jù)塊的流被同步地選通到第一處理器部件81,如前面所述的。在每個(gè)處理周期開(kāi)始時(shí),邏輯電路7使指示加密密鑰長(zhǎng)度的數(shù)據(jù)遞減預(yù)定量。在該例子中,加密密鑰長(zhǎng)度是40,需要5個(gè)處理器部件來(lái)完成加密操作,因而指示加密密鑰長(zhǎng)度的數(shù)據(jù)代表5值。于是,在第一處理周期開(kāi)始時(shí),邏輯電路7使值5遞減1,以指示剩下4個(gè)處理周期。在第二至第五處理周期開(kāi)始時(shí),該值進(jìn)一步被遞減,此時(shí)邏輯電路7返回零值。如果指示加密數(shù)據(jù)已結(jié)束的零值產(chǎn)生了,則邏輯電路7通過(guò)末位信號(hào)導(dǎo)體9向每個(gè)處理器部件發(fā)送末位信號(hào)。剛好沿正向處理路徑收到末位信號(hào)的處理器部件,在該情況下為第五處理器部件,立刻“知道”它是最末處理器部件、并使數(shù)據(jù)轉(zhuǎn)向,以致數(shù)據(jù)不沿正向處理路徑傳播通過(guò)所述處理器部件。在最末處理器部件之前的每一個(gè)處理器部件在末位信號(hào)被發(fā)送時(shí),既沿正向處理路徑又沿返回處理路徑接收數(shù)據(jù),這表示不是最末部件狀態(tài)。
當(dāng)然,如果在特殊處理周期期間邏輯電路7的值達(dá)到非零值,則處理正常地繼續(xù)。例如,在第二處理周期期間,第一處理器部件81對(duì)第二數(shù)據(jù)塊執(zhí)行相同的第一處理操作,并且第二處理器部件82對(duì)第一數(shù)據(jù)塊執(zhí)行第二處理操作。在第二處理周期末尾,第一數(shù)據(jù)塊沿著第二處理器部件82與第三處理器部件83之間的正向處理路徑傳播。同時(shí),第二數(shù)據(jù)塊沿著第一處理器部件81與第二處理器部件82之間的正向處理路徑傳播。另外,第二處理器部件82把在其中計(jì)算的結(jié)果沿著返回處理路徑提供給第一處理器部件81。當(dāng)然,同時(shí)沿著相鄰處理器部件之間的正向處理路徑及返回處理路徑選通數(shù)據(jù)塊典型地涉及同步定時(shí)。
利用所示的雙向流水線設(shè)計(jì),高效地計(jì)算結(jié)果而與密鑰長(zhǎng)度無(wú)關(guān),并且避免了附加的處理周期。用于支持不同長(zhǎng)度密鑰的處理器在設(shè)備中的使用同時(shí)支持多個(gè)高效加密過(guò)程一每個(gè)過(guò)程都具有最大的密鑰大小。也就是說(shuō),在普通加密處理系統(tǒng)中,容易將統(tǒng)計(jì)學(xué)用于選擇處理器大小,以便在統(tǒng)計(jì)學(xué)上為給定的資源使用提供最佳的性能。
作為替換,末位信號(hào)導(dǎo)體9只與處理器部件8的子集進(jìn)行電連接。例如,在串行陣列6a中,末位信號(hào)導(dǎo)體9任選地連接到每第四個(gè)處理器部件。因此利用8位處理器部件,處理器5將加密數(shù)據(jù)處理為一系列的32位段。對(duì)于支持通過(guò)32位段處理的直到256位加密的處理器,支持8種可能的長(zhǎng)度。有利的是,用于將末位信號(hào)從邏輯電路7引導(dǎo)至處理器部件的數(shù)據(jù)路進(jìn)的數(shù)量從32減少到僅僅8個(gè)單獨(dú)的數(shù)據(jù)路徑,大大方便了處理器5的制造的容易。不幸的是,對(duì)于不能被32位除的加密密鑰長(zhǎng)度,例如在處理之前被填補(bǔ)到至少64位的40位加密密鑰,處理資源以較低效率被分配。因而,數(shù)據(jù)在第八個(gè)處理器部件而不是在如上所討論的第五個(gè)處理器部件被轉(zhuǎn)向。
現(xiàn)在參考圖4a和圖4b,圖4a和4b顯示了根據(jù)本發(fā)明第二實(shí)施例用于以相似的效率來(lái)處理任意密鑰位長(zhǎng)加密操作的流水線處理器20的簡(jiǎn)化框圖。在此,與先前參考圖3a和圖3b描述的部件相同的部件具有相同的附圖標(biāo)記,并且為簡(jiǎn)潔起見(jiàn)省略了對(duì)它們的論述。例如包括一系列門(gate)的開(kāi)關(guān)網(wǎng)絡(luò)21另外與輸入/輸出端口3電通信,以及與一系列硬連線的(hardwired)可尋址數(shù)據(jù)路徑22電通信。開(kāi)關(guān)網(wǎng)絡(luò)21用于接收指示加密密鑰長(zhǎng)度的數(shù)據(jù),以及用于通過(guò)一系列硬連線的可尋址數(shù)據(jù)路徑22將信號(hào)提供給確定的處理部件。在使用中,指示加密密鑰長(zhǎng)度的數(shù)據(jù)被提供給開(kāi)關(guān)網(wǎng)絡(luò)21,以致該一系列門確定指示最末處理部件狀態(tài)的信號(hào)要發(fā)送給哪個(gè)處理器部件8。開(kāi)關(guān)網(wǎng)絡(luò)21通過(guò)硬連線的可尋址數(shù)據(jù)路徑22的選定數(shù)據(jù)路徑將所述信號(hào)發(fā)送給確定的處理部件。例如,該信號(hào)用于將確定的處理部件的位設(shè)置為指示最末處理部件狀態(tài)的值。有利地,當(dāng)確定的處理部件完成數(shù)據(jù)加密處理時(shí),該處理部件立即使數(shù)據(jù)轉(zhuǎn)向,使得數(shù)據(jù)被端口3的緩沖存儲(chǔ)器(未顯示)讀出。當(dāng)然,任選地在開(kāi)關(guān)網(wǎng)絡(luò)21與處理部件的預(yù)定子集,例如每第四個(gè)處理部件之間提供數(shù)據(jù)路徑。有利的是,數(shù)據(jù)路徑的總數(shù)以及開(kāi)關(guān)網(wǎng)絡(luò)的復(fù)雜性減小了。不幸的是,對(duì)于不能被32位除的加密密鑰長(zhǎng)度,例如在處理之前被填補(bǔ)到至少64位的40位加密密鑰,處理資源以較低效率被分配。
現(xiàn)在參考圖5a和圖5b,圖5a和5b顯示了根據(jù)本發(fā)明第三實(shí)施例用于以相似的效率來(lái)處理任意密鑰位長(zhǎng)加密操作的流水線處理器12的簡(jiǎn)化框圖。在此,與先前參考圖3a和圖3b描述的部件相同的部件具有相同的附圖標(biāo)記,并且為簡(jiǎn)潔起見(jiàn)省略了對(duì)它們的論述。根據(jù)本發(fā)明第三實(shí)施例,每個(gè)單獨(dú)處理部件14都包括專用邏輯電路15。在使用中,指示加密密鑰長(zhǎng)度的數(shù)據(jù)連同要加密的數(shù)據(jù)一起被提供給第一處理器部件141。第一處理器部件141對(duì)第一數(shù)據(jù)塊執(zhí)行預(yù)定的第一階段處理,并且另外使指示加密密鑰長(zhǎng)度的數(shù)據(jù)遞減預(yù)定量。遞減的指示加密密鑰長(zhǎng)度的數(shù)據(jù)連同第一數(shù)據(jù)塊一起被提供給第二處理器部件142。第二處理器部件142的邏輯電路接收該遞減的指示加密密鑰長(zhǎng)度的數(shù)據(jù),并使所述數(shù)據(jù)遞減附加的預(yù)定量。如果第二處理器部件142的邏輯電路計(jì)算零值,則第二處理器部件142的邏輯電路在第二處理器部件142內(nèi)部產(chǎn)生指示最末處理器部件狀態(tài)的信號(hào)。近似與第二處理器部件142完成預(yù)定的第二階段處理同時(shí)地,第二處理器部件142使數(shù)據(jù)轉(zhuǎn)向,并且經(jīng)過(guò)處理的數(shù)據(jù)被讀出串行陣列13a,并被讀入端口3的緩沖存儲(chǔ)器(未顯示)。
參考圖6,圖6顯示了根據(jù)本發(fā)明第四優(yōu)選實(shí)施例的流水線處理器16的簡(jiǎn)化框圖。流水線處理器16包括多個(gè)處理器部件(未顯示的處理器部件)陣列6a、6b和6c,例如陣列6a和6b的每一個(gè)都支持256為加密操作,而陣列6c支持512位加密操作。虛線17a和17b分別表示用于在陣列6a的最末處理部件與陣列6b的最末處理部件之間提供電通信的任選電耦合,以及用于在陣列6b的第一處理部件與陣列6c的第一處理部件之間提供電通信的任選電耦合。與每個(gè)陣列6a、6b、6c的第一處理部件通信的輸入/輸出端口3用于接收由也在操作中與輸入/輸出端口3通信的客戶站(未顯示)提供的數(shù)據(jù),該數(shù)據(jù)要被陣列6a、6b和6c中的一個(gè)專門陣列處理。在此,提供了三個(gè)處理器,每個(gè)處理器具有支持的最大加密密鑰大小,但是其中三個(gè)處理器可任選地被連接以形成一個(gè)1024位處理器。當(dāng)然,也有可能裝備任意長(zhǎng)度的處理器,但是這常常招致大量的尋址開(kāi)銷,而這是不合乎需要的。當(dāng)然,當(dāng)希望最大限度的靈活性時(shí),按照該實(shí)施例來(lái)把許多例如用于處理64位密鑰的較小處理陣列連在一起。
因?yàn)橹甘久荑€長(zhǎng)度的數(shù)據(jù)連同待處理的數(shù)據(jù)及加密密鑰一起被提供給處理器,因此處理器能夠分配足夠的處理單元給任務(wù),并由此高效地分配資源。所示的處理器16具有邏輯電路7,如先前參考圖3a和圖3b所討論的情況一樣。因而,在該實(shí)施例中,邏輯電路計(jì)算被處理器16處理的位數(shù),將計(jì)數(shù)與指示加密密鑰長(zhǎng)度的數(shù)據(jù)進(jìn)行比較,以及取決于指示加密數(shù)據(jù)結(jié)束的比較,來(lái)通過(guò)最末處理器信號(hào)導(dǎo)體9發(fā)送通用信號(hào)。任選地,使用用于指示最末處理器部件狀態(tài)的其它系統(tǒng),例如參考本發(fā)明第二和第三實(shí)施例之一所述的系統(tǒng)。
現(xiàn)在參考圖7,圖7顯示了根據(jù)本發(fā)明第五優(yōu)選實(shí)施例的流水線處理器18的簡(jiǎn)化框圖。流水線處理器18包括多個(gè)處理器部件(未顯示的處理器部件)陣列6a、6b和6c,例如陣列6a和6b的每一個(gè)都支持256為加密操作,而陣列6c支持512位加密操作。陣列6a的最末處理部件與陣列6b的最末處理部件通過(guò)硬件連接19a進(jìn)行電通信,并且陣列6b的第一處理部件與陣列6c的第一處理部件通過(guò)硬件連接19b進(jìn)行電通信。與陣列6a的第一處理部件通信的輸入/輸出端口3用于接收由也在操作中與輸入/輸出端口3通信的客戶站(未顯示)提供的數(shù)據(jù),該數(shù)據(jù)要被陣列6a、6b和6c的串行配置處理。任選地,提供單獨(dú)的輸入(未顯示),以便直接將數(shù)據(jù)選通到至少除陣列6a的第一部件之外的處理器部件。
在此,陣列6b是雙向的,并且因?yàn)榱魉€過(guò)程被實(shí)施為雙向流水線過(guò)程,因此一旦陣列6b完成了相對(duì)于其另一個(gè)方向上發(fā)生的操作的處理,就有可能利用陣列6b的最末部件來(lái)開(kāi)始。因而,大大地提高了效率。
因?yàn)橹甘久荑€長(zhǎng)度的數(shù)據(jù)連同待處理的數(shù)據(jù)及加密密鑰一起被提供給處理器,因此處理器能夠分配足夠的處理單元給任務(wù)、并由此高效地分配資源。所示的處理器18具有邏輯電路7,如先前參考圖3a和圖3b所討論的情況一樣。因而,在該實(shí)施例中,邏輯電路計(jì)算被處理器18處理的位數(shù),將計(jì)數(shù)與指示加密密鑰長(zhǎng)度的數(shù)據(jù)進(jìn)行比較,以及根據(jù)指示加密數(shù)據(jù)結(jié)束的比較,來(lái)通過(guò)最末處理器信號(hào)導(dǎo)體9發(fā)送通用信號(hào)。任選地,使用用于指示最末處理器部件狀態(tài)的其它系統(tǒng),例如參考本發(fā)明第二和第三實(shí)施例之一所述的系統(tǒng)。
圖6和圖7的流水線處理器16和18分別可以在以下模式下操作其中使被選通到陣列6a的最末處理器部件的數(shù)據(jù)可以被陣列6b的最末處理器部件得到。例如,當(dāng)某一特殊處理操作需要超過(guò)256個(gè)處理器部件時(shí),通過(guò)在第二個(gè)不同陣列中繼續(xù)該處理操作來(lái)增加處理器陣列的有效長(zhǎng)度。當(dāng)然,當(dāng)某一特殊處理操作需要超過(guò)512個(gè)處理器部件時(shí),通過(guò)在第三個(gè)不同陣列中繼續(xù)該處理操作來(lái)增加處理器陣列的有效長(zhǎng)度。例如,圖6和圖7中所示的流水線處理器中的任何一個(gè)都可以操作以便執(zhí)行利用一個(gè)陣列的256位加密;利用兩個(gè)不同陣列的512位加密;以及利用所有3個(gè)不同陣列的1024位加密。
有利的是,因?yàn)橹捞幚砥魇裁磿r(shí)候?qū)⑼瓿商幚?,因此有可能指示那個(gè)處理器進(jìn)行另一個(gè)處理器的下游的處理。例如,假定處理器6a具有用于處理256位加密操作的處理部件,并開(kāi)始處理256位加密操作。假定6b是類似的處理器。如果,有時(shí)在處理部件6a開(kāi)始處理之后并且在它被完成之前用于512位操作的處理請(qǐng)求到來(lái)了,則有可能在知道當(dāng)數(shù)據(jù)被傳播到處理陣列6a的最末部件時(shí)那個(gè)部件將完成當(dāng)前處理中的處理工作的處理的處理部件6b上開(kāi)始操作。這通過(guò)減少處理器的停機(jī)時(shí)間同時(shí)等待其它處理器可以用來(lái)支持連起來(lái)的陣列處理,提高了整體系統(tǒng)性能。
基于Montgomery的加密數(shù)據(jù)流水線處理應(yīng)用Montgomery算法,模取冪的成本被降低到一系列的超長(zhǎng)整數(shù)的加法。位避免乘法/加法體系結(jié)構(gòu)中的進(jìn)位傳送,幾種解決方法是周知的。這些解決方法將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模乘算法適于高效的硬件實(shí)施。由于更簡(jiǎn)單的組合邏輯,由更高的時(shí)鐘頻率獲得了速度的增加。與基于Brickell算法的現(xiàn)有技術(shù)相比,報(bào)道了加速系數(shù)2。
在J.E.Vuillemin,P.Bertin,D.Roncin,M.Shand,H.H.Touati,andP.Boucard.Programmable active memoriesReconfigurable 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 11thIEEE Symposium on Computer Arithmetic,pages252-259,1993中報(bào)道的Research Laboratory of Digital Equipment Corp.(數(shù)字設(shè)備公司研究實(shí)驗(yàn)室),使用包括中國(guó)余數(shù)定理、異步進(jìn)位完成加法器和開(kāi)窗口取冪方法的幾種加速方法的16個(gè)XILINX 3090 FPGA(現(xiàn)場(chǎng)可編程門陣列)的陣列用于實(shí)施模取冪。該實(shí)施過(guò)程以185kb/s的速率計(jì)算970位RSA解密(每970位解密5.2ms),以及以超過(guò)300kb/s的速率計(jì)算512位RSA解密(每512位解密1.7ms)。該解決方法的缺點(diǎn)是,模數(shù)的二進(jìn)制表示被硬連接到邏輯表示(logicrepresentation)中,使得必須重新為體系結(jié)構(gòu)配置每個(gè)新的模數(shù)(modulus)。
在Montgomery模乘算法中使用高基數(shù)的問(wèn)題是更復(fù)雜地確定商。該行為造成了算法流水線操作不直接進(jìn)行。在H.Orup.Simplifyingquotient determination in high-radix modular multiplication.InProceedings 12thSymposium on Computer Arithmetic,pages 193-9,1995中,算法被重寫以避免在確定商的過(guò)程中涉及的任何操作。只為給定的模數(shù)執(zhí)行一次必需的預(yù)先計(jì)算。
P.A.Wang在New VLSI architectures of RSA public key cryptosystems.In Proceedings of 1997 IEEE International Symposium onCircuits and Systems,volume 3,pages 2040-3,1997文章中提出了用于Montgomery模乘算法的新VLSI體系結(jié)構(gòu)。確定時(shí)鐘速度的關(guān)鍵途徑是流水線。這是通過(guò)使算法的每次迭代交錯(cuò)來(lái)實(shí)現(xiàn)的。與先前的提議相比,報(bào)道了系數(shù)2的時(shí)間面積乘積的改進(jìn)。
J.Bajard,L.Didier,and P.Komerup在An RNS Montgomery modularmultiplication algorithm.IEEE Transactions on Computers,47(7)766-76,July 1998文章中描述了一種使用余數(shù)系統(tǒng)(RNS)的新方法。在n個(gè)相當(dāng)簡(jiǎn)單的處理器商利用RNS中的n個(gè)模數(shù)來(lái)實(shí)施該算法。由此引起的處理時(shí)間為O(n)。
當(dāng)然,以上引用的參考文獻(xiàn)的大多數(shù)都涉及幾乎沒(méi)有或沒(méi)有靈活性的處理器硬件實(shí)施。
也有許多用于模運(yùn)算的脈動(dòng)陣列體系結(jié)構(gòu)的提議。這些提議在復(fù)雜性和靈活性方面不同。
在E.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-4 modular multiplication hardware algorithmefficient for iterative modular multiplication operations.In Proceedings10thIEEE Symposium on Computer Arithmetic,pages 35-42,1991文章中,作者提出了一種基4(radix-4)硬件算法。冗余數(shù)被使用,并由此避免了加法中的進(jìn)位傳送。與先前工作相比,報(bào)道了大約6倍的處理加速。
更近一些,提出了這樣一種方法,該方法利用預(yù)先計(jì)算的模數(shù)的補(bǔ)數(shù),并且基于J.Yong-Yin and W.P.Burleson.VLSI array algorithms andarchitectures for RSA modular multiplication.IEEETransactions on VLSISystems,5(2)211-17,June 1997文章中的迭代Homer規(guī)則。與Montgomery算法相比,這些方法利用中間結(jié)果的最高有效位來(lái)決定要減去模數(shù)的哪些乘。這些解決方法的缺點(diǎn)是,它們或者需要大量存儲(chǔ)空間、或者需要許多時(shí)鐘周期,來(lái)完成模乘。
最流行的模取冪算法是自乘與乘(square & multiply)算法。公開(kāi)密鑰加密系統(tǒng)典型地基于模取冪或重復(fù)的點(diǎn)加法(point addition)。這兩種操作是由自乘與乘(square & multiply)算法執(zhí)行的最基本形式。
方法1.1計(jì)算Z=XEmod M,其中E=Σi=0n-1ei2i,]]>ei∈{0,1}1.Z=X2.FOR i=n-2 down to 0 DO3.Z=Z2mod M4.IF ei=1 THEN Z=Z·X mod M5.END FOR方法1.1在最壞情況下需要2(n-1)次操作,并且平均需要1.5(n-1)次操作。為并行地計(jì)算自乘和乘法,可以使用以下型式的自乘與乘(square & multiply)方法方法1.2計(jì)算P=XEmod M,其中E=Σi=0n-1ei2i,]]>ei∈{0,1}1.P0=1,Z0=X2.FOR i=1 to n-1 DO3.Zi+1=Zi2mod M4.IF ei=1 THEN Pi+1=Pi·Zimod MELSE Pi+1=Pi5.END FOR方法1.2在最壞情況下需要2n次操作,并且平均需要1.5n次操作。通過(guò)應(yīng)用1-ary方法,如D.E.Knuth,The Art of Computer Programming.Volume 2Seminumerical Algorithms.Addison-Wesley,Reading,Massachusetts,2ndedition,1981中公開(kāi)的作為方法1.1的一般化的1-ary方法,來(lái)實(shí)現(xiàn)加速。1-ary方法每次處理1階位。在此的缺點(diǎn)是必須預(yù)先計(jì)算并存儲(chǔ)X的(21-2)次乘。減少到21-1次預(yù)先計(jì)算是有可能的。最后所得的復(fù)雜性粗略地為n/1次乘法操作和n次自乘操作。
如上所示,利用Montgomery方法將模取冪簡(jiǎn)化為一系列的模乘操作和自乘步驟。P.L.Montgomery在P.L.Montgomery.Modularmultiplication without trial division.Mathematics of Computation,44(170)519-21,April 1985文章中提出了用于下述模乘的方法。該方法是使兩個(gè)整數(shù)相乘并以M為模、同時(shí)避免除以M的方法。其思想是將整數(shù)變換成m余數(shù),并計(jì)算這些m余數(shù)的乘法。最后,表示被變換回到其正規(guī)表示。只有當(dāng)計(jì)算變換域中的一系列乘法操作(例如模取冪)時(shí),該方法才有益。
為計(jì)算Montgomery乘法,基數(shù)R>M,并選擇gcd(M,R)=1。除以R優(yōu)選地是計(jì)算量小的,因而如果M=Σi=0m-1mi2i,]]>則最佳的選擇是R=2m。x的m余數(shù)是xR mod M。也計(jì)算M’=M-1mod R。提供函數(shù)MRED(T)來(lái)計(jì)算TR-1mod M。假定T是m余數(shù),該函數(shù)計(jì)算T的正規(guī)表示。
方法1.3 MRED(T)計(jì)算T的Montgomery簡(jiǎn)化T<RM,R=2m,M=Σi=0m-1mi2i,]]>gcd(M,R)=11.U=TM’mod R2.t=(T+UM)/R3.IF t≥M retum t-MELSE return tMRED(T)的結(jié)果是t=TR-1mod M。
現(xiàn)在使兩個(gè)整數(shù)a和b在變換域中相乘,其中它們各自的表示是(aR mod M)和(bR mod M),將這兩個(gè)表示的乘積提供給MRED(T)。
MRED((aR mod M)·(bR mod M))=abR2R-1=abR mod M對(duì)于模取冪,依據(jù)方法1.1或1.2重復(fù)該步驟許多次,以便獲得最終結(jié)果ZRmod M或PnR mod M。將這些值之一提供給MRED(T),以獲得Z mod M或Pnmod M。
初始變換步驟仍然需要代價(jià)高的模簡(jiǎn)化,為避免涉及除法,利用除法計(jì)算R2mod M。只需要為給定密碼系統(tǒng)執(zhí)行一次該步驟。為獲得變換域中的a和b,執(zhí)行MRED(a·R2mod M)和MRED(b·R2mod M),以獲得aR mod M和bR mod M。顯然,可以照這樣變換任何變量。
對(duì)于方法1.3的硬件實(shí)施利用m×m位乘法和2m位加法來(lái)計(jì)算步驟2。中間結(jié)果可以具有和2m一樣多的位。不是立刻計(jì)算U,而是每次計(jì)算r基表示的一個(gè)數(shù)位。選擇基數(shù)r,使得gcd(M,r)是優(yōu)選的。除以r優(yōu)選地也是計(jì)算量小的,因而最佳選擇是r=2k?,F(xiàn)在,所有變量都以r基表示來(lái)表示。另一個(gè)改進(jìn)是在算法中包括乘法A×B。
方法1.4用于計(jì)算A·B mod M的Montgomery模乘,其中M=Σi=0m-1(2k)imi,mi∈{0,1,...,2k-1};]]>B=Σi=0m-1(2k)ibi,bi∈{0,1,...,2k-1};]]>A=Σi=0m-1(2k)iai,ai∈{0,1,...,2k-1};]]>A,B<M;M<R=2km;M′=-M-1mod 2k;gcd(2k,M)=11.S0=02.FOR i=0 to m-1 DO3.qi=(((Si+aiB)mod 2k)M’)mod 2k4.Si+1=(Si+qiM+aiB)/2k5 END FOR6.IF Sm≥M返回Sm-MELSE返回Sm應(yīng)用方法1.4的結(jié)果是Sm=ABR-1mod M。對(duì)于基數(shù)2k,需要最多兩個(gè)k×k位乘法操作和k位加法來(lái)計(jì)算步驟3。對(duì)于步驟4,需要兩個(gè)k×m位乘法操作和兩個(gè)m+k位加法。與方法1.3的2m位相比,S的最大位長(zhǎng)被減小到m+k+2位。
方法1.5是相對(duì)于r=2的方法1.4的簡(jiǎn)化。對(duì)于基數(shù)r=2,對(duì)方法1.4的步驟3中的操作執(zhí)行模2。由于條件gcd(M,2k)=1,使得模數(shù)M為奇數(shù)。立即得出,M=1 mod 2。因此,M’=-M-1mod 2也退化為M’=1。因而,任選地省略步驟3中的乘M’mod 2。
方法1.5用于計(jì)算A·B mod M的Montgomery模乘(基數(shù)r=2),
其中M=Σi=0m-1(2k)imi,mi∈{0,1};]]>B=Σi=0m-1(2k)ibi,bi∈{0,1};]]>A=Σi=0m-1(2k)iai,ai∈{0,1};A,B<M;M<R=2m;gcd(2,M)=1]]>1.S0=02.FOR i=0 to m-1 DO3.qi=(Si+aiB)mod 24.Si+1=(Si+qiM+aiB)/25 END FOR6.IF Sm≥M返回Sm-MELSE返回Sm方法1.5的步驟6中的最終比較和減法執(zhí)行起來(lái)是高代價(jià)的,因?yàn)閙位比較是很慢的,并且在資源使用方面是高花費(fèi)的。它也使算法的流水線執(zhí)行成為不可能。可以容易地驗(yàn)證,如果A,B<M,則Si+1<2M總是保持。然而,Sm不能重新用作下一次模乘的輸入A或B。如果在am+1=0且輸入A,B<2M的情況下來(lái)執(zhí)行for循環(huán)的兩次多余運(yùn)行,則滿足不等式Sm+2<2M。現(xiàn)在,Sm+2可以用作下一次模乘的輸入B。
為進(jìn)一步減小方法1.5的復(fù)雜性,使B上移一個(gè)位置,即使B乘以2。這導(dǎo)致ai·B mod 2=0,并且避免了步驟3中的加法。在Si+1的更新期間,用(Si+qiM)/2+aiB來(lái)代替(Si+qiM+aiB)/2。該簡(jiǎn)化的成本是在am+2=0的情況下多運(yùn)行一次循環(huán)。以下方法包括這些優(yōu)化。
方法1.6用于計(jì)算A·B mod M的Montgomery模乘(基數(shù)r=2),其中M=Σi=0m-1(2k)imi,mi∈{0,1};]]>B=Σi=0m-1(2k)ibi,bi∈{0,1};]]>A=Σi=0m-1(2k)iai,ai∈{0,1};A,B<2M;M<R=2m+2;gcd(2,M)=1]]>1.S0=02.FOR i=0 to m+2 DO3.qi=Simod 24.Si+1=(Si+qiM)/2+aiB5 END FOR
以上算法計(jì)算Sm+3=(2-(m+2)AB)mod M。為得到正確的結(jié)果,執(zhí)行額外的Montgomery模乘22(m+2)mod M。然而,如果如在取冪算法中一樣需要進(jìn)一步的乘法操作,最好使所有的輸入預(yù)先乘以系數(shù)22(m+2)mod M。因而,每個(gè)中間結(jié)果都攜帶系數(shù)22(m+2)。使結(jié)果與“1”進(jìn)行Montgomery相乘來(lái)消除該系數(shù)。
與“1”的最終Montgomery乘確保了最終的結(jié)果小于M。
高基數(shù)Montgomery算法通過(guò)避免代價(jià)高的步驟6的比較和減法操作、并將條件改變?yōu)?M<2km且A,B<2M,產(chǎn)生了相對(duì)于在硬件中實(shí)施方法1.4的某些優(yōu)化。其代價(jià)是多運(yùn)行兩次循環(huán)。最終所得的方法如下方法1.7用于計(jì)算A·B mod M的Montgomery模乘,其中M=Σi=0m-3(2k)imi,mi∈{0,1,...,2k-1};]]>M~=(M′mod2k)M,]]>M~=Σi=0m-2(2k)im~i,]]>m~i∈{0,1,...,2k-1};]]>B=Σi=0m-1(2k)ibi,bi∈{0,1,...,2k-1};]]>A=Σi=0m-1(2k)iai,ai∈{0,1,...,2k-1};]]>A,B<2M~;4M~<2km;M′=-M-1mod2k]]>1.S0=02.FOR i=0至m-1 DO3.qi=(Si+aiB)mod 2k4.Si+1=(Si+qiM~+aiB)/2k]]>5END FOR通過(guò)用B·2k代替B,進(jìn)一步減小商qi確定的復(fù)雜性。因?yàn)閍iB md2k=0,步驟3被簡(jiǎn)化為qi=Simod 2k。以附加的循環(huán)迭代為代價(jià)來(lái)避免步驟3中的加法,以補(bǔ)償B中的額外系數(shù)2k。為硬件實(shí)施而優(yōu)化的Montgomery方法如下所示方法1.8用于計(jì)算A·B mod M的Montgomery模乘,其中M=Σi=0m-3(2k)imi,mi∈{0,1,...,2k-1};]]>M~=(M′mod2k)M,]]>M~=Σi=0m-2(2k)im~i,]]>m~i∈{0,1,...,2k-1};]]>B=Σi=0m-1(2k)ibi,bi∈{0,1,...,2k-1};]]>A=Σi=0m-1(2k)iai,ai∈{0,1,...,2k-1},am=0;]]>A,B<2M~;4M~<2km;M′=-M-1mod2k]]>
1.S0=02.FOR i=0 to m-1 DO3.qi=Simod 2k4.Si+1=(Si+qiM~)/2k+aiB]]>5 END FOR然后,使最終結(jié)果與“1”進(jìn)行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è)備作為目標(biāo)設(shè)備。
一般2基脈動(dòng)陣列使用m×m處理部件,其中m為模數(shù)的位數(shù),并且每一部件處理一位??梢酝瑫r(shí)處理2m個(gè)模乘操作,以每時(shí)鐘周期一個(gè)模乘的處理量以及2m個(gè)周期的等待時(shí)間為特色。因?yàn)閷?duì)于現(xiàn)代公開(kāi)密鑰方案中所需的典型位長(zhǎng)、該方法導(dǎo)致了不實(shí)際的大CLB計(jì)數(shù),因此只實(shí)施一行處理部件。利用該方法,可以同時(shí)處理2個(gè)模乘操作,而執(zhí)行降低到每2m個(gè)周期2個(gè)模乘操作的處理量。等待時(shí)間保持為2m周期。
第二考慮事項(xiàng)是基數(shù)r=2k的選擇。增大k將減少方法1.8中要執(zhí)行的步驟的數(shù)量。然而,這種方法需要更多的資源。主要的花費(fèi)在于2k與M和B相乘的計(jì)算。這些或者被預(yù)先計(jì)算并存儲(chǔ)在隨機(jī)存儲(chǔ)器(RAM)中,或者被多路復(fù)用器網(wǎng)絡(luò)計(jì)算。無(wú)疑,對(duì)于r=2、CLB基數(shù)變成最小,因?yàn)椴槐赜?jì)算或預(yù)先計(jì)算M或B的乘。
利用基數(shù)r=2,來(lái)計(jì)算依據(jù)方法1.6的方程式。為進(jìn)一步減少所需的CLB數(shù)量,任選地采取以下措施每個(gè)單元處理多于一位。單個(gè)加法器用于預(yù)先計(jì)算B+M,以及執(zhí)行正常處理期間的其它加法操作。并行地計(jì)算自乘和乘法操作。該設(shè)計(jì)按等級(jí)被分為三個(gè)級(jí)別。
處理部件計(jì)算模乘的u位。
模乘處理部件陣列計(jì)算模乘模取冪將模乘操作與根據(jù)算法1.2的模取冪相結(jié)合處理部件圖8顯示了處理部件的實(shí)施過(guò)程。
在處理部件中,存在以下寄存器·M-Reg(u位)存儲(chǔ)模數(shù)·B-Reg(u位)存儲(chǔ)B乘數(shù)·B+M-Reg(u位)存儲(chǔ)中間結(jié)果B+M·S-Reg(u+1位)存儲(chǔ)中間結(jié)果(包括進(jìn)位)·S-Reg-2(u-1位)存儲(chǔ)中間結(jié)果·Control-Reg(3位)控制多路復(fù)用器和時(shí)鐘使能·ai、qi(2位)乘數(shù)A、商Q·Result-Reg(u位)存儲(chǔ)乘法最后的結(jié)果寄存器需要總共(6u+5)/2個(gè)CLB,加法器需要u/2+2個(gè)CLB,多路復(fù)用器需要4·u/2個(gè)CLB,以及解碼器需要2個(gè)CLB。將寄存器重新用于組合邏輯的可能性允許CLB的某些節(jié)省。將MuxB和MuxRes實(shí)施在B-Reg和Result-Reg的CLB中,將Mux1和Mux2部分地實(shí)施在M-Reg和B+M-Reg中。最終所得的成本是大約每u位處理單元3u+4個(gè)CLB。即,每位3到4個(gè)CLB,這取決于單元大小u。
在單元能夠計(jì)算模乘之前,必須加載系統(tǒng)參數(shù)。將M存儲(chǔ)到單元的M-Reg中。在模乘開(kāi)始時(shí),根據(jù)多路復(fù)用器B-Mux的選擇線,從B-in或S-Reg加載操作數(shù)B。下一步是計(jì)算一次M+B,并將結(jié)果存儲(chǔ)在B+M-Reg中。該操作需要兩個(gè)時(shí)鐘周期,因?yàn)榻Y(jié)果首先隨著時(shí)鐘進(jìn)入到S-Reg中。分別通過(guò)ai或控制字來(lái)控制Mux1和Mux2的選擇線。
在接著的2(m+2)個(gè)周期中,根據(jù)方法1.6來(lái)計(jì)算模乘。多路復(fù)用器Mux1根據(jù)二進(jìn)制變量ai和qi的值,來(lái)選擇要饋入加法器中的其輸入0、M、B、B+M之一。Mux2將先前結(jié)果S-Reg2的u-1個(gè)最高有效位加上下一單元(除以2/右移)的最低有效結(jié)果位饋入加法器的第二輸入端。將結(jié)果存儲(chǔ)在S-Reg中一個(gè)周期。最低有效位進(jìn)入向右的單元(除以2/右移),而進(jìn)位進(jìn)入向左的單元。在該周期中,利用更新的S-Reg2、ai、qi值在加法器中計(jì)算第二模乘。第二模乘使用相同的操作數(shù)B,但是不同的操作數(shù)A。
在模乘的末尾,在加法器的輸出端處,Sm+3在一個(gè)周期內(nèi)有效。將該值存儲(chǔ)到Result-Reg中,如通過(guò)S-Reg饋入B-Reg中一樣。在一個(gè)周期之后將第二乘法的結(jié)果饋入Result-Reg中。
圖9顯示了處理部件怎樣連接到用于計(jì)算m位模乘的陣列。為執(zhí)行相對(duì)于m的方法,使用每單元處理u位的m/u+1個(gè)單元。Unit0只有u-1個(gè)B輸入,因?yàn)锽0被加到移位值Si+qiM上。根據(jù)Montgomery算法的特性,結(jié)果位S-Reg0總是為0。Unitm/u處理B的最高有效位以及中間結(jié)果Si+1的臨時(shí)溢出。沒(méi)有到該單元的M輸入。
單元的輸入和輸出以以下方式相互連接??刂谱?、qi和ai被從右向左泵送(bumped)通過(guò)單元。結(jié)果從左向右泵送。carry-out(載出)信號(hào)被饋給向右的carry-in(載入)輸入。輸出S_0_Out總是連接到向右的單元的輸入S_0_In。這代表方程式除以2。
首先將模數(shù)M饋入單元中。為允許信號(hào)有足夠的時(shí)間傳播到所有單元,M在兩個(gè)時(shí)鐘周期內(nèi)有效。我們使用兩個(gè)M-Bus,M-even-Bus連接到所有的偶數(shù)單元、M-odd-Bus連接到所有的奇數(shù)單元,該方法允許每時(shí)鐘周期將u位饋給單元。因而,需要m/u個(gè)周期來(lái)加載完整模數(shù)M。
類似地加載操作數(shù)B。信號(hào)也在兩個(gè)時(shí)鐘周期內(nèi)有效。在加載操作數(shù)B之后,方法1.6的步驟的執(zhí)行就開(kāi)始了。
從最右邊的單元unit0開(kāi)始,將控制字、ai和qi饋入它們的寄存器中。加法器根據(jù)ai和qi、在一個(gè)時(shí)鐘周期內(nèi)計(jì)算S-Reg-2加上B、M或B+M。讀回結(jié)果的最低有效位作為下一次計(jì)算的qi+1。將所得到的進(jìn)位位、控制字、ai和qi泵入向左的單元中,其中在下一個(gè)時(shí)鐘周期中發(fā)生相同的計(jì)算。
以這種脈動(dòng)的形式,將控制字、ai、qi和進(jìn)位位從右向左泵送通過(guò)整個(gè)單元陣列。方法1.6中的除以2也導(dǎo)致了右移操作。單元的加法(S0)的最低有效位總是被反饋到向右的單元中。在完成模乘之后,將結(jié)果從左向右泵送通過(guò)單元、并連續(xù)地存儲(chǔ)在RAM中用于進(jìn)一步處理。
單個(gè)處理部件計(jì)算Si+1=(Si+qi·M)/2+ai·B的u位。在時(shí)鐘周期i中,unit0計(jì)算Si的位0...u。在時(shí)鐘周期i+1中,unit1使用所得的進(jìn)位、并計(jì)算Si的位u...2u。unit0在時(shí)鐘周期i+2中、利用Si(S0)的右移(除以2)位u來(lái)計(jì)算Si+1的位0...u-1。在單元unit0中時(shí)鐘周期i+1是非生產(chǎn)性的、同時(shí)等待unit1的結(jié)果。通過(guò)依據(jù)方法1.2并行地計(jì)算自乘和乘法操作,來(lái)避免這種低效率。pi+1和zi+1都取決于zi。因此,將中間結(jié)果zi存儲(chǔ)在B-Register中,并將zi和pi一起饋入單元的ai輸入中用于自乘和乘法。
圖10顯示了單元陣列怎樣用于模取冪。在設(shè)計(jì)的核心是具有以下17種狀態(tài)的有限狀態(tài)機(jī)(FSM)空閑狀態(tài),用于加載系統(tǒng)參數(shù)的4種狀態(tài),以及用于計(jì)算模取冪的4×3種狀態(tài)。實(shí)際的模取冪是在預(yù)先計(jì)算1、預(yù)先計(jì)算2、計(jì)算和計(jì)算后4種主要狀態(tài)下執(zhí)行的。這些主要狀態(tài)的每一種都細(xì)分為3種子狀態(tài)load-B、B+M和計(jì)算乘法。根據(jù)狀態(tài)來(lái)對(duì)饋入control-in的控制字編碼。以二分之一時(shí)鐘頻率對(duì)FSM計(jì)時(shí)。同樣對(duì)加載和讀取RAM和DP RAM元件也成立。該措施確保最大傳播時(shí)間是在單元中。因而,最小時(shí)鐘周期時(shí)間和最終所得的模取冪的速度與單元中的有效計(jì)算時(shí)間有關(guān),而與計(jì)算開(kāi)銷無(wú)關(guān)。
在計(jì)算模取冪之前,加載系統(tǒng)參數(shù)。從I/O將模數(shù)M的2u位讀入M-Reg中。從低數(shù)位開(kāi)始向高數(shù)位讀。從M-Reg將M的u位交替地饋給M-even-Bus和M-odd-Bus。每次信號(hào)在兩個(gè)周期內(nèi)有效。當(dāng)時(shí),從I/O讀取指數(shù)E的16位、并存儲(chǔ)到Exp-RAM中。來(lái)自I/O的最初16位寬的字指定了指數(shù)的位長(zhǎng)。直到64個(gè)后面的字包含了實(shí)際的指數(shù)。當(dāng)時(shí),從I/O讀出預(yù)先計(jì)算系數(shù)22(m+2)mod M的2u位。將該2u位存儲(chǔ)到Prec-RAM中。
在預(yù)先計(jì)算1狀態(tài)下,我們從I/O讀取X值,每個(gè)時(shí)鐘周期u位,并將它存儲(chǔ)到DP RAM Z中。同時(shí),從Prec-RAM讀出預(yù)先計(jì)算系數(shù)22(m+2)mod M、并且每時(shí)鐘周期將u位交替地通過(guò)B-even-Bus和B-odd-Bus饋給單元的B-Register。在接下來(lái)的兩個(gè)時(shí)鐘周期中,在單元中計(jì)算B+M。
用于方法1.2的初值是可得的。兩個(gè)值都必須乘以2,這可以被并行地執(zhí)行,因?yàn)閮蓚€(gè)乘法操作都使用已經(jīng)存儲(chǔ)在B中的公共操作數(shù)22(m+2)mod M。時(shí)分復(fù)用(TDM)單元從DP RAM Z讀出X,并將X與1復(fù)用。在2(m+3)個(gè)時(shí)鐘周期之后,結(jié)果的低數(shù)位出現(xiàn)在Result-Out,并被存儲(chǔ)在DP RAM Z中。在一個(gè)周期之后,下一個(gè)結(jié)果的低數(shù)位出現(xiàn)在Result-Out,并被存儲(chǔ)在DP RAM P中。該過(guò)程重復(fù)2m個(gè)周期,直到兩個(gè)結(jié)果的所有數(shù)位都被存儲(chǔ)在DP RAM Z和DP RAM P中為止。結(jié)果X·2m+2mod M也被存儲(chǔ)在單元的B-Register中。
在預(yù)先計(jì)算2狀態(tài)下,方法1.2的實(shí)際步驟開(kāi)始。對(duì)于Z1和P1兩者的計(jì)算,都將Z0用作操作數(shù)。該值被存儲(chǔ)在B-Register中。第二操作數(shù)Z0或P0分別從DP RAM Z和DP RAM P被讀出,并作為ai、通過(guò)TDM被“泵”入單元中。在另外的2(m+3)個(gè)時(shí)鐘周期之后,Z1和P1的結(jié)果的低數(shù)位出現(xiàn)在Result-Out。Z1被存儲(chǔ)在DP RAM Z中。只有當(dāng)指數(shù)e0的第一位等于“1”時(shí),才需要P1。取決于e0,P1被存儲(chǔ)在DP RAM P中、或者被丟棄。
在計(jì)算狀態(tài)下,方法1.2的循環(huán)被執(zhí)行n-1次。在每個(gè)周期之后DP RAM Z中的Zi都被更新,并作為ai被“泵”回到單元中。只有當(dāng)指數(shù)ei的相關(guān)位等于“1”時(shí),才更新DP RAM P中的Pi。這樣,總是最后存儲(chǔ)的P被“泵”回到單元中。
在en-1的處理之后,F(xiàn)SM進(jìn)入計(jì)算后狀態(tài)。為了從結(jié)果Pn消除系數(shù)2m+2,計(jì)算最終的Montgomery乘1。首先交替地通過(guò)B-even-Bus和B-odd-Bus、將向量0,0,...0,1饋入單元的B-Register中。從DP RAMP將Pn作為ai泵入單元中。在執(zhí)行計(jì)算后狀態(tài)之后,結(jié)果Pn=XE modM的u位在I/O端口處有效。每?jī)蓚€(gè)時(shí)鐘周期另外的u位出現(xiàn)在I/O處?,F(xiàn)在可以立即重新進(jìn)入預(yù)先計(jì)算1狀態(tài),以計(jì)算另一X值。
在2(n+2)(m+4)個(gè)時(shí)鐘周期內(nèi)計(jì)算完整的模乘。那是從把X的最初u位插入設(shè)備中,直到最初的u個(gè)結(jié)果位出現(xiàn)在輸出處為止的延遲。在那一點(diǎn)上,另一個(gè)X值可以進(jìn)入設(shè)備中。在附加的m/u個(gè)時(shí)鐘周期的等待時(shí)間之后,最后的u位出現(xiàn)在輸出總線上。
以下,說(shuō)明圖10中的功能塊。圖11顯示了DP RAM Z的設(shè)計(jì)。m/u×u位DP RAM在該單元的核心。它具有分開(kāi)的寫(A)和讀(DPRA)地址輸入。計(jì)數(shù)直到m/u的寫計(jì)數(shù)器計(jì)算寫地址(A)。當(dāng)Zi的最初u位出現(xiàn)在data-in時(shí),寫計(jì)數(shù)器在B-load子狀態(tài)下開(kāi)始計(jì)數(shù)(時(shí)鐘使能)。同時(shí),DP RAM的使能信號(hào)有效,并且數(shù)據(jù)被存儲(chǔ)在DP RAM中。當(dāng)達(dá)到m/u時(shí),終端計(jì)數(shù)(terminal-count)使DP RAM的計(jì)數(shù)使能和寫使能復(fù)位。在計(jì)算子狀態(tài)下,讀計(jì)數(shù)器被允許操作。當(dāng)讀計(jì)數(shù)器達(dá)到其上限m+2時(shí),終端計(jì)數(shù)(terminal-count)觸發(fā)FSM轉(zhuǎn)換為子狀態(tài)B-load。讀計(jì)數(shù)器值(q-out)的log2(m/u)最高有效位對(duì)DP RAM的DPRA尋址。每u個(gè)周期讀出DP RAM中存儲(chǔ)的另一個(gè)值。當(dāng)q-out的log2(u)最低有效位達(dá)到0時(shí),將該值加載到移位寄存器中。在接下來(lái)的u個(gè)周期,u位逐位地出現(xiàn)在移位寄存器的串行輸出處。Zi的最后值被存儲(chǔ)在u位寄存器中。該辦法允許我們選擇m/u×u位DP RAM,而不是2m/u×u位DP RAM(m=2x,x=8,9,10)。
DP RAM P幾乎以同樣的方式工作。它具有附加的輸入ei,在ei=1的情況下,ei激活DP RAM的寫使能信號(hào)。
圖12顯示了Exp RAM的設(shè)計(jì)。在加載指數(shù)狀態(tài)(load-exponentstate)的第一周期中,從I/O讀出第一個(gè)字,并存儲(chǔ)到10位寄存器中。它的值指定了指數(shù)的位長(zhǎng)。在后續(xù)的周期中,每次讀出指數(shù)的16位、并存儲(chǔ)在RAM中。通過(guò)6位寫計(jì)數(shù)器來(lái)計(jì)算存儲(chǔ)地址。在每一個(gè)計(jì)算狀態(tài)開(kāi)始時(shí),10位讀計(jì)數(shù)器都被允許操作。它的6個(gè)最高有效位計(jì)算存儲(chǔ)器地址。因而,每第16次激活,就從RAM讀出新的值。在讀計(jì)數(shù)器的4個(gè)最低有效位等于0的同時(shí),將該值存儲(chǔ)在16位移位寄存器中。當(dāng)讀計(jì)數(shù)器達(dá)到10位寄存器中指定的值時(shí),終端計(jì)數(shù)(terminal-count)信號(hào)觸發(fā)FSM進(jìn)入計(jì)算后狀態(tài)。
圖13顯示了Prec RAM的設(shè)計(jì)。在加載預(yù)先系數(shù)狀態(tài)下,當(dāng)時(shí)從I/O讀出預(yù)先計(jì)算系數(shù)的2u位、并存儲(chǔ)在RAM中。計(jì)數(shù)直到m/2u的計(jì)數(shù)器對(duì)RAM尋址。當(dāng)所有的m/2u個(gè)值都被讀出時(shí),終端計(jì)數(shù)(terminal-count)信號(hào)觸發(fā)FSM離開(kāi)加載預(yù)先系數(shù)狀態(tài)。
在預(yù)先計(jì)算1狀態(tài)下,從RAM讀出預(yù)先計(jì)算系數(shù),并饋給單元的B-Register。每個(gè)時(shí)鐘周期都遞增計(jì)數(shù)器,并將2u位加載到2u位寄存器中。每個(gè)時(shí)鐘周期的正沿從那里將u位饋在B-even-Bus上。在負(fù)時(shí)鐘邊沿,將u位饋在B-odd-Bus上。
速度高效體系結(jié)構(gòu)以上設(shè)計(jì)是在資源使用方面進(jìn)行優(yōu)化的。利用基數(shù)r=2k,k>1,將使方法1.6中的步驟數(shù)量減少k倍。方法1.8的計(jì)算倍執(zhí)行m+3次(i=0至m+2)。
很容易按等級(jí)將速度高效設(shè)計(jì)分為3個(gè)級(jí)別。
處理部件計(jì)算模乘的4位模乘處理部件陣列計(jì)算模乘模取冪將模乘操作與根據(jù)方法1.2的模取冪相結(jié)合圖14顯示了處理部件的實(shí)施。
提供了以下元件·B-Reg(4位)存儲(chǔ)B乘數(shù)·B-Adder-Reg(5位)存儲(chǔ)B的倍數(shù)·S-Reg(4位)存儲(chǔ)中間結(jié)果Si·Control-Reg(3位)控制多路復(fù)用器和時(shí)鐘使能·ai-Reg(4位)乘數(shù)A·qi-Reg(4位)商Q·Result-Reg(4位)存儲(chǔ)在乘法末尾的結(jié)果·B-Adder(4位)將B加到先前計(jì)算的B的倍數(shù)上·B+M~-Adder(4位)將M~的乘加到B的倍數(shù)上·S+B+M~-Adder(5位)將M~Si加到B+M~-Adder上·B-RAM(16×4位)存儲(chǔ)B的16倍數(shù)·M~-RAM(16×4位)存儲(chǔ)M~的16倍數(shù)從以上參考的T.Blum的論題,以及從圖的回顧,單元的操作是顯然的。
圖15顯示了處理部件怎樣連接到用于計(jì)算全尺寸模乘的陣列。
圖16顯示了單元陣列怎樣用于模取冪。
圖17顯示了DP RAM Z的設(shè)計(jì)。m×4位DP RAM位于該單元的核心。它具有分開(kāi)的寫(A)和讀(DPRA)地址輸入。計(jì)數(shù)直到m+2的兩個(gè)計(jì)數(shù)器計(jì)算這些地址。當(dāng)Zi的第一數(shù)位出現(xiàn)在data-in時(shí),寫計(jì)數(shù)器在B-load子狀態(tài)下開(kāi)始計(jì)數(shù)(時(shí)鐘使能)。同時(shí),DP RAM的使能信號(hào)有效,并且數(shù)據(jù)被存儲(chǔ)在DP RAM中。當(dāng)達(dá)到m+2時(shí),寫計(jì)數(shù)器的終端計(jì)數(shù)(terminal-count)信號(hào)使兩個(gè)使能信號(hào)復(fù)位。在計(jì)算子狀態(tài)下讀計(jì)數(shù)器被允許操作。DP RAM的數(shù)據(jù)被讀計(jì)數(shù)器的q-out尋址、并立即出現(xiàn)在DPO處。當(dāng)讀計(jì)數(shù)器達(dá)到m+2時(shí),終端計(jì)數(shù)(terminal-count)觸發(fā)FSM轉(zhuǎn)變?yōu)锽-load子狀態(tài)。最后兩個(gè)zi值的每一個(gè)都被存儲(chǔ)在4位寄存器中。
該辦法允許我們選擇100%利用的m×4位DP RAM,而不是僅僅50%利用的2m×4位DP RAM。DP RAM P幾乎以同樣的方式工作。它具有附加的輸入ei,在ei=“1”的情況下,ei激活DP RAM的寫使能信號(hào)。
因?yàn)橐陨系牧魉€處理器體系結(jié)構(gòu)體現(xiàn)了許多流水線處理部件,所以常常難以、并且代價(jià)高地在同一集成電路內(nèi)使每個(gè)部件與時(shí)鐘脈沖源同步。因此,本發(fā)明的極其有利之處在于,通過(guò)簡(jiǎn)化時(shí)鐘分配問(wèn)題來(lái)減少總的資源需求。而且,因?yàn)樵谝粋€(gè)方向上需要加法,而在另一個(gè)方向上需要乘法,所以顯然沿一條路徑所需的時(shí)間比沿另一條路徑所需的時(shí)間多,因此根據(jù)本發(fā)明的實(shí)施例,路徑的時(shí)間平均是有可能的。
在不背離本發(fā)明的精神和范圍的情況下,可以設(shè)想大量的其它實(shí)施例。
權(quán)利要求
1.一種處理數(shù)據(jù)的方法,包括以下步驟h)提供包括以串行陣列的形式排列的n個(gè)單獨(dú)處理部件的流水線處理器,以致第一處理部件在領(lǐng)先于第n處理部件的第二處理部件之前;i)提供m位加密密鑰給流水線處理器;j)將指示加密密鑰長(zhǎng)度的數(shù)據(jù)提供給流水線處理器;k)將數(shù)據(jù)提供給第一處理部件以便處理;l)至少根據(jù)指示加密密鑰長(zhǎng)度的數(shù)據(jù)來(lái)確定最末處理部件;m)將指示處理部件是最末處理部件的信號(hào)提供給最末處理部件;n)從第一處理部件以逐步正向串行的形式來(lái)傳送用于進(jìn)一步處理的數(shù)據(jù),僅僅到最末處理部件為止;以及其中,同一流水線處理器內(nèi)的至少兩個(gè)處理部件可以被確定為最末處理部件。
2.根據(jù)權(quán)利要求1所述的處理數(shù)據(jù)的方法,其中最末處理部件不同于第n處理部件。
3.根據(jù)權(quán)利要求1所述的處理數(shù)據(jù)的方法,其中加密密鑰被填補(bǔ)到預(yù)定位數(shù)的整數(shù)倍,以及其中預(yù)定位數(shù)等于n個(gè)處理部件的單個(gè)處理部件在一個(gè)處理周期期間處理的位數(shù)的整數(shù)倍。
4.根據(jù)權(quán)利要求3所述的處理數(shù)據(jù)的方法,其包括將一信號(hào)提供給被確定的最末處理部件來(lái)指示確定的步驟,其中只有可以被確定為最末處理部件的那些處理部件才裝備有用于提供信號(hào)的電路。
5.根據(jù)權(quán)利要求4所述的處理數(shù)據(jù)的方法,其中少于n個(gè)處理部件可以被確定為最末處理部件。
6.根據(jù)權(quán)利要求1所述的處理數(shù)據(jù)的方法,包括以下步驟o)將指示加密密鑰長(zhǎng)度的數(shù)據(jù)和要處理的數(shù)據(jù)一起提供給第一處理部件;p)利用第一處理部件內(nèi)部的電路處理指示加密密鑰長(zhǎng)度的數(shù)據(jù);以及q)將經(jīng)過(guò)處理的指示加密密鑰長(zhǎng)度的數(shù)據(jù)傳送給至少下一個(gè)處理部件,以便利用所述至少下一個(gè)處理部件的內(nèi)部電路進(jìn)行附加處理。
7.根據(jù)權(quán)利要求6所述的處理數(shù)據(jù)的方法,其中處理指示加密密鑰長(zhǎng)度的數(shù)據(jù)的步驟是遞減操作與遞增操作的步驟。
8.根據(jù)權(quán)利要求7所述的處理數(shù)據(jù)的方法,包括以下步驟r)當(dāng)利用至少下一個(gè)處理部件的內(nèi)部電路來(lái)處理指示加密密鑰長(zhǎng)度的數(shù)據(jù)的步驟返回指示該處理部件是最末處理部件的預(yù)定值時(shí),在處理之后,僅僅沿前面的處理部件的方向上的返回處理路徑來(lái)傳送數(shù)據(jù)。
9.根據(jù)權(quán)利要求1所述的處理數(shù)據(jù)的方法,包括以下步驟h)提供另一個(gè)包括以串行陣列的形式排列的n個(gè)單獨(dú)處理部件的流水線處理器,以致第一處理部件在領(lǐng)先于第m處理部件的第二處理部件之前;i)其中,確定最末處理部件的步驟確定是第n處理部件還是第m處理部件是最末處理部件。
10.根據(jù)權(quán)利要求9所述的處理數(shù)據(jù)的方法,其中第一流水線處理器和第二流水線處理器在第一模式下是獨(dú)立的流水線處理器,以及在第二模式下是單一的組合流水線處理器。
11.一種處理數(shù)據(jù)的設(shè)備,包括以串行陣列的形式排列的多個(gè)單獨(dú)處理部件,其中第一處理部件在領(lǐng)先于第n處理部件的第二處理部件之前;端口,至少與串行陣列的處理部件電通信,以便提供數(shù)據(jù)給串行陣列進(jìn)行處理;以及邏輯電路,該邏輯電路與所述端口以及串行陣列的至少兩個(gè)處理部件電通信,用于在使用中處理指示加密密鑰長(zhǎng)度的數(shù)據(jù)以便確定串行陣列的最末處理部件,以及根據(jù)指示加密密鑰長(zhǎng)度的數(shù)據(jù)而將信號(hào)提供給作為串行陣列的被確定處理部件的至少兩個(gè)處理部件之一。
12.根據(jù)權(quán)利要求11所述的處理數(shù)據(jù)的設(shè)備,其中多個(gè)單獨(dú)處理部件排列成兩個(gè)或多個(gè)流水線處理陣列,其中陣列用于獨(dú)立地接收要處理的數(shù)據(jù),或者用于當(dāng)最末處理部件狀態(tài)是由超出單個(gè)流水線處理陣列的最末處理部件以外的處理部件引起時(shí),被連接到單個(gè)更大陣列中。
13.根據(jù)權(quán)利要求11所述的處理數(shù)據(jù)的設(shè)備,其中少于n個(gè)處理部件可以被確定為最末處理部件。
14.根據(jù)權(quán)利要求13所述的處理數(shù)據(jù)的設(shè)備,其中可以被確定為最末處理部件的處理部件進(jìn)一步包括用于提供信號(hào)的電路。
15.根據(jù)權(quán)利要求14所述的處理數(shù)據(jù)的設(shè)備,其中邏輯電路是用于通過(guò)可尋址數(shù)據(jù)路徑將信號(hào)提供給確定的處理部件的門邏輯開(kāi)關(guān)電路。
16.根據(jù)權(quán)利要求14所述的處理數(shù)據(jù)的設(shè)備,其中邏輯電路包括第二處理器,用于執(zhí)行用來(lái)根據(jù)指示密鑰長(zhǎng)度的數(shù)據(jù)來(lái)確定最末處理部件的程序代碼以及提供信號(hào)給確定的處理部件;以及在第二處理器與串行陣列的至少兩個(gè)處理部件之間延伸的通信路徑,所述通信路徑用于將信號(hào)從第二處理器引導(dǎo)至確定的處理部件。
17.一種處理數(shù)據(jù)的設(shè)備,包括以串行陣列的形式排列的多個(gè)單獨(dú)處理部件,其中第一處理部件在領(lǐng)先于第n處理部件的第二處理部件之前;以及每個(gè)單獨(dú)處理部件內(nèi)部的邏輯電路,用于在使用中處理指示加密密鑰長(zhǎng)度的數(shù)據(jù),以及將指示最末處理部件狀態(tài)的信號(hào)提供給處理部件的內(nèi)部,該信號(hào)根據(jù)指示加密密鑰長(zhǎng)度的數(shù)據(jù)來(lái)提供。
18.根據(jù)權(quán)利要求17所述的處理數(shù)據(jù)的設(shè)備,其中多個(gè)單獨(dú)處理部件排列成兩個(gè)或多個(gè)流水線處理陣列,其中陣列用于獨(dú)立地接收要處理的數(shù)據(jù),或者用于當(dāng)最末處理部件狀態(tài)是由超出單個(gè)流水線處理陣列的最末處理部件以外的處理部件引起時(shí),被連接到單個(gè)更大陣列中。
全文摘要
一種具有諸如以流水線形式排列的多級(jí)的計(jì)算設(shè)備或系統(tǒng),該計(jì)算設(shè)備或系統(tǒng)具有沿著級(jí)安置的計(jì)時(shí)軌或?qū)w。在大量的即幾百個(gè)級(jí)并行地排列成子陣列的情況下,計(jì)時(shí)導(dǎo)體沿著子陣列迂回延伸。在單個(gè)級(jí)中排列成,在級(jí)中進(jìn)行的兩個(gè)計(jì)算中的最短計(jì)算出現(xiàn)在返回路徑中??梢詫㈥嚵蟹殖煞珠_(kāi)的部件用于獨(dú)立處理。
文檔編號(hào)G06F12/14GK1689267SQ03824410
公開(kāi)日2005年10月26日 申請(qǐng)日期2003年8月25日 優(yōu)先權(quán)日2002年8月26日
發(fā)明者哈非茲·扎阿比 申請(qǐng)人:睦塞德技術(shù)公司