專利名稱:加速伽羅瓦計(jì)數(shù)器模式(gcm)計(jì)算的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種包括一個或多個指令的計(jì)算機(jī)可讀介質(zhì),所述指令在處理器上執(zhí)行時將所述處理器配置成用于 將無進(jìn)位乘法的乘積的最高有效部分與第一值相乘以生成第二值; 將所述第二值的最高有效部分與塊密碼中使用的最終域(finalfield)的不可約多項(xiàng)式的最低有效部分相乘以生成第三值; 基于所述第三值確定余數(shù);以及 基于所述余數(shù)的值來使信號生成,其中所述余數(shù)的值指示根據(jù)伽羅瓦計(jì)數(shù)器模式(GCM)經(jīng)加密的消息是否是可信的。
本發(fā)明涉及一種系統(tǒng),包括 存儲器,用于存儲無進(jìn)位乘法指令;以及 處理器,用于執(zhí)行所述無進(jìn)位乘法指令以確定經(jīng)加密的消息是否是可信的。
本發(fā)明涉及一種存儲指令的計(jì)算機(jī)可讀介質(zhì),所述指令使計(jì)算機(jī)能夠 使用32或64位的無進(jìn)位乘法指令來執(zhí)行128×128位的無進(jìn)位乘法; 將乘積模g來進(jìn)行約簡以形成塊密碼的模式的消息認(rèn)證碼;以及 使用所述塊密碼用于網(wǎng)絡(luò)通信的加密。
本發(fā)明涉及一種計(jì)算機(jī)系統(tǒng),包括 網(wǎng)絡(luò)接口;以及 加密模塊,用于使用32或64位無進(jìn)位乘法指令來獲得128×128位無進(jìn)位乘法并將256位乘積模g來進(jìn)行約簡(reduce the 256 productmodulo g)以形成塊密碼的模式的消息認(rèn)證碼。
參考附圖提供詳細(xì)描述。在附圖中,附圖標(biāo)記的最左邊的數(shù)字標(biāo)識該附圖標(biāo)記首次出現(xiàn)所在的附圖。不同附圖中使用相同的附圖標(biāo)記來指示類似或相同的項(xiàng)。
圖1示出可以根據(jù)一些實(shí)施例利用的伽羅瓦計(jì)數(shù)器模式(GCM)的一個實(shí)施例。
圖2和3示出根據(jù)本發(fā)明的一些實(shí)施例的方法的流程圖。
圖4和5示出可用來實(shí)現(xiàn)本文論述的一些實(shí)施例的計(jì)算系統(tǒng)的實(shí)施例的框圖。
具體實(shí)施例方式 在以下描述中,闡述了許多具體細(xì)節(jié)以便于提供對各種實(shí)施例的透徹理解。然而,在沒有這些具體細(xì)節(jié)的情況下,也可實(shí)施本發(fā)明的各種實(shí)施例。在其他情況下,未詳細(xì)描述公知的方法、過程、組件和電路,以避免妨礙理解本發(fā)明的特定實(shí)施例。此外,本發(fā)明的實(shí)施例的各個方面可使用諸如集成半導(dǎo)體電路(“硬件”)、組織成一個或多個程序的計(jì)算機(jī)可讀指令(“軟件”)、或硬件和軟件的某種組合等各種方式來執(zhí)行。出于本公開的目的,提到“邏輯”時應(yīng)表示硬件、軟件(包括例如控制處理器的操作的微代碼)或其某種組合。而且,這里“指令”或“微操作”(也可稱為“uop”)的使用是可互換的。
說明書中提到“一個實(shí)施例”時表示結(jié)合該實(shí)施例描述的特定特征、結(jié)構(gòu)或特性可以包含在至少一個實(shí)現(xiàn)中。在說明書中各處出現(xiàn)的短語“在一個實(shí)施例中”可以指代同一個實(shí)施例或可以不全指代同一個實(shí)施例。
而且,在描述和權(quán)利要求中,可使用術(shù)語“耦合”和“連接”以及它們的派生詞。在本發(fā)明的一些實(shí)施例中,“連接”可用于指示兩個或兩個以上元件彼此直接物理或電接觸?!榜詈稀笨杀硎緝蓚€或兩個以上元件直接物理或電接觸。然而,“耦合”還可指兩個或兩個以上元件沒有彼此直接接觸,但是仍然可彼此協(xié)同工作或交互。
本文論述的一些實(shí)施例可加速塊密碼的伽羅瓦計(jì)數(shù)器模式(GCM)計(jì)算。例如,單個通用處理器核(例如,基于英特爾
公司的核微體系結(jié)構(gòu))可潛在地支持10Gbps的聯(lián)網(wǎng)。在一個實(shí)施例中,無進(jìn)位乘法(carry-less multiplication)運(yùn)算可與快速約簡(reduction)相結(jié)合來加速GCM計(jì)算。在一個實(shí)施例中,指令(例如,依據(jù)至少一個指令集體系結(jié)構(gòu)的“GFMUL”)可引起兩個64位輸入的無進(jìn)位乘法的計(jì)算。在一個實(shí)施例中,執(zhí)行該指令的處理器(如圖4-5中的處理器)可包括以下裝置中的一個或多個裝置用來存儲指令的存儲器(例如,1級、2級、最后一級高速緩存等),用于從存儲器提取指令的提取單元,可選地將所提取的指令解碼的解碼單元,用于調(diào)度指令(或相應(yīng)的uop)來執(zhí)行的調(diào)度單元,以及用于執(zhí)行指令(或相應(yīng)的uop)的一個或多個執(zhí)行單元。
此外,GCM是目前建議用于保密和認(rèn)證的塊密碼(block cipher)的操作模式。具體來說,高級加密標(biāo)準(zhǔn)(AES)伽羅瓦計(jì)數(shù)器模式(AES-GCM)已經(jīng)成為一種日漸流行的用于在快速聯(lián)網(wǎng)中進(jìn)行分組處理的模式。通常,GCM是通過取塊密碼的128位輸出并在2128的伽羅瓦域(GF)中將它乘以散列密鑰來實(shí)現(xiàn)的,其中此散列密鑰在會話期間保持不變。GF(2128)中的乘法由兩個階段組成(i)對兩個128位操作數(shù)進(jìn)行無進(jìn)位乘法,以生成256位結(jié)果;以及(ii)模(modulo)不可約多項(xiàng)式g(x)=x128+x7+x2+x+1來進(jìn)行約簡。由于多項(xiàng)式“g”可表示為僅有5個位等于1的128位的字符串,因此它被稱為“五項(xiàng)式”(pentanomial)。在一個實(shí)施例中,無進(jìn)位乘法可使用本文論述的GFMUL指令作為構(gòu)建塊以獲得用于GCM的兩個128位輸入的無進(jìn)位乘法。而且,一個實(shí)施例將256位結(jié)果模有限域的五項(xiàng)式g來進(jìn)行約簡,以便例如提高整體性能。
具體來說,圖1示出可以根據(jù)一些實(shí)施例利用的伽羅瓦計(jì)數(shù)器模式(GCM)100的實(shí)施例。如圖所示,該模式可根據(jù)由塊密碼生成的加密數(shù)據(jù)產(chǎn)生稱為“伽羅瓦散列”的消息摘要102,例如,可基于密鑰將數(shù)據(jù)104-1到104-3加密,以分別生成密文106-1到106-3。該伽羅瓦散列可用于高性能的消息認(rèn)證。在該模式的每個操作中,將伽羅瓦散列的先前值與當(dāng)前的密文塊執(zhí)行XOR運(yùn)算(例如,106-1與102-1執(zhí)行XOR運(yùn)算,106-2與102-2執(zhí)行XOR運(yùn)算等等)。接著,在GF(2128)中將結(jié)果與散列密鑰值相乘,其中GF(2128)有限域由不可約多項(xiàng)式g=g(x)=x128+x7+x2+x+1來定義。從而,如前所述,在GF(2128)中的乘法包括對兩個128位操作數(shù)執(zhí)行無進(jìn)位乘法以生成256位結(jié)果,并模不可約多項(xiàng)式g來進(jìn)行約簡。
無進(jìn)位乘法 無進(jìn)位乘法又稱為伽羅瓦域乘法,它是將兩個數(shù)相乘而不生成或傳遞進(jìn)位的運(yùn)算。在標(biāo)準(zhǔn)整數(shù)乘法中,將第一操作數(shù)移位與第二操作數(shù)中等于“1”的位的位置相同的次數(shù)。通過將第一操作數(shù)與其移位版本相加來得到這兩個操作數(shù)的乘積。在無進(jìn)位乘法中,除了相加不生成或傳遞進(jìn)位之外,遵循相同的過程。通過這種方式,位相加等效于XOR邏輯運(yùn)算。
無進(jìn)位乘法正式定義如下設(shè)兩個操作數(shù)為A、B,每個操作數(shù)的大小是n位。設(shè)數(shù)A為下列位數(shù)組 A=[an-1an-2...a0](1) 同樣,設(shè)數(shù)B為 B=[bn-1bn-2...b0](2) 設(shè)無進(jìn)位乘法的結(jié)果為下列位數(shù)組 C=[c2n-1c2n-2...c0] (3) 輸出C的位定義為輸入A和B的位的下列邏輯函數(shù) c0=a0b0 ... 以及 ... (5) c2n-2=an-1bn-1 c2n-1=0 式(4)和(5)可以按緊湊形式書寫為 其中,0≤i≤n-1,以及 其中,n-1≤i≤2n-1 從硬件實(shí)現(xiàn)的角度來看,可看到,式(6)和(7)的每個邏輯函數(shù)可使用XOR樹來實(shí)現(xiàn)。最深的XOR樹是實(shí)現(xiàn)取n個輸入的函數(shù)cn-1的XOR樹。例如,用于伽羅瓦域乘法的64位指令(例如,“GFMUL”)需要1+2+...+62+63+62+...+1=3969個XOR門。而且,GFMUL所需的AND門的總數(shù)是1+2+...+64+63+...+1=4096。因此,實(shí)現(xiàn)GFMUL所需的邏輯門的總數(shù)是8065??梢匀菀椎乜闯?,在一些實(shí)現(xiàn)中,專用于GCM計(jì)算的這個門數(shù)成本高昂。在下文中,我們用符號‘*’來表示無進(jìn)位乘法(GFMUL)。
軟件形式的GCM GCM模式的一些當(dāng)前實(shí)現(xiàn)可使用表查詢算法,該算法由兩個階段組成。第一,在預(yù)處理階段期間,可以創(chuàng)建16個不同的表。每個表具有256個條目,且每個條目為128位長。表Ti的每個條目j存儲(j*散列密鑰*2i8)模g(mod g)的值。第二,運(yùn)行時階段,在此階段中,算法取下一個密文塊,且將其與伽羅瓦散列的當(dāng)前值執(zhí)行XOR運(yùn)算。按如下方式在GF(2128)中將結(jié)果與散列密鑰相乘將結(jié)果值分割成16個片段,其中每個片段為8位長。隨后,使用這些片段來執(zhí)行16次表查詢,以便對表進(jìn)行標(biāo)引。將表查詢的結(jié)果彼此執(zhí)行XOR運(yùn)算。這種算法以每字節(jié)為基礎(chǔ)來執(zhí)行運(yùn)算對于每個128位的塊,進(jìn)行16次表查詢和16次128位的XOR運(yùn)算。
可以看出,由于表查詢的成本,這種算法采用軟件形式可能不是很有效率。這種算法所需的表的總大小是16·256·16字節(jié)=64K字節(jié)。由于處理器的L1高速緩存中通??赡芫哂?2K字節(jié),因而這些表無法容放在此高速緩存中,而必須通過二級(L2)高速緩存或其它很少訪問的存儲器來訪問,這引入了延遲。例如,即使可以將存儲器訪問進(jìn)行流水線化,訪問L2高速緩存仍意味著顯著的性能代價。例如,對于與10-20個時鐘周期(下面稱為“時鐘”)的訪問時間關(guān)聯(lián)的高速緩存,GCM的測得成本可能為20個周期/字節(jié)。
圖2示出根據(jù)本發(fā)明的一個實(shí)施例的用于執(zhí)行與GCM關(guān)聯(lián)的操作的方法200的框圖。在一個實(shí)施例中,可以利用本文參考例如圖1和3-4論述的各種組件來執(zhí)行參考圖2論述的一個或多個操作。例如,方法200可用于對通過圖4-5中的網(wǎng)絡(luò)403傳送的數(shù)據(jù)執(zhí)行GCM。
參考圖1-5,在操作202處,可以接收消息(例如,采用通過諸如網(wǎng)絡(luò)403的計(jì)算機(jī)網(wǎng)絡(luò)傳送的數(shù)據(jù)分組的形式)。在操作204處,可確定是否要根據(jù)GCM來對所接收的消息進(jìn)行認(rèn)證(例如,將對密文106-1、106-2等進(jìn)行認(rèn)證)。在一個實(shí)施例中,可在操作204處將通過網(wǎng)絡(luò)403傳送的數(shù)據(jù)分組中(對應(yīng)于加密消息)的一部分(諸如分組報(bào)頭)解碼,以確定是否要根據(jù)GCM來對該消息進(jìn)行認(rèn)證。
在操作206處,可生成無進(jìn)位乘積。在一個實(shí)施例中,可按照如下方式通過例如利用64位指令(例如,本文論述的GFMUL指令)來執(zhí)行128位×128位無進(jìn)位乘法以在操作206處生成乘積。
使用64位GFMUL指令的無進(jìn)位乘積 輸入操作數(shù)可由[A1:A0]和[B1:B0]表示,其中A1、A0、B1和B0各為64位長。
獲得128位×128位的無進(jìn)位乘積首先,可以將以下操作數(shù)相乘A1與B1相乘,A0與B0相乘,以及
與
相乘。設(shè)上述三個相乘的結(jié)果分別為[C1:C0]、[D1:D0]和[E1:E0]。在第二運(yùn)算期間,按如下方式構(gòu)建乘法[A1:A0]*[B1:B0]的256位輸出 性能在GFMUL指令的吞吐量是2個時鐘且序列中的第一乘法的延遲是4個時鐘的情況下,可估計(jì)該階段的速度。這些可認(rèn)為是基于實(shí)際情況中的當(dāng)前硬件實(shí)現(xiàn)的最壞的延遲數(shù)。利用不同參數(shù)來執(zhí)行此分析是容易的。
在具有EM64T 64位寄存器組的典型英特爾
IA處理器中考慮如下操作。首先,將值A(chǔ)1和B1移到寄存器RAX和來自通用組的某個其它寄存器中。對值A(chǔ)1與A0以及值B1與B0執(zhí)行XOR運(yùn)算。所有這些運(yùn)算可在1個時鐘內(nèi)完成。接著,GFMUL指令將A1與B1無進(jìn)位相乘。這在4個時鐘內(nèi)完成。接著,將該乘法的結(jié)果移到保存最終乘積的寄存器中。在這個操作之后,將值A(chǔ)0和B0移到RAX和另一個通用寄存器中以便將它們彼此相乘。這些操作可在2個時鐘內(nèi)完成。接著,在2個時鐘內(nèi)計(jì)算乘積A0*B0,且將結(jié)果與保存最終乘積的寄存器執(zhí)行XOR運(yùn)算。接著,將值
和
移入到RAX和某個其它寄存器中。這些操作可在2個時鐘內(nèi)完成。最后,GFMUL指令將
與
相乘(2個時鐘),且將結(jié)果與保存最終值的寄存器對執(zhí)行XOR運(yùn)算(1個時鐘)。在該例子中,該階段的總估計(jì)延遲是14個時鐘。
參考圖2,在操作208處,可以將在操作206處生成的無進(jìn)位乘積約簡。下文將參考圖3論述根據(jù)一個實(shí)施例執(zhí)行的約簡的進(jìn)一步細(xì)節(jié)。
在操作210,可確定是否存在余數(shù)(例如,基于在操作208執(zhí)行的約簡確定)。如果存在余數(shù),則根據(jù)GCM的認(rèn)證失敗(在一個實(shí)施例中,這可通過產(chǎn)生錯誤信號來用信號通知)。否則,認(rèn)證是成功的。
約簡256位乘積 圖3示出根據(jù)一個實(shí)施例的用于執(zhí)行約簡的方法300。該方法300說明了根據(jù)一個實(shí)施例的圖2中的操作208和/或210的進(jìn)一步的細(xì)節(jié)。如圖3中所示,為了約簡(256位)乘積,可以在操作302處將乘積分成兩個(128位)部分。如下面將進(jìn)一步論述的,由于g的次數(shù)是128,所以可以將最低有效這半部分與最終的余數(shù)執(zhí)行XOR運(yùn)算。對于最高有效部分,可通過兩次相乘來實(shí)現(xiàn)除法。由于不需要考慮輸入的最低有效這半部分,所以認(rèn)為可有效地生成余數(shù)p(x),其定義如下 p(x)=c(x)·xtmod g(x)(9) 這里, ●c(x)是s-1次多項(xiàng)式,其在GF(2)中的系數(shù)表示無進(jìn)位乘積的最高有效位。在當(dāng)前的AES-GCM情形中,s=128。
●t是多項(xiàng)式g的次數(shù)。在當(dāng)前情況下,t=128。
●g(x)是AES-GCM中使用的最終域的不可約多項(xiàng)式。
對于多項(xiàng)式p(x)、c(x)和g(x) c(x)=cs-1xs-1+cs-2xs-2+...+c1x+c0, p(x)=pt-1xt-1+pt-2xt-2+...+p1x+p0,以及(10) g(x)=gtxt+gt-1xt-1+...+gtx+g0 在下文中,可以使用符號Lu(v)來表示多項(xiàng)式v的u個最低有效項(xiàng)的系數(shù),用符號Mu(v)來表示它的u個最高有效項(xiàng)的系數(shù)。多項(xiàng)式p(x)可表示為 p(x)=c(x)·xtmod g(x)=g(x)·q(x)mod xt(11) 其中q(x)是等于c(x)·xt與g相除所得的商的s-1次多項(xiàng)式。在式(11)中,被除數(shù)c(x)·xt的t個最低有效項(xiàng)等于0。此外,被除數(shù)c(x)·xt可表示為多項(xiàng)式g·q和p的和 c(x)·xt=g(x)·q(x)+p(x) (12) 其中運(yùn)算符‘+’表示
從式(12)可以預(yù)期,多項(xiàng)式g·q的t個最低有效項(xiàng)等于多項(xiàng)式p的項(xiàng)。僅當(dāng)這些項(xiàng)彼此相等時,XOR運(yùn)算
的結(jié)果對于它的t個最低有效項(xiàng)是0。因此 p(x)=g(x)·q(x)mod xt=Lt(g(x)·q(x)) (13) 現(xiàn)在,g(x)可定義為 多項(xiàng)式g*表示多項(xiàng)式g的t個最低有效項(xiàng),并且 p(x)=Lt(g(x)·q(x))=Lt(q(x)·g*(x)+q(x)·gtxt)(15) 然而,多項(xiàng)式q·gt·xt的t個最低有效項(xiàng)是0。因此 p(x)=Lt(q(x)·g*(x)) (16) 從式(16)可以得出,為了計(jì)算余數(shù)p,我們需要知道商q的值??梢韵嗨频姆绞接?jì)算商 設(shè) xt+s=g(x)·q+(x)+p+(x) (18) 其中q+是s次(degree)多項(xiàng)式,它等于xt+s與g相除所得的商,且p+是該除法所得的余數(shù)。多項(xiàng)式p+的次數(shù)為t-1。從式(17)和(18)我們得到 以及 可以看出,多項(xiàng)式c·g·q+和g·q·xs的次數(shù)為t+2·s-1,多項(xiàng)式c·p+的次數(shù)為t+s-2,而多項(xiàng)式p·xs的次數(shù)為t+s-1。從而,式(25)左邊和右邊的多項(xiàng)式的s個最高有效項(xiàng)不受多項(xiàng)式c·p+和p·xs影響。因此 接下來,我們注意到,多項(xiàng)式c·g·q+的s個最高有效項(xiàng)等于多項(xiàng)式g·Ms(c·q+)·xs的s個最高有效項(xiàng)。通過把多項(xiàng)式c·q+的s個最低有效項(xiàng)替換為0,由該多項(xiàng)式得到多項(xiàng)式Ms(c·q+)·xs。此外,通過在與由多項(xiàng)式g的項(xiàng)定義的一樣多的偏移位置將多項(xiàng)式c·q+的s個最高有效項(xiàng)彼此相加,可計(jì)算多項(xiàng)式c·g·q+的s個最高有效項(xiàng)。因此,c·g·q+的s個最高有效項(xiàng)與c·q+的s個最低有效項(xiàng)不相關(guān),從而 對于下式給定的q,滿足式(22) q=Ms(c(x)·q+(x))(23) 由于有唯一的商q滿足式(12),所以可以表明,有唯一的商q滿足式(22)。因此,該商q必須等于Ms(c(x)·q+(x))。由此得出,多項(xiàng)式p可由下式得到 p(x)=Lt(g*(x)·Ms(c(x)·q+(x)))(24) 因此,式(24)指示用于計(jì)算多項(xiàng)式p的運(yùn)算。
預(yù)處理對于給定的不可約多項(xiàng)式g,首先計(jì)算多項(xiàng)式g*和q+。多項(xiàng)式g*的次數(shù)為t-1,它由g的t個最低有效項(xiàng)構(gòu)成,而多項(xiàng)式q+的次數(shù)為s,且等于xt+s與多項(xiàng)式g相除所得的商。
余數(shù)多項(xiàng)式的計(jì)算 操作1將輸入c與q+相乘(例如,在操作304處,將乘積的128個最高有效位與2256與g相除所得的商相乘)。其結(jié)果是次數(shù)為2s-1的多項(xiàng)式。
操作2將從操作1得到的多項(xiàng)式的s個最高有效項(xiàng)與g*相乘(例如,在操作306處,將操作304的結(jié)果的128個最高有效位與g*相乘)。其結(jié)果是次數(shù)為t+s-2的多項(xiàng)式。
操作3算法返回由操作2得到的多項(xiàng)式的t個最低有效項(xiàng)(例如,在操作308處,通過將操作304的結(jié)果的最低有效部分與輸入的128個最低有效位執(zhí)行XOR運(yùn)算)。這就是余數(shù)。
可以看到,該算法包括2次128位無進(jìn)位乘法和1次128位XOR運(yùn)算。對于無進(jìn)位乘法,可以使用上文針對第一階段描述的無進(jìn)位技術(shù)。在一個實(shí)施例中,該算法的成本是至少2·14=28個時鐘。
如果考慮g(五項(xiàng)式)的特殊形式,則可以應(yīng)用另一個實(shí)施例。在一個實(shí)施例中,這種方法在一些實(shí)現(xiàn)中可能更有效率。具體來說,x256與g相除所得的商是g本身(例如,如在操作304中應(yīng)用的)。多項(xiàng)式g=g(x)=x128+x7+x2+x+1實(shí)質(zhì)上是位序列[1:<120個0>:10000111]。因此,在一個實(shí)施例中,在操作304-306期間,可以將該位序列與128位值執(zhí)行無進(jìn)位相乘,并且可以通過如下操作獲得這128個最高有效位(i)將輸入的64個最高有效位向右移位63、62和57個位位置;并且(ii)將這些移位后的副本與輸入的64個最低有效位執(zhí)行XOR運(yùn)算。在一些實(shí)現(xiàn)中,這可在4個時鐘內(nèi)完成。接著,可以將此128位結(jié)果與g執(zhí)行無進(jìn)位相乘,并可以保存這128個最低有效位。在一個實(shí)施例中,這可通過如下方法來完成(i)將128位輸入向左移位1、2和7個位置;并且(ii)對結(jié)果執(zhí)行XOR運(yùn)算。在一些實(shí)施例中,后面這些操作可在8個時鐘內(nèi)執(zhí)行。因此,約簡的這種高效實(shí)施例會花費(fèi)12個時鐘(與先前討論的情況下的28個相比)??偣驳?,用于GCM的時鐘總數(shù)對于128位塊(例如,等于16字節(jié))為12+14=26個時鐘,它可轉(zhuǎn)換為大約1.5個周期/字節(jié)。與標(biāo)準(zhǔn)算法相比,所提出的實(shí)施例可獲得顯著的加速。
根據(jù)一些實(shí)施例,用于執(zhí)行本文論述的某些實(shí)現(xiàn)的第一階段的相似方法可以由32位GFMUL指令來實(shí)現(xiàn)。而且,除了使得能夠?qū)崿F(xiàn)高性能(例如,10Gbps)安全聯(lián)網(wǎng)外,一些實(shí)施例還可應(yīng)用于諸如虛擬專用網(wǎng)絡(luò)(VPN)、網(wǎng)絡(luò)邊緣設(shè)備等的其它網(wǎng)絡(luò)安全應(yīng)用。而且,由于目前使用的散列系列安全散列算法(SHA)的狀態(tài)隨摘要長度增長而增加,因此其縮放性能較差。本文論述的技術(shù)可利用根據(jù)本文論述的一些實(shí)施例實(shí)現(xiàn)的基于AES的可信性認(rèn)證方案提供SHA的替代方案。其它實(shí)現(xiàn)可利用本文論述的一些實(shí)施例來實(shí)現(xiàn)二進(jìn)制域上的橢圓曲線密碼技術(shù)(例如,根據(jù)2000年1月27日的FIPS 186-2,″DigitalSignature Standard″,F(xiàn)ederal Information Processing Standard PublicationFIPS 186-2,見http://csrc.nist.gov/publications/fips),其中結(jié)合具有通用多項(xiàng)式的諸如循環(huán)冗余碼(CRC)算法的快速位反映(fast bitreflection)。
圖4示出計(jì)算系統(tǒng)400的一個實(shí)施例的框圖。在多種實(shí)施例中,系統(tǒng)400的一個或多個組件可以多種電子設(shè)備的形式提供,這些電子設(shè)備能夠執(zhí)行本文參照本發(fā)明的一些實(shí)施例論述的一個或多個操作。例如,系統(tǒng)400的一個或多個組件可用于執(zhí)行參考圖1-3論述的操作,例如,通過根據(jù)本文論述的操作處理密文數(shù)據(jù)106-1、106-2等。還可以使用本文(例如,參考圖4和/或5)論述的多種存儲設(shè)備來存儲數(shù)據(jù)、運(yùn)算結(jié)果等。在一個實(shí)施例中,可以將通過網(wǎng)絡(luò)403(例如,經(jīng)由網(wǎng)絡(luò)接口設(shè)備430和/或530)接收的數(shù)據(jù)存儲在處理器402和/或502的高速緩存中(例如,在一個實(shí)施例中為L1高速緩存)。接著,這些處理器可應(yīng)用本文論述的根據(jù)GCM的操作(諸如圖1-3中的一個或多個操作)來認(rèn)證消息。
而且,計(jì)算系統(tǒng)400可包括一個或多個中央處理單元(CPU)402或處理器,它們經(jīng)由互連網(wǎng)絡(luò)(或總線)404通信。處理器402可包括通用處理器、網(wǎng)絡(luò)處理器(用于處理通過計(jì)算機(jī)網(wǎng)絡(luò)403傳送的數(shù)據(jù))或其他類型的處理器(包括精簡指令集計(jì)算機(jī)(RISC)處理器或復(fù)雜指令集計(jì)算機(jī)(CISC))。而且,處理器402可具有單個或多個核設(shè)計(jì)。具有多個核設(shè)計(jì)的處理器402可在同一集成電路(IC)管芯上集成不同類型的處理器核。同樣,具有多個核設(shè)計(jì)的處理器402可以作為對稱或非對稱多處理器來實(shí)現(xiàn)。而且,參考圖1-2論述的操作可通過系統(tǒng)400的一個或多個組件來執(zhí)行。
芯片組406還可與互連網(wǎng)絡(luò)404通信。芯片組406可包括存儲器控制器集線器(MCH)408。MCH 408可包括可與存儲器412通信的存儲器控制器410。存儲器412可存儲數(shù)據(jù),包括可由CPU 402或計(jì)算系統(tǒng)400中包括的任何其它設(shè)備執(zhí)行的指令序列。在本發(fā)明的一個實(shí)施例中,存儲器412可包括一個或多個易失性存儲(或存儲器)設(shè)備,諸如隨機(jī)存取存儲器(RAM)、動態(tài)RAM(DRAM)、同步DRAM(SDRAM)、靜態(tài)RAM(SRAM)或其它類型的存儲設(shè)備。還可利用諸如硬盤的非易失性存儲器。附加設(shè)備可經(jīng)由互連網(wǎng)絡(luò)404通信,如多個CPU和/或多個系統(tǒng)存儲器。
MCH 408還可包括與顯示器416通信的圖形接口414。在本發(fā)明的一個實(shí)施例中,圖形接口414可經(jīng)由加速圖形端口(AGP)與顯示器416通信。在本發(fā)明的一個實(shí)施例中,顯示器416可為通過例如信號轉(zhuǎn)換器與圖形接口414通信的平板顯示器,信號轉(zhuǎn)換器把存儲在諸如視頻存儲器或系統(tǒng)存儲器的存儲設(shè)備中的圖像的數(shù)字表示轉(zhuǎn)換成可由顯示器416解釋并顯示的顯示信號。通過接口414產(chǎn)生的顯示信號可通過各種控制設(shè)備傳遞,然后由顯示器416解釋并隨后在顯示器416上顯示。
集線器接口418可允許MCH 408和輸入/輸出控制集線器(ICH)420進(jìn)行通信。ICH 420可提供到與計(jì)算系統(tǒng)400通信的I/O設(shè)備的接口。ICH 420可通過諸如外圍組件互連(PCI)橋、通用串行總線(USB)控制器、或其它類型的外圍橋或控制器的外圍橋(或控制器)424與總線422通信。橋424可提供CPU 402和外圍設(shè)備間的數(shù)據(jù)通路??衫闷渌愋偷耐?fù)浣Y(jié)構(gòu)。多個總線也可通過例如多個橋或控制器與ICH 420通信。而且,在本發(fā)明的各種實(shí)施例中,與ICH 420通信的其它外圍設(shè)備可包括集成驅(qū)動電子裝置(IDE)或小型計(jì)算機(jī)系統(tǒng)接口(SCSI)硬盤驅(qū)動器、USB端口、鍵盤、鼠標(biāo)、并行端口、串行端口、軟盤驅(qū)動器、數(shù)字輸出支持設(shè)備(例如,數(shù)字視頻接口(DVI))或其它設(shè)備。
總線422可與音頻設(shè)備426、一個或多個磁盤驅(qū)動器428和可與計(jì)算機(jī)網(wǎng)絡(luò)403通信的網(wǎng)絡(luò)接口設(shè)備430通信。在一個實(shí)施例中,設(shè)備430可為能夠進(jìn)行無線通信的NIC。其它設(shè)備可經(jīng)由總線422通信。而且,在本發(fā)明的一些實(shí)施例中,多種組件(如網(wǎng)絡(luò)接口設(shè)備430)也可與MCH 408通信。此外,可以將處理器402和MCH 408組合以構(gòu)成單個芯片。而且,在本發(fā)明的其它實(shí)施例中,圖形接口414可包括在MCH 408中。
而且,計(jì)算系統(tǒng)400可包括易失性和/或非易失性存儲器(或存儲裝置)。例如,非易失性存儲器可包括下列裝置中的一種或多種裝置只讀存儲器(ROM)、可編程ROM(PROM)、可擦除PROM(EPROM)、電EPROM(EEPROM)、磁盤驅(qū)動器(例如,428)、軟盤、致密盤ROM(CD-ROM)、數(shù)字多功能盤(DVD)、閃存、磁-光盤或能夠存儲電子數(shù)據(jù)(例如,包括指令)的其它類型的非易失性機(jī)器可讀介質(zhì)。在一個實(shí)施例中,系統(tǒng)400的組件可以按照諸如參考圖5描述的點(diǎn)對點(diǎn)(PtP)配置來設(shè)置。例如,處理器、存儲器和/或輸入/輸出設(shè)備可通過多個點(diǎn)對點(diǎn)接口互連。
更具體來說,圖5示出根據(jù)本發(fā)明的一個實(shí)施例的按照點(diǎn)對點(diǎn)(PtP)配置設(shè)置的計(jì)算系統(tǒng)500。具體來說,圖5示出其中處理器、存儲器和輸入/輸出設(shè)備通過多個點(diǎn)對點(diǎn)接口互連的系統(tǒng)。參考圖1-4論述的操作可通過系統(tǒng)500的一個或多個組件來執(zhí)行。
如圖5中所示,系統(tǒng)500可包括多個處理器,為清楚起見,僅示出其中兩個處理器502和504。處理器502包括與存儲器510耦合的本地存儲器控制器集線器(MCH)506,處理器504包括與存儲器512耦合的本地存儲器控制器集線器(MCH)508。存儲器510和/或512可存儲各種數(shù)據(jù),如參考圖4中的存儲器412論述的那些數(shù)據(jù)。
處理器502和504可為任何合適的處理器,如參考圖4中的處理器402論述的那些處理器。處理器502和504可分別使用PtP接口電路516和518經(jīng)由點(diǎn)對點(diǎn)(PtP)接口514來交換數(shù)據(jù)。處理器502可使用點(diǎn)對點(diǎn)接口電路526、530經(jīng)由相應(yīng)PtP接口522來與芯片組520交換數(shù)據(jù),處理器504可使用點(diǎn)對點(diǎn)接口電路528、532經(jīng)由相應(yīng)PtP接口524來與芯片組520交換數(shù)據(jù)。芯片組520還可使用PtP接口電路537經(jīng)由高性能圖形接口536來與高性能圖形電路534交換數(shù)據(jù)。
本發(fā)明的至少一個實(shí)施例可通過利用處理器502和504來提供。例如,處理器502和/或504可執(zhí)行圖1-3中的一個或多個操作。然而,本發(fā)明的其它實(shí)施例可存在于圖5的系統(tǒng)500中的其它電路、邏輯單元或設(shè)備中。而且,本發(fā)明的其它實(shí)施例可分布于圖5中所示的幾個電路、邏輯單元或設(shè)備中。
芯片組520可使用PtP接口電路541耦合到總線540??偩€540可使一個或多個設(shè)備耦合到它,如總線橋542和I/O設(shè)備543。經(jīng)由總線544,總線橋543可耦合到其它設(shè)備,如鍵盤/鼠標(biāo)545、參考圖5論述的網(wǎng)絡(luò)接口設(shè)備530(如調(diào)制解調(diào)器、網(wǎng)絡(luò)接口卡(NIC)或可耦合到計(jì)算機(jī)網(wǎng)絡(luò)403的類似設(shè)備)、音頻I/O設(shè)備和/或數(shù)據(jù)存儲設(shè)備548。數(shù)據(jù)存儲設(shè)備548可存儲可由處理器502和/或504執(zhí)行的代碼549。
而且,雖然GFMUL指令目前不是許多處理器體系結(jié)構(gòu)的指令集的一部分,但是已經(jīng)證實(shí),利用GFMUL指令,結(jié)合本文論述的操作,通用處理器(例如,基于英特爾
公司的核微體系結(jié)構(gòu)的通用處理器)可潛在地支持10Gbps聯(lián)網(wǎng)。而且,AES-GCM是計(jì)算密集的,其中在一些實(shí)現(xiàn)中,目前的處理器指令集(例如,甚至未包含AES加速)與例如45時鐘/字節(jié)的延遲相關(guān)聯(lián)。要是能在硬件中加速AES,AES-GCM的成本便可減小到20時鐘/字節(jié),這仍不可以支持高帶寬聯(lián)網(wǎng)。另一方面,在采用本文論述的加速技術(shù)的GFMUL指令以及在硬件中加速AES的情況下,單個處理器核可在10Gbps范圍內(nèi)執(zhí)行AES-GCM(即,在高速分組處理中批量加密和認(rèn)證)。例如,考慮假想處理器核的4GHz時鐘速率以及(最壞情況)3個時鐘AES輪實(shí)現(xiàn)(round implementation)。這里,使用所提出的技術(shù),GCM可按3.3時鐘/字節(jié)來執(zhí)行,轉(zhuǎn)換為10Gbps。
而且,本文論述的實(shí)施例與其它硬件實(shí)現(xiàn)之間的差異是,GFMUL指令不是域特定的,并且因此可用于多種其它應(yīng)用(例如,橢圓曲線密碼術(shù))。為了避免使用域特定(field-specific)的XOR門樹來執(zhí)行約簡,在一些實(shí)施例中,本文論述的至少一些約簡方法可能需要相對較少數(shù)目的軟件形式的移位和XOR運(yùn)算。
在本發(fā)明的多種實(shí)施例中,本文參考例如圖1-5論述的操作可作為硬件(例如,邏輯電路)、軟件(包括例如控制諸如參考圖4-5所論述的處理器的處理器操作的微代碼)、固件或其組合來實(shí)現(xiàn),它可作為計(jì)算機(jī)程序產(chǎn)品來提供,例如包括其上存儲有指令(或軟件程序)的有形機(jī)器可讀或計(jì)算機(jī)可讀介質(zhì),所述指令(或軟件程序)用于對計(jì)算機(jī)(例如,計(jì)算設(shè)備的處理器或其它邏輯)編程以執(zhí)行本文論述的操作。機(jī)器可讀介質(zhì)可包括諸如參考圖4-5論述的那些存儲設(shè)備。
此外,這種計(jì)算機(jī)可讀介質(zhì)還可作為計(jì)算機(jī)程序產(chǎn)品下載,其中可以經(jīng)由通信鏈路(例如,總線、調(diào)制解調(diào)器或網(wǎng)絡(luò)連接)通過在載波或其它傳播介質(zhì)中實(shí)施的數(shù)據(jù)信號將程序從遠(yuǎn)程計(jì)算機(jī)(例如,服務(wù)器)轉(zhuǎn)遞到請求計(jì)算機(jī)(例如,客戶端)。因此,這里的載波可視為包括無形機(jī)器可讀介質(zhì)。
因此,盡管以結(jié)構(gòu)特征和/或方法動作特有的語言描述了本發(fā)明的實(shí)施例,但是應(yīng)當(dāng)理解,所要求的主題不局限于所描述的特定特征或動作。確切地說,將這些特定特征和動作作為實(shí)現(xiàn)所要求的主題的范例形式來公開。
權(quán)利要求
1、一種方法,包括
將無進(jìn)位乘法的乘積的最高有效部分與第一值相乘以生成第二值;
將所述第二值的最高有效部分與在塊密碼中使用的最終域的不可約多項(xiàng)式的最低有效部分相乘以生成第三值;以及
基于所述第三值確定余數(shù)。
2、如權(quán)利要求1所述的方法,其中所述第一值包括根據(jù)伽羅瓦計(jì)數(shù)器模式(GCM)將2256與所述塊密碼中使用的所述最終域的所述不可約多項(xiàng)式相除所得的商。
3、如權(quán)利要求2所述的方法,其中所述塊密碼包括高級加密標(biāo)準(zhǔn)(AES)密碼。
4、如權(quán)利要求1所述的方法,還包括基于所述余數(shù)的值生成信號,其中所述余數(shù)的值指示根據(jù)伽羅瓦計(jì)數(shù)器模式(GCM)經(jīng)加密的消息是否是可信的。
5、如權(quán)利要求1所述的方法,其中確定所述余數(shù)包括將所述第三值的最低有效部分與所述乘積的最低有效部分執(zhí)行異或運(yùn)算。
6、如權(quán)利要求1所述的方法,還包括執(zhí)行密文和散列值的無進(jìn)位乘法運(yùn)算以生成所述乘積。
7、如權(quán)利要求6所述的方法,其中所述密文和所述散列值均包括128位數(shù)據(jù)。
8、如權(quán)利要求1所述的方法,其中所述乘積包括256位數(shù)據(jù),并且所述乘積的最高有效部分包括128位數(shù)據(jù)。
9、如權(quán)利要求1所述的方法,其中所述乘法運(yùn)算是通過64位的無進(jìn)位乘法運(yùn)算來執(zhí)行的。
10、如權(quán)利要求1所述的方法,其中將無進(jìn)位乘法的乘積的最高有效部分與第一值相乘以生成第二值包括
將128位輸入的64個最高有效位向右移位63、62和57個位位置;以及
將移位后的位與所述輸入的64個最低有效位執(zhí)行異或運(yùn)算。
11、如權(quán)利要求1所述的方法,其中將所述第二值的最高有效部分與在塊密碼中使用的最終域的不可約多項(xiàng)式的最低有效部分相乘以生成第三值包括
將128位輸入向左移位1、2和7個位置;以及
對移位后的位執(zhí)行異或運(yùn)算。
12、一種包括一個或多個指令的計(jì)算機(jī)可讀介質(zhì),所述指令在處理器上執(zhí)行時將所述處理器配置成用于
將無進(jìn)位乘法的乘積的最高有效部分與第一值相乘以生成第二值;
將所述第二值的最高有效部分與塊密碼中使用的最終域的不可約多項(xiàng)式的最低有效部分相乘以生成第三值;
基于所述第三值確定余數(shù);以及
基于所述余數(shù)的值使信號生成,其中所述余數(shù)的值指示根據(jù)伽羅瓦計(jì)數(shù)器模式(GCM)經(jīng)加密的消息是否是可信的。
13、如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),還包括一個或多個指令,所述一個或多個指令將所述處理器配置成用于執(zhí)行密文與散列值的無進(jìn)位乘法運(yùn)算以生成所述乘積。
14、如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),還包括一個或多個指令,所述一個或多個指令將所述處理器配置成用于
將128位輸入的64個最高有效位向右移位63、62和57個位位置;以及
將移位后的位與所述輸入的64個最低有效位執(zhí)行異或運(yùn)算。
15、如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),還包括一個或多個指令,所述一個或多個指令將所述處理器配置成用于
將128位輸入向左移位1、2和7個位置;以及
對移位后的位執(zhí)行異或運(yùn)算。
16、一種系統(tǒng),包括
存儲器,用于存儲無進(jìn)位乘法指令;以及
處理器,用于執(zhí)行所述無進(jìn)位乘法指令以確定經(jīng)加密的消息是否是可信的。
17、如權(quán)利要求16所述的系統(tǒng),其中所述處理器根據(jù)伽羅瓦計(jì)數(shù)器模式來執(zhí)行多個計(jì)算以確定所述經(jīng)加密的消息的可信性。
18、如權(quán)利要求16所述的系統(tǒng),其中所述處理器包括所述存儲器。
19、如權(quán)利要求16所述的系統(tǒng),其中所述處理器包括一個或多個處理器核。
20、如權(quán)利要求16所述的系統(tǒng),還包括用于通過計(jì)算機(jī)網(wǎng)絡(luò)接收所述消息的網(wǎng)絡(luò)接口設(shè)備。
21、一種存儲指令的計(jì)算機(jī)可讀介質(zhì),所述指令使計(jì)算機(jī)能夠
使用32或64位的無進(jìn)位乘法指令來執(zhí)行128×128位的無進(jìn)位乘法;
將乘積模g來進(jìn)行約簡以形成塊密碼的模式的消息認(rèn)證碼;以及
使用所述塊密碼來實(shí)現(xiàn)網(wǎng)絡(luò)通信的加密。
22、如權(quán)利要求21所述的介質(zhì),還存儲用于保存128個最高有效位的指令。
23、如權(quán)利要求22所述的介質(zhì),還存儲用于通過將所述輸入的64個最高有效位向右移位63、62和57個位位置并將位移后的副本與所述輸入的所述64個最低有效位執(zhí)行異或運(yùn)算來保存所述128個最高有效位的指令。
24、如權(quán)利要求23所述的介質(zhì),還存儲用于將移位后的位與所述64個最低有效位執(zhí)行異或運(yùn)算的指令。
25、如權(quán)利要求24所述的介質(zhì),還存儲用于將128位的數(shù)與g執(zhí)行無進(jìn)位乘法的指令。
26、如權(quán)利要求25所述的介質(zhì),還存儲用于保存所述無進(jìn)位乘法乘積的128個最低有效位的指令。
27、如權(quán)利要求26所述的介質(zhì),還存儲用于通過將128位輸入向左移位1、2和7個位置并對結(jié)果執(zhí)行異或運(yùn)算來保存所述最低有效位的指令。
28、一種計(jì)算機(jī)系統(tǒng),包括
網(wǎng)絡(luò)接口;以及
加密模塊,用于使用32或64位的無進(jìn)位乘法指令來獲得128×128位的無進(jìn)位乘法并將256位乘積模g來進(jìn)行約簡以形成塊密碼的模式的消息認(rèn)證碼。
29、如權(quán)利要求28所述的系統(tǒng),所述加密模塊用于保存所述乘積的128個最高有效位。
30、如權(quán)利要求29所述的系統(tǒng),所述模塊用于通過將輸入的64個最高有效位向右移位63、62和57個位位置并將移位后的副本與所述輸入的64個最低有效位執(zhí)行異或運(yùn)算來保存所述128個最高有效位。
31、如權(quán)利要求30所述的系統(tǒng),所述模塊用于將所述移位后的位與所述64個最低有效位執(zhí)行異或運(yùn)算。
32、如權(quán)利要求31所述的系統(tǒng),所述模塊用于將128位的數(shù)與g無進(jìn)位相乘。
33、如權(quán)利要求32所述的系統(tǒng),還包括用于保存所述無進(jìn)位乘法的128個最低有效位的模塊。
34、如權(quán)利要求33所述的系統(tǒng),所述模塊用于通過將128位輸入向左移位1、2和7個位置并對結(jié)果執(zhí)行異或運(yùn)算來保存所述最低有效位。
全文摘要
描述用于加速伽羅瓦計(jì)數(shù)器模式(GCM)計(jì)算的方法和裝置。在一個實(shí)施例中,可以使用無進(jìn)位的乘法指令來執(zhí)行對應(yīng)于依據(jù)GCM驗(yàn)證加密消息的操作。還描述其它實(shí)施例。
文檔編號G06F7/72GK101349968SQ200810214759
公開日2009年1月21日 申請日期2008年6月30日 優(yōu)先權(quán)日2007年6月30日
發(fā)明者S·格倫, M·E·庫納維斯 申請人:英特爾公司