專利名稱:加速對特性2橢圓曲線密碼系統(tǒng)的計算的方法
背景 領域 本實施例涉及密碼領域,且尤其涉及加速對特性2橢圓曲線密碼系統(tǒng)的計算的裝置、系統(tǒng)和方法。
背景技術:
Karatsuba算法(A.Karatsuba和Y.Ofman,Multiplication of MultidigitNumbers on Automata(自動機上多位數(shù)的乘法),Soviet Physics-Doklady,7(1963),第595-596頁)在1962年提出,作為一種減少計算兩個大數(shù)的乘積所需的標量乘法的數(shù)目的嘗試。經(jīng)典的算法接受次數(shù)等于1的兩個多項式作為輸入,即a(x)=a1x+a0和b(x)=b1x+b0,并利用三個標量乘法計算它們的乘積a(x)b(x)=a1b1x2+(a1b0+a0b1)x+a0b0。這種技術與多項式a(x)和b(x)相乘的樸素(也稱為“教科書”)方式不同,該方式執(zhí)行4個標量乘法,即得出乘積a0b0、a0b1、a1b0和a1b1。
Karatsuba示出僅需要進行三個標量乘法,即僅需要得出乘積a1b1、(a1+a0)(b1+b0)和a0b0。一旦執(zhí)行標量乘法,缺失的系數(shù)(a1b0+a0b1)可被計算為差值(a1+a0)(b1+b0)-a0b0-a1b1。對于較大的操作數(shù),可遞歸地應用Karatsuba算法。
Karatsuba不僅適用于多項式,還適用于大數(shù)。大數(shù)可通過用變量x替換任意2的冪來轉換成多項式。與使用Karatsuba相關聯(lián)的最重要的未解決的問題之一是如何將算法應用到大數(shù),而不會由于遞歸而浪費處理時間。遞歸不合需要有三個原因。第一,遞歸Karatsuba進程使相關的加法與乘法交織。結果,遞歸Karatsuba進程不能充分利用任何由處理器架構或芯片組支持的硬件級并行度。第二,由于遞歸,由遞歸Karatsuba產(chǎn)生的中間標量項需要更多的處理器字來表示。因此,單個標量乘法或加法需要一個以上的處理器運算來實現(xiàn)。這種額外開銷是相當大的。第三,遞歸Karatsuba招致函數(shù)調用額外開銷。
Oregon Sate University(俄勒岡州立大學)的Cetin Koc等人(S.S.Erdem和C.K.Koc.“A less recursive variant of Karatsuba-Ofman algorithm for multiplyingoperands of size a power of two”(用于對2的冪大小的操作數(shù)作乘法的Karatsuba-Ofman算法的較小遞歸變體),會議錄,第16屆IEEE計算機架構討論會,主編J.-C.B ajard和M.Schulte,第28-35頁,IEEE計算機協(xié)會出版社,Santiago de Compostela,西班牙,2003年6月15-18日)描述了Karatsuba的一種較小遞歸變體,其中輸入操作數(shù)的大小需要是2的冪。然而,該變體仍需要遞歸調用且僅適用于特定大小的操作數(shù)。
最初由Koblitz(N.Koblitz,“Elliptic Curve Cryptosystems”(橢圓曲線密碼系統(tǒng)),Mathematics of Computation(計算數(shù)學),48,第203-209頁,1987)和Miller(V.Miller,“Uses ofElliptic Curvers in Cryptography”(密碼學中橢圓曲線的使用),會議錄,Advances in Cryptology(Crypto’85)(密碼學的進步),第416-426頁,1985)提出的橢圓曲線密碼學近來獲得了來自工業(yè)的很多關注,并且密鑰建立和數(shù)字簽名運算類似于帶有相似密碼強度的RSA,但其密鑰大小小得多。
橢圓曲線密碼學背后的主要思想是橢圓曲線中的點形成加法群。點可與其自身相加很多次,其中加法次數(shù)可以是很大的數(shù)。這種運算通常被稱為“點乘標量乘法(point times scalar multiplication)”或簡稱為“點乘法”。橢圓曲線密碼學對公鑰運算的適用性來自以下事實如果原始和所得點是已知的,但加法的數(shù)目是未知的,則很難從原始和所得點得出該數(shù)目。所得的點的坐標可形成公鑰,而產(chǎn)生公鑰的加法的數(shù)目可形成私鑰。
附圖簡述 在附圖的各個圖中,實施例作為示例而非限制示出,其中相同的附圖標記指示類似的元素,且附圖中
圖1示出4乘4示例的進程的實施例的流程圖; 圖2示出完全圖的示例; 圖3示出圖同構的示例; 圖4示出18乘18示例的實施例的圖示; 圖5示出利用局部索引序列符號的實施例的生成平面(spanning plane)的表示; 圖6示出利用半局部索引序列和全局索引符號的實施例的生成平面的表示; 圖7示出生成平面的可選表示; 圖8示出9乘9生成平面的另一個示例; 圖9示出邊到生成邊和生成平面的映射的實施例表示; 圖10示出實施例的減法生成的圖示; 圖11A-11B示出實施例的框圖; 圖12示出現(xiàn)有進程與實施例的比較;以及 圖13是示出根據(jù)一個實施例的計算兩個輸入操作數(shù)的進位少的乘積的余數(shù)的方法。
圖14是示出根據(jù)一個實施例計算圖13的余數(shù)的方法的流程圖。
圖15示出系統(tǒng)中的裝置的實施例。
詳細描述 本文討論的實施例一般涉及對加速特性2橢圓曲線密碼系統(tǒng)的計算的裝置、系統(tǒng)和方法。在一個實施例中,諸如Lopez-Dahab空間(J.Lopez和R.Dahab,“Fast Multiplication on Elliptic Curves over GF(2m)without Precomputation”(無需預計算的在GF(2m)上橢圓曲線的快速乘法),會議錄,Workshop onCryptographic Hardware and Embedded Systems(CHES1999)(加密硬件與嵌入式系統(tǒng)研討會),第316-327頁,1999)的射影空間被用于表示點坐標,點加法和點倍增通過引入一種在形GF(2m)的有限域中使元素相乘的新穎的方式來加速。在一個實施例中,元素利用用于進位少(carry-less)的乘法(GFMUL)和單次迭代類似Karatsuba公式(M.Kounavis,“A New Method for Fast IntegerMultiplication and its Application to Cryptography”(一種用于快速整數(shù)乘法的新方法及其對密碼學的應用),會議錄,International Symposium on the PerformanceEvaluation of Computer and Telecommunication Systems(關于計算機和電信系統(tǒng)的性能評估的國際研討會SPECTS 2007)圣地亞哥,美國加州,2007年7月)的CPU指令做乘法,用于計算GF(2)中高次數(shù)多項式的進位少的乘積。
在一個實施例中,通過認識到很多曲線用稀疏的不可約多項式指定域,來進行這些多項式的進位少的乘積的約簡。美國國家標準及技術研究所(NIST)曲線用三項(三項式)或五項(五項式)指定多項式。一個實施例用軟件在3.6GHz奔騰4處理器上基于NIST B-233曲線使橢圓曲線Diffie Hellman加速55%。如果將3時鐘等待時間GFMUL指令引入CPU,則加速因子變?yōu)?.2X。進一步的軟件優(yōu)化有可能使加速增加超過10X。參照附圖,現(xiàn)在將描述示例性實施例。提供示例性實施例,以說明實施例且不應該理解為限制本實施例的范圍。
在一個實施例中,針對其中點坐標是形GF(2m)的有限域的元素且諸如Lopez-Dahab射影空間(Lopez和Dahab 1999)的射影空間用于表示點坐標的橢圓曲線,加速點乘法,以確保點乘法中的所有基本運算(即點加法和點倍增)包括Galois(伽羅瓦)域加法和乘法但沒有除法。通過實現(xiàn)Galois域乘法,我們的實現(xiàn)方式不同于現(xiàn)有技術水平(“The OpenSSL Source Code Distribution”(OpenSSL源代碼分布)可在www.openssl.org得到)。
在現(xiàn)有技術水平的實現(xiàn)中,使用針對32或64比特進位少的乘法的4比特表查找、用于將進位少的乘法擴展到較大操作數(shù)的遞歸Karatsuba和最終乘積模(modulo)所使用域的不可約多項式的逐字約簡,來實現(xiàn)Galois域(GF)乘法。在一個實施例中,使用實現(xiàn)兩個64比特輸入的進位少的乘法的指令(GFMUL)來代替表查找。利用GFMUL指令作為構造塊,將新穎的單次迭代擴展(Kounavis 2007)應用于已知的Karatsuba算法,以便獲得所需的較大輸入(例如,233bitds)的進位少的乘法。在一個實施例中,一種約簡結果模稀疏的不可約多項式的方法有助于提高總體性能。
在一個實施例中,NIST B-233曲線的約簡需要不超過3個256比特寬偏移和3個256比特寬XOR操作,從而使得單個英特爾奔騰4執(zhí)行橢圓曲線DiffieHellman能夠比現(xiàn)有技術水平(OpenSSL,未注明日期)快55%。此外,如果使用3時鐘GFMUL指令,則加速器因子變?yōu)?.2X。在一個實施例中,約簡方法不需要將域特定約簡邏輯置于處理器指令的實現(xiàn)中。我們首先描述進位少的乘法。
如本文所描述的,“進位少的乘法”也稱為Galois域(GF(2))乘法,是使兩個數(shù)相乘而不生成或傳播進位的運算。在標準的整數(shù)乘法中,第一操作數(shù)被移位的次數(shù)與第二操作數(shù)中等于“1”的比特的位置一樣多。通過使第一操作數(shù)的經(jīng)移位的版本彼此相加導出兩個操作數(shù)的乘積。在進位少的乘法中,進行相同的過程,但加法不生成或傳播進位。由此,比特加法等價于異或(XOR)邏輯運算。
進位少的乘法形式上定義如下令兩個操作數(shù)各自是大小為n比特的A、B。令數(shù)A是以下的比特陣列 A=[an-1an-2...a0] (1) 還令數(shù)B是 B=[bn-1bn-2...b0] (2) 令進位少的乘法結果是以下的比特陣列 C=[c2n-1c2n-2...c0](3) 輸出C的比特被定義為以下輸入A和B的比特的邏輯函數(shù) 其中0≤i≤n-1,以及 其中n-1≤i≤2n-1。
從硬件實現(xiàn)的觀點看,方程式(4)和(5)的邏輯函數(shù)可利用XOR樹來實現(xiàn)。最深的XOR樹是實現(xiàn)其中接納n個輸入的函數(shù)cn-1的一個。例如,Galois域乘法(GFMUL)的64比特指令需要3969XOR和4096AND門。
在一個實施例中,XOR樹可用于構造適中輸入操作數(shù)大小(例如,64比特)的進位少的乘法器指令邏輯。一個實施例通過利用快速多項式乘法技術進行擴展來提供較大操作數(shù)的進位少的乘法,該快速多項式乘法技術是公知的Karatsuba算法(Karatsuba和Ofman,1963)的一般化,由近正方形復雜度表征為輸入操作數(shù)大小的函數(shù),同時避免遞歸成本。該進位少的乘法指令在表1中示出。
表1 進位少的乘法指令
描述 該指令進行進位少的乘法。
輸入A,B(n比特) 輸出C(2n比特) C[i]=XOR(j=0..i,A[j]&B[i-j]) 其中i=0...n-1 C[i]=XOR(j=i+1-n..n-1,A[j]&B[i-j]) 其中i=n...2n-1 C[2n]=0 示例對于n=2,A=[A[1],A
],B=[B[1],B
], C
=A
&B
,C[1]=A
&B[1]XORA[1]&B
,C[2]=A[1]&B[1],C[3]=0 運算 [EDXEAX]←EAX*r/m32 [RDXRAX]←RAX*r/m64 我們現(xiàn)在描述單次迭代基于圖的乘法例程。圖1利用實施例示出利用圖生成4乘4乘積項的示例。如圖1所示,輸入操作數(shù)是大小為4的字。在其它實施例中,操作數(shù)大小是諸如計算設備(例如,計算機)之類的機器的本機操作數(shù)大小。操作數(shù)是多項式a(x)=a3x3+a2x2+a1x+a0和b(x)=b3x3+b2x2+b1x+b0。由于輸入操作數(shù)大小是4的事實,實施例構造完整的正方形。正方形的頂點被索引為0、1、2和3,如圖1所示。在實施例的進程的第一部分構造完整的正方形(參見圖11A)。在實施例的進程的第二部分中,選擇完整的子圖的集合,且各個子圖被映射到標量積(參見圖11B)。
連接頂點i0,i2,...,im-1的完整子圖被映射到標量積在圖1所示的示例中選擇的完整子圖是頂點0、1、2和3,邊0-1、2-3、0-2和1-3,整個正方形0-1-2-3。在進程中的第二部分定義的標量積是a0b0、a1b1、a2b2、a3b3、(a0+a1)(b0+b1)、(a2+a3)(b2+b3)、(a0+a2)(b0+b2)、(a1+a3)(b1+b3)和(a0+a1+a2+a3)(b0+b1+b2+b3)。在進程的最后部分中,進行若干次減法(參見圖11B,1165)。
作為一個例子,從完整的正方形0-1-2-3中減去邊0-1和2-3(帶有其相鄰頂點)以及0-2和1-3(不帶有其相鄰頂點)。剩余的是對角線0-3和1-2。這些對角線對應于項a1b2+a2b1+a3b0+a0b3,這個項是結果的x3的系數(shù)。在一個實施例中,由公式的集合的減法產(chǎn)生的差表示完全圖的對角線,其中這些圖中的頂點數(shù)是2的冪(即,正方形、立方體、超立方體等)。由減法得到的項在彼此相加時產(chǎn)生最終乘積的系數(shù)。
為了更詳細地解釋,首先注意以下的定義。N表示輸入的大小(即,每個輸入多項式的項數(shù))。N是L個整數(shù)n0,n1,...,nL-1的乘積。數(shù)L表示乘法的級數(shù)。
N=n0·n1·...·nL-1 (6) 對于L級,其中“級”定義完全圖的集合,級l的圖集合被表示為G(l)。集合G(l)的基數(shù)被表示為|G(l)|。集合G(l)的第i元素被表示為
。每一個圖集合G(l)具有有限數(shù)目的元素。集G(l)的基數(shù)被定義為 集合G(l)的每一個元素是對于完全
是同構的。圖集合G(l)的正式定義在方程式(8)中示出
完全圖Ka是由索引為0、1、2和3的頂點組成的圖,其中每一個頂點用邊與圖的各個其它頂點相連。圖2示出完全圖的示例。如果存在頂點映射函數(shù)fv和邊映射函數(shù)fe,使得對于A的每個邊e函數(shù)fv將e的端點映射到fe(e)的端點,則將兩個圖A和B稱為同構。邊f(xié)e(e)及其端點都屬于圖B。圖3示出兩個同構圖的示例。
在一個實施例中,能夠以兩種方式索引集合G(l)的元素。一種方式是使用唯一的索引i,該索引i可采用0和|G(l)|-1之間的所有可能值,其中基數(shù)|G(l)|由方程式7給出。這一元素被表示為
這種表示圖的方式被表示為“全局索引”。即,在特定級上用于表示圖的索引被稱為全局索引。
對元素索引的另一種方式是使用l個索引i0,i1,...,il-1的集合,且l>0。這種索引序列被稱為“局部索引”序列。在l=0的簡單情況下,局部索引序列僅由一個索引組成,它等于0。局部索引i0,i1,...,il-1與特定元素
的全局索引i以方程式(9)所示的方式相關。
i=(((i0·n1)+i1)·n2+i2)·n3+...+il-1 (9) 方程式(9)還可按閉合形式寫為 局部索引i0,i1,...,il-1滿足以下的不等式 0≤i0≤n0-1 0≤i1≤n1-1 (11) ...0≤il-1≤nl-1-1 在一個實施例中,如果不等式(6)有效且基數(shù)|G(l)|由(2)給出,則與局部索引序列i0,i1,...,il-1有關的全局索引i的值在0和|G(l)|-1之間。這由以下證明從方程式(9)可以看出i是i0,i1,...,il-1的非減函數(shù)。因此,i的最小值通過將每一個局部索引設置為等于0來產(chǎn)生。因此最小的i是0。i的最大值通過將每一個局部索引i0,i1,...,il-1設置為等于其最大值來獲得。對于0≤j≤l-1用nj-1代替每一個局部索引ij,得到 imax=(n0-1)·n1·n2·...·nl-1+(n1-1)·n2·...·nl-1+...+nl-1-1= n0·n1·n2·...·nl-1-n1·n2·n3·...·nl-1 +n1·n2·n3·...·nl-1-n2·n3·n4·...·nl-1 (12) +n2·n3·n4·...·nl-1-n3·n4·n5·...·nl-1 +...-nl-1+nl-1-1=n0·n1·n2·...·nl-1-1=|G(l)|-1 在每個全局索引i在0和|G(l)|-1之間的一個實施例中,存在滿足方程式(10)和方程式(11)中的不等式的唯一的局部索引序列i0,i1,...,il-1。這由以下證明為了證明對于全局索引i,0≤i≤|G(l)|-1,存在至少一個滿足方程式(10)和方程式(11)的局部索引序列i0,i1,...,il-1,在一個實施例中,以下的偽碼表示這種局部索引序列的構造 LOCAL_INDEXES(i) 1.for j←0 to l-1 2. do if j+1≤l-1 3. then
6.else 7.ij←i mod nl-1 8. return{i0,i1,...,il-1} 可以看出由LOCAL_INDEXES產(chǎn)生的局部索引序列i0,i1,...,il-1滿足方程式(10)和方程式(11)中的不等式。因此,證明了與全局索引相關聯(lián)的局部索引序列的存在。
為了證明局部索引序列的唯一性,注意,如果兩個序列i0,i1,...,il-1和
都滿足方程式(10)和方程式(11),則某些索引q,0≤q≤l-1,不可能使假設相反的情況,即有m個索引q0,q1,...,qm-1使得同樣假設對于所有其它索引,序列i0,i1,...,il-1和
相等。因為兩個序列都滿足方程式(10)所以以下的恒等式為真 不失一般性,假設q0<q1<...<qm-1。數(shù)
明顯是
的倍數(shù)。項
與這個數(shù)相加不可能使和等于0,因為同樣的情況適用于所有其它的項——一直到
——的和。結果方程式(13)不可能有效。因此,證明了局部索引序列的唯一性。
以下符號用于表示與全局索引i和局部索引序列i0,i1,...,il-1相關聯(lián)的圖 考慮級l的圖
(或
)。該圖根據(jù)定義同構為
這表示該圖包括nl個頂點和nl·(nl-1)/2個邊,其中每個頂點以邊連接到所有其它的頂點。集合
(或
)被定義為圖
(或
)的所有頂點的集合。在一個實施例中,可使用三種選擇的方式來表示圖的頂點。一種方式是使用局部索引序列符號。圖
的第il頂點被表示為
其中0≤il≤nl-1。使用局部索引序列符號,圖
的所有頂點的集合被定義為 表示圖的頂點的第二種方式是使用“半局部”索引序列符號。在一個實施例中,半局部索引序列包括圖的全局索引和與頂點相關聯(lián)的局部索引。使用半局部索引序列符號,圖
的第il索引被表示為
其中0≤il≤nl-1。由此,圖
的所有頂點的集合被定義為 在一個實施例中,對每個頂點
分配唯一的全局索引ig←i·nl+il。示出0≤ig≤|G(l+1)|-1且對于每個半全局索引序列i,il,存在唯一的全局索引ig使得ig=i·nl+il;同樣對于每個全局索引ig,存在唯一的半全局索引序列i,il使得ig=i·nl+il。
根據(jù)方程式(10)用
)取代i,頂點的全局索引ig與局部索引序列i0,i1,...,il-1,il相關聯(lián)。索引i0,i1,...,il-1表征包含頂點的圖,而索引il表征頂點本身。ig與i0,i1,...,il-1,il之間的關系在方程式(17)中給出 在一個實施例中,與級l的圖的某些頂點相關聯(lián)的全局索引ig具有與滿足恒等式(12)、不等式(6)和0≤il≤nl-1的唯一的局部索引序列i0,i1,...,il-1,il的一對一對應。
使用全局索引符號,圖
(或
)的所有頂點的集合被定義為 或 在級l連接圖的兩個頂點
和
的邊被表示為
如果兩個頂點
和
利用半局部索引序列符號表示,則連接這兩個頂點的邊被表示為
最后如果兩個索引
和
利用局部索引序列符號表示,則連接這兩個頂點的邊被表示為
圖
(或
)的所有邊的集合被表示為
(或
)。該集合被正式定義為 或 或 在一個實施例中,用于同一級的不同圖的頂點之間的邊的符號與用于同一圖的頂點之間的邊的符號相同。例如,利用局部索引序列符號表示的連接兩個頂點
和
的邊被表示為
在一個實施例中,用于圖G的頂點和邊的集合的可選符號分別是V(G)和E(G)。此外,來自圖論的術語“簡單”用于指與末級L-1相關聯(lián)的圖、頂點和邊緣。所有其它級l,l<L-1的圖、頂點和邊緣被稱為“廣義”。與特定圖G、頂點v或邊緣e相關聯(lián)的級分別被表示為l(G)、l(v)或l(e)。
頂點至圖映射函數(shù)fv→G被定義為一種接受特定級l,l<L-1的圖的頂點作為輸入、并返回與輸入頂點相同的全局索引或局部索引序列相關聯(lián)的下一級l+1的圖的函數(shù)。
函數(shù)fv→G的可選定義是 和 類似地,圖至頂點映射函數(shù)fg→v被定義為一種接受特定級l,l>0的圖作為輸入、并返回與輸入圖相同的全局索引或局部索引序列相關聯(lián)的前一級l-1的頂點的函數(shù)。
函數(shù)fg→v的可選定義是 和 頂點至圖和圖至頂點映射函數(shù)的重要性在于它們使我們能夠繪畫般地表示針對特定操作數(shù)輸入大小定義的所有級的所有圖。第一,圖的每一個頂點被表示為圓。第二,每個圓的內(nèi)部,繪制下一級的圖,它映射到由圓表示的頂點。作為示例,圖4示出如何繪制針對18乘18乘法定義的圖。
在圖4示出的例子中,N=18??蓪寫為三個因子——即2、3和3的乘積,將級數(shù)L設置成等于3,且n0=2、n1=n2=3,針對與如圖4所示的乘法相關聯(lián)的所有級繪制圖??梢钥闯?,在末級圖的頂點不包括任何圖。這就是它們被稱為“簡單”的原因。還可看出,特定級的每一個頂點包含的圖的集合數(shù)與下面的級數(shù)相等。這就是圖的集合被稱為“級”的原因。
在一個實施例中,術語“生成”是從圖論加載的。術語生成用于指在特定級連接圖的不同頂點的邊或邊的集合。
生成平面被定義為由同一級的兩個不同圖的兩個子圖之間的結合“+”運算得到的圖。兩個子圖中的每一個都包括連接兩個頂點的單邊。以下描述這兩個子圖
(29)
此外,表征被結合以產(chǎn)生生成平面的兩個邊的局部索引序列需要滿足以下條件
方程式(30)還可按閉合形式寫成如下
方程式(30)或方程式(31)指示生成平面中結合邊的所有相應局部索引相等,但位置q處的索引除外,其中0≤q≤l-1。因為這意味著被結合以形成生成平面的兩個邊與不同的圖相關聯(lián)。在q=l-1的特殊情況下,包含生成平面的結合邊的兩個圖映射到集l-1的同一圖的頂點上,因為 兩個圖之間的結合運算“+”被定義為包括“+”的兩個操作數(shù)加上將第一操作數(shù)的每一個頂點連接至第二操作數(shù)的每一個頂點的新邊。在圖5中示出通過結合方程式(29)的兩個子圖同時方程式(31)有效且q=l-1而產(chǎn)生的生成平面。如圖5所示,利用局部索引序列符號表示頂點和邊。
利用局部索引序列符號,可將生成平面正式地定義為
因為局部索引序列符號冗長,所以將較短的“半局部”索引序列符號用于表示生成平面
在以上方程式(33)的定義中,索引i的值由恒等式(10)以及下式給出 在一個實施例中,全局索引符號用于表示生成平面。使用全局索引符號,可將生成平面定義為
在以上的方程式(35)符號中
恒等式(31)中的索引i由恒等式(5)給出,而(31)中的索引i′由恒等式(29)給出。在圖6中給出利用半局部索引序列和全局索引符號的生成平面的繪畫表示。
在另一個實施例中,在圖7示出所使用的生成平面的可選繪畫表示。圖7中示出的頂點利用全局索引符號表示。為了簡化,省略了頂點的級。
在圖8中示出生成平面的示例。該示例示出針對9乘9乘法構造的圖及所有簡單頂點的全局索引。該示例還示出由邊
和
定義的生成平面。
生成邊是連接同一級的不同圖的兩個頂點
和
的邊。描述兩個頂點的局部索引序列i0,i1,...,il和
需要滿足以下條件 或者(以閉合形式)
根據(jù)方程式(38)中的條件,顯而易見的是生成邊連接具有相同最后局部索引的頂點。第二,作為生成邊的端點的頂點與不同的圖G(l)相關聯(lián),因為第三,在q=l-1的特殊情況下,包含生成邊的端點的兩個圖映射到級l-1的同一圖的頂點,因為 生成邊可利用局部索引序列符號正式地表示如下 (39) 生成邊還可利用半局部索引序列符號正式地表示 在方程式(40)的定義中,索引i的值由方程式(10)以及下式中示出的恒等式給出 在另一個實施例中,表示生成邊的第三種方式是通過使用全局索引符號 為了進一步幫助理解,引入在邊、生成邊和生成平面之間定義的映射集合。在以下的內(nèi)容中,術語“對應的”用于指與相同的最后局部索引相關聯(lián)的同一級的不同圖的頂點。同一級的不同圖的兩個邊如果連接相應的端點則被稱為“對應的”。
廣義邊(即圖
的邊,0≤l≤L-1)或生成邊可通過映射函數(shù)fe→s映射到生成邊和生成平面的集合。函數(shù)fe→s接受邊(如果是生成邊、則不包括端點)作為輸入,并返回認為在通過函數(shù)fv→g映射到輸入邊的端點的圖的相應頂點和邊之間的所有可能的生成邊和生成平面的集合。
在正式描述fe→s映射之前,介紹一個示例。在圖9所示的示例中,廣義邊e(為了簡化省略了它的級和索引)連接映射到三角形0-1-2和3-4-5的兩個頂點。這種映射是通過函數(shù)fv→g完成的。邊e通過函數(shù)fe→s映射到三個生成邊和三個生成面。生成邊是分別連接帶有全局索引0和3、1和4以及2和5的頂點的邊。生成平面是分別通過邊0-1和3-4、0-2和3-5以及1-2和4-5之間的結合運算產(chǎn)生的平面。
使用局部索引序列位置,函數(shù)fe→s可被正式地定義為 (43) 在方程式(43)的定義中,索引位置q獲得來自集合
的所有可能值。
映射
僅被定義在邊和生成邊之間,而映射
僅被定義在邊和生成平面之間。
以及 (45) 在方程式(44)和方程式(45)的定義中,索引位置q獲得來自集合
的所有可能值。
在一個實施例中,定義了頂點的集合和乘積之間的映射。實施例的乘法進程的輸入是次數(shù)為N-1的多項式a(x)b(x) a(x)=aN-1·xN-1+aN-2·xN-2+...+a1·x+a0, (46) b(x)=bN-1·xN-1+bN-2·xN-2+...+b1·x+b0 在一個實施例中,多項式a(x)和b(x)的系數(shù)是實數(shù)或復數(shù)。在其它實施例中,多項式a(x)和b(x)的系數(shù)是有限域的元素。
將m個頂點的集合V定義為 V的元素利用全局索引符號描述,且為了簡化省略其級。在集合V和乘積之間定義三個映射P(V),P1(V)和P2(V)如下 P2(V)={(ai+aj)·(bi+bj)i,j∈{i0,i1,...,im-1},i≠j} (50) 乘積生成進程接受如方程式(46)所示的次數(shù)為N-1的兩個多項式作為輸入。多項式的次數(shù)N可如方程式(6)所示地因式分解。實施例的乘積生成進程是兩步進程的第一階段,其生成計算c(x)=a(x)b(x)的類似Karatsuba的乘法例程。因為多項式a(x)和b(x)的次數(shù)是N-1,所以多項式c(x)的次數(shù)是2N-2。將多項式c(x)表示為 c(x)=c2N-2·x2N-2+c2N-3·x2N-3+...+c1·x+c0 (51) 其中 方程式(52)中的表達式還可寫為 c0=a0·b0 c1=a0·b1+a1·b0 … cN-1=aN-1·b0+aN-2·b1+...+a0·bN-1 (53) cN=aN-1·b1+aN-2·b2+...+a1·bN-1 … c2N-2=aN-1·bN-1 我們的構架產(chǎn)生了計算所有系數(shù)c0,c1,...,c2N-2的乘法進程。在預處理階段,乘積生成進程生成每一級l,0≤l≤L-1的所有圖
乘積的生成通過執(zhí)行實施例的乘積形成進程來實現(xiàn),這以偽碼形式示為CREATE_PRODUCTS CREATE_PRODUCTS()
2.for i←0 to|G(L-1)|-1
5.GENERALIZED_EDGE_PROCESS() 6.return Pa 實施例的進程GENERALIZED_EDGE_PROCESS在下面以偽碼形式描述。
GENERALIZED_EDGE_PROCESS() 1.for l←0 to L-2 2.do for i←0 to|G(l)|-1 3.do for j←0 to nl-1 4. do for k←0 to nl-1 5. do if j=k 6.then 7. continue 8.else
11.if l+1=L-1 12.then 13. for every s∈S1∪S2 14. do Pa←Pa∪P(V(s)) 15. else 16. for every s∈S1 17.do SPANNING_EDGE_PROCESS(s) 18. for every s∈S2 19.do SPANNING_PLANE_PROCESS(s) 20. return 如上所示,進程GENERALIZED_EDGE_PROCESS()逐一處理來自集合G(l)的每一個廣義邊。如果廣義邊的級小于L-2,則過程GENERALIZED_EDGE_PROCESS()調用兩個其它進程用于處理與廣義邊相關聯(lián)的生成邊和生成平面。兩個進程的第一個SPANNING_EDGE_PROCESS()在下面以偽碼形式示出 SPANNING_EDGE_PROCESS(s) 1.l←l(s)
4.if l+1=L-1 5.then 6.for every s′∈S1∪S2 7. do Pa←Pa∪P(V(s′)) 8.else 9.for every s′∈S1 10.do SPANNING_EDGE_PROCESS(s′) 11. for every s′∈S2 12. do SPANNING_PLANE_PROCESS(s′) 13.return 第二進程SPANNING_PLANE_PROCESS()在下面以偽碼形式示出 SPANNING_PLANE_PROCESS(s) 1.l←l(s) 2. if l=L-1 3. then 4.Pa←Pa∪P(V(s)) 5. else 6. V←{V(s)} 7. while l<L-1 8. do V←EXPAND_VERTEX_SETS(V) 9. l←l+1 10.for every v′∈V 11. do Pa←Pa∪P(v′) 12. return 在一個實施例中,進程EXPAND_VERTEX_SETS()在下面以偽碼形式示出。符號g(v)用于指頂點v的全局索引。
EXPAND_VERTEX_SETS(V)
2.for every V′∈V 3. do Vr←Vr∪ EXPAND_SINGLE_VERTEX_SET(V′) 4. return Vr EXPAND_SINGLE_VERTEX_SET(V)
2.let v∈V 3. l←l(v) 4.for p←0 to nl+1-1 5. do for q←0 to nl+1-1 6. do if p=q 7.then 8. continue 9.else
11. for i←0 to |V|-1 12.do let vi←V的第i元素 13. gi←g(vi)
15. Vr←Vr∪Upq 16.for q←0 to nl+1-1
18. for i←0 to |V|-1 19. do let vi←V的第i元素 20.gi←g(vi)
22. Vr←Vr∪Uq 23. return Vr 在關于所有簡單圖的一個實施例中,與簡單頂點和簡單邊相關聯(lián)的乘積被確定,并將這些乘積添加到集合Pa。這發(fā)生在進程CREATE_PRODUCTS()的行3和4中。第二,對于每一個級的所有廣義邊,一個實施例完成以下首先,每個廣義邊分解成其相關聯(lián)的生成邊和生成平面。這發(fā)生在進程GENERALIZED_EDGE_PROCESS()的行9和10。
為了得到與每個生成邊相關聯(lián)的乘積,確定生成邊是否連接簡單頂點。如果是,則進程從邊的端點的全局索引計算與擴展邊相關聯(lián)的乘積。這發(fā)生在進程GENERALIZED_EDGE_PROCESS()的行14。如果生成邊不連接簡單頂點,則該生成邊被進一步分解成其相關聯(lián)的生成邊和生成平面。這發(fā)生在進程SPANNING_EDGE_PROCESS()的行2和3中。位于不在末級上的每一個所得的生成邊,遞歸地進行進程SPANNING_EDGE_PROCESS()。這發(fā)生在進程SPANNING_EDGE_PROCESS()的行10中。
為了得到與每一個生成平面相關聯(lián)的乘積,確定生成平面的頂點是否是簡單的。如果它們是簡單的,則形成與該平面的頂點的全局索引相關聯(lián)的乘積,并將其添加到集合Pa(進程GENERALIZED_EDGE_PROCESS()的行14)。如果平面的頂點不是簡單的,則進程將這些廣義頂點擴展成圖并形成相應的頂點和邊端點的集合。這發(fā)生在進程EXPAND_SINGLE_VERTEX_SET()的行14和21。對于每一個這樣的集合,向下執(zhí)行擴展直到末級。這發(fā)生在進程SPANNING_EDGE_PROCESS()的行7-9中。
這里生成四種類型的乘積。第一種類型包括由簡單頂點形成的所有乘積。這種乘積的集合
是 第二種類型的乘積包括由簡單邊的端點形成的乘積。這種乘積的集合
是
(55)
第三種類型的乘積包括由生成邊的端點形成的所有乘積。這些生成邊由向下至末級L-1的遞歸生成邊分解得到。這些乘積的集合
具有以下的形式 (56) 第四種類型的乘積包括在發(fā)生連續(xù)的頂點集合擴展之后由擴展平面形成的乘積。通過歸納可示出這種乘積的集合
具有以下形式 (57)
0≤q0≤q1≤...≤qm-1,m∈[2,L]} 集合
包括由除一些索引位置q0,q1,...,qm-1上的索引外的相同的局部索引表征的頂點的集合形成的所有乘積。對于這些索引位置,頂點獲得來自局部索引對中的所有可能的不同值。由此形成的所有可能的2m局部索引序列被包括在集合
的乘積的一覽表中。頂點不同的索引位置m的數(shù)目需要大于或等于2。集合
的結構十分類似于通過我們的進程生成的所有乘積的集合的結構。
通過執(zhí)行進程CREATE_PRODUCTS生成的所有乘積的集合Pa由以下的方程式(58)中的表達式給出。
方程式(58)中的表達式與方程式(57)等同,但有一個例外頂點不同的索引位置m的數(shù)目還可采用值0和1。集合Pa由
和
的并集得到。能夠看出通過將
的元素加到
覆蓋了m=0的情況。通過進一步將
和
的元素加到
覆蓋了m=1的情況。
(58)
0≤q0≤q1≤...≤qm-1,m∈
} 方程式(58)中的表達式處于閉合形式,可用于無需執(zhí)行生成平面和生成邊分解而生成乘積。在一個實施例中,方程式(58)中定義的所有的局部索引序列被生成,并形成與這些局部索引序列相關聯(lián)的乘積。生成邊和生成平面提供乘積生成過程的圖釋,且可幫助形象化小操作數(shù)大小(例如,N=9或N=18)的乘積生成。
通過執(zhí)行進程CREATE_PRODUCTS生成的集合Pa中的元素數(shù)與通過對于相同的操作數(shù)大小N和因子n0,n1,...,nL-1使得N=n0·n1·...·nL-1的一般化遞歸Karatsuba進行的標量乘法的數(shù)目相等。
這為真,因為如由Paar和Weimerskirch定義的通過一般化遞歸Karatsuba進行的標量乘法的數(shù)目是 在方程式(54)-(57)中,集合
和
不包含任何共有元素。因此,集合Pa的基數(shù)|Pa|由下式給出 集合
包含所有由僅包括單個頂點的集合形成的乘積。每一個單個頂點由某些任意的局部索引序列表征。因此,集合
的基數(shù)
由下式給出 集合
包含由包括兩個頂點的集合形成的乘積。這些頂點由對于除末級L-1外所有的索引位置相同的局部索引表征。因為從0到nL-1-1考慮的不同值的所有可能對的數(shù)目是nL-1·(nL-1-1)/2,所以集合
的基數(shù)等于 集合
包含由也包括兩個頂點的集合形成的乘積。然而集合
的乘積的形成與
不同。形成
的乘積的頂點由對于除0和L-2之間的一個位置外的所有索引位置相同的局部索引表征。因為對于位置j考慮的局部索引值的所有可能對的數(shù)目是nj·(nj-1)/2,所以集合
的基數(shù)等于 (63) 最后集合
由方程式(57)中的表達式表征。集合
的基數(shù)等于 (64) 將集合
和
的基數(shù)加起來 (65) 為了證明|Pr|=|Pa|,使用以下的恒等式 (a0+k)·(a1+k)·...·(am-1+k)=km+km-1·(a0+a1+...+am-1)+(66)km-2·(a0·a1+a0·a2+...+am-2·am-1)+...+a0·a1·...·am-1 通過在方程式(65)中用(ni-1)代替ai,用L代替m,用2代替k,并通過組合方程式(65)和方程式(66)得到方程式(67)(67) 因此,證明了由實施例進程生成的乘積數(shù)等于利用一般化遞歸Karatsuba進程進行的乘法的數(shù)目。還應注意到,由實施例進程生成的乘積數(shù)顯著小于Paar和Weimerskirch的一次迭代Karatsuba解決方案(A.Weimerskirch和C.Paar,“Generalizations of the Karatsuba Algorithm for Efficient Implementations”(高效率實現(xiàn)的Karatsuba算法的一般化),Technical Report(技術報告),UniversityofRuhr(魯爾大學),Bochum,德國,2003)所進行的標量乘法的數(shù)目,它是N·(N+1)/2。
來自集合Pa的典型乘積p是 (68)
0≤q0≤q1≤...≤qm-1,m∈
對于乘積p,在與“空閑”索引位置
相關聯(lián)的m-k維(0≤k≤m)中的“表面”“占據(jù)”索引位置
且通過在被占據(jù)的索引位置將p的所有頂點的局部索引設置成等于
并通過允許空閑位置的索引獲得
和
和
和
之間的任意值,將被占據(jù)的位置的索引
定義為由p導出的乘積。
空閑和占據(jù)的索引位置的集合滿足以下條件 (69)
此外,占據(jù)的位置的索引
滿足
將這種表面表示為
表面
的正式定義在以下的方程式(71)中給出。
從方程式(71),顯而易見的是與乘積p相關聯(lián)的表面
也是集合Pa的元素,且通過進程CREATE_PRODUCTS生成。根據(jù)方程式(71)中的定義,同樣顯然易見的是盡管p由2m個頂點的集合形成,表面
由2m-k個頂點的集合形成。最后,根據(jù)方程式(48)和方程式(71)的映射的定義,顯而易見的是
<p。
且條件(65)和(66)有效} 與乘積p、空閑索引位置
和占據(jù)的索引位置
相關聯(lián)的m-k維中的所有表面的集合被定義為并集
接下來,與乘積p相關聯(lián)的m-k維中的所有表面的集合被定義為并集 特定表面
的“父”表面
被定義為與乘積p、占據(jù)的索引位置
空閑索引位置
和占據(jù)的位置處的索引
相關聯(lián)的面
表面u∈Up;m-k的“子”表面的集合被定義為集合
在一個實施例中,生成減法公式的進程使用矩陣M,其大小等于Pa的基數(shù),即通過進程CREATE_PRODUCTS()生成的所有乘積的數(shù)目。Pa的基數(shù)還等于關于Pa的所有乘積的所有維度中定義的唯一表面的數(shù)目。這是因為乘積的每一個表面本身也是乘積。對于每一個可能的乘積p或表面u,矩陣M被初始化為M[p]←p,或等效地M[u]←u。初始化在每次關于Pa的乘積p生成減法的集合時進行。
減法是通過生成減法進程GENERATE_SUBTRACTIONS()生成的,其偽碼在下文中列出。通過生成減法進程GENERATE_SUBTRACTIONS()而生成的減法公式在集合Sa中返回。
1.GENERATE_SUBTRACTIONS()
3. for every p∈Pa 4.do INIT_M() 5.GENERATE_SUBTRACTIONS_FOR_PRODUCT(p) 6.return Sa 進程INIT_M()在以下列出 INIT_M() 1. for every p∈Pa 2.do M[p]←p 3.return 同樣被GENERATE_SUBTRACTIONS()調用的進程GENERATE_SUBTRACTIONS_FOR_PRODUCT()在以下以偽碼列出 GENERATE_SUBTRACTIONS_FOR_PRODUCT(p) 1.m←p中自由索引位置數(shù) 2.for l←0 to m-1 3. for every ui∈UP,l 4
7. then 8. Sa←Sa∪s 9. return 對于Pa的每一個乘積p,由進程GENERATE_SUBTRACTIONS()生成的減法約簡它的值。令μ(p)是在對于乘積p執(zhí)行進程GENERATE_SUBTRACTIONS_FOR_PRODUCT()之后表條目M[p]的最終值。能夠看出μ(p)事實上是乘積p減去m-1維中定義的p的所有表面,加上m-2維中定義的p的所有表面,...,減去(加上)0維中定義的p的所有表面(即單頂點的乘積)。對于m,它表示p的空閑索引位置的數(shù)目。
接下來,確定如何圖解由進程GENERATE_SUBTRACTIONS()生成的減法??紤]18乘18乘法的示例。通過進程CREATE_PRODUCTS()生成的乘積之一由帶有全局索引0、1、6、7、9、10、15、16的頂點的集合形成。這是乘積(a0+a1+a6+a7+a9+a10+a15+a16)·(b0+b1+b6+b7+b9+b10+b15+b16)。
考慮由這些乘積的頂點形成的完全圖。該圖具有立方體形狀,但也包含連接所有其它頂點的對角線,如圖10所示。乘積具有2維定義的6個相關聯(lián)的表面,1維定義的12個表面和0維定義的8個表面。2維定義的表面是乘積(a0+a1+a6+a7)·(b0+b1+b6+b7)、(a0+a1+a9+a10)·(b0+b1+b9+b10)、(a6+a7+a15+a16)·(b6+b7+b15+b16)、(a9+a10+a15+a16)·(b9+b10+b15+b16)、(a1+a7+a10+a16)·(b1+b7+b10+b16)和(a0+a6+a9+a15)·(b0+b6+b9+b15)。這些乘積由4個頂點的集合形成。這些集合的完全圖形成正方形,它們與其對角線一起覆蓋與乘積(a0+a1+a6+a7+a9+a10+a15+a16)·(b0+b1+b6+b7+b9+b10+b15+b16)相關聯(lián)的立方體。這是術語“表面”用于指代這些乘積的原因。
一維定義的表面是乘積(a0+a1)·(b0+b1)、(a0+a6)·(b0+b6)、(a1+a7)·(b1+b7)、(a6+a7)·(b6+b7)、(a9+a10)·(b9+b10)、(a9+a15)·(b9+b15)、(a10+a16)·(b10+b16)、(a15+a16)·(b15+b16)、(a1+a10)·(b1+b10)、(a0+a9)·(b0+b9)、(a7+a16)·(b7+b16)和(a6+a15)·(b6+b15)。這些乘積由2個頂點的集合形成。這些集合的完全圖形成與乘積(a0+a1+a6+a7+a9+a10+a15+a16)·(b0+b1+b6+b7+b9+b10+b15+b16)相關聯(lián)的立方體的邊緣。最后,0維定義的表面是由單個頂點形成的乘積。它們是乘積a0·b0、a1·b1、a6·b6、a7·b7、a9·b9、a10·b10、a15·b15和a16·b16。
接下來,確定在從乘積(a0+a1+a6+a7+a9+a10+a15+a16)·(b0+b1+b6+b7+b9+b10+b15+b16)減去2維定義的所有表面加上1維定義的所有表面減去0維定義的所有表面時剩余什么。能夠看出,剩余的是項a0·b16+a16·b0+a1·b15+a15·b1+a6·b10+a10·b6+a9·b7+a7·b9。該項是輸出的系數(shù)c16的一部分。該項的推導可圖解為從立方體減去所有覆蓋的正方形、加上其邊緣并減去其頂點。從這些減法剩余的是立方體的對角線,不包括其端點。
為了證明實施例的正確性,示出由進程GENERATE_SUBTRACTIONS()的減法生成的每一個項是Karatsuba輸出c(x)的一個系數(shù)的一部分,還示出對于兩個不同的乘積
項μ(p)和
不包括形式
的共有項。還示出Karatsuba輸出c(x)的每一個系數(shù)的形式
的每一個項是從乘積p∈Pa得到的某些項μ(p)的一部分。
考慮由方程式(68)定義的乘積p∈Pa。如果m>0,則μ(p)是滿足以下條件的形式
的所有可能的項
這表示μ(p)是形式
的所有項的和,使得每一個項
中的全局索引I1是通過從
中選擇
某些局部索引值來形成的,而同一項中的全局索引I2是通過選擇未被I1使用的那些局部索引值來形成。
從方程式(68),顯然易見的是乘積p是形式
或
任一個的項的和。項μ(p)是從p順序地減去和加上m-1、m-2、...、0維表面導出的。這些表面也是形式
或
的項的和(從方程式(71))。此外,p的每一個面的形式
或
的每一個項包括在p中。
接下來,示出μ(p)不包含形式
的項,以及形式
的項滿足方程式(76)。暫且假設μ(p)中存在不滿足方程式(76)的項
對于這個項,存在局部索引位置的子集,對于它們?nèi)炙饕齀1和I2與相同的局部索引值相關聯(lián)。由于這個原因,該項是m維表面、m-1維表面、m-2維表面、...、以及m-l維表面的一部分。定義映射P(V)的方式,顯而易見的是,在這些表面的每一個中項
僅出現(xiàn)一次。因此μ(p)中出現(xiàn)的項的次數(shù)NL的總數(shù)由下式給出 利用牛頓二項式展開式 用1取代x、-1取代a、l取代n,我們得到NL=0。因此,μ(p)不包含任何不滿足方程式(77)的形式的項
其余的將示出μ(p)不包含形式
的項。形式
的每一個項是m維表面、m-1維表面、m-2維表面、...、0維表面的一部分。因此,μ(p)中出現(xiàn)項
的次數(shù)的總數(shù)是0(從牛頓二項式展開式)。
項μ(p)包含滿足方程式(76)的形式
的所有可能項。這是因為這些項是p的一部分且它們未被包括在p的任何面中。因此,當導出μ(p)時不減去這些項。
考慮由方程式(68)定義的乘積p∈Pa。項μ(p)的和是Karatsuba輸出的系數(shù)
的一部分,其中ic由方程式(79)給出。
首先考慮m>0的情況。在這種情況下,μ(p)是滿足方程式(76)的形式
的項的和。在這種情況下,對于每一個項
I1+I2=ic。在m=0的第二情況下,乘積p由單個頂點形成。因此,對于某些全局索引I1,在這種情況下,2·I1=ic。
接下來,我們示出從兩個不同的乘積導出的項μ(p)和
不包括任何共有項。
考慮乘積從這些乘積導出的項μ(p)和
不具有共有的形式為或
的項。
在其中p和
兩者的索引位置數(shù)是0普通情況下,p=μ(p)、且在兩個乘積之一由0空閑索引位置表征而另一個不是的情況下,μ(p)、
包含共有項是不可能的,因為對于某些全局索引I1,兩者之一等于
而另一個是滿足方程式(77)的項
的和。
現(xiàn)在,假設p和
兩者都由至少一個空閑索引位置表征且存在分別來自μ(p)和
的相等的兩個項
和
全局索引相等表示其相關聯(lián)的局部索引序列相等。I1和I2(或
和
))不同的局部索引位置對于p和
兩者都是空閑索引位置。另一方面,必需占據(jù)所有其它的局部索引位置。事實上,如果這些索引位置中的任一個是空閑的,則與I1和I2相關聯(lián)的局部索引序列在該位置將不同,但它們不是。因此,乘積p和
是利用同一樹定義的且占據(jù)局部索引位置?,F(xiàn)在,從局部索引序列I1和I2相等,顯而易見的是,p和
指定在其空閑索引位置的相同的局部索引值對以及在其占據(jù)的位置的相同單個值。因此,p和是相等的,這與假設矛盾。
Karatsuba輸出的系數(shù)的形式
的每一個項對于某些乘積p∈Pa是項μ(p)的一部分??蓪⑷炙饕齀1和I2轉換成2個局部索引序列。對于某些局部索引位置這些序列是相等的,而對于其它的則是不同的。在這種情況下,通過將I1和I2不同的局部索引位置指定為空閑且所有其它的為占據(jù),可從I1和I2完全定義乘積p。I1和I2不同的局部索引值對在乘積p的所有頂點的空閑索引位置處指定,而在I1和I2之間共有的局部索引值在占據(jù)的位置處指定。從指定乘積p的方式,顯而易見的是μ(p)包含項
在以下的內(nèi)容中,我們參照圖11B。我們描述在次數(shù)為8的兩個多項式之間進行單次迭代乘法的步驟。加法連接“a”項和“b”項6、7和8,以便形成三角形6-7-8的節(jié)點。加法連接“a”項和“b”項3、4和5,以便形成三角形3-4-5。加法連接“a”項和“b”項0、1和2,以便形成三角形0-1-2。加法逐一連接“a”和“b”項6-7-8和3-4-5。加法逐一連接“a”和“b”項6-7-8和0-1-2。加法逐一連接“a”和“b”項3-4-5和0-1-2。加法形成與三角形6-7-8和3-4-5的邊相關聯(lián)的生成平面。加法形成與三角形6-7-8和0-1-2的邊相關聯(lián)的生成平面。加法形成與三角形3-4-5和0-1-2的邊相關聯(lián)的生成平面。
乘法形成三角形0-1-2、3-4-5和6-7-8的節(jié)點。乘法形成三角形6-7-8的邊。乘法形成三角形3-4-5的邊。乘法形成三角形0-1-2的邊。乘法形成連接三角形6-7-8和3-4-5的節(jié)點的邊。乘法形成連接三角形6-7-8和0-1-2的節(jié)點的邊。乘法形成連接三角形3-4-5和0-1-2的節(jié)點的邊。乘法形成連接三角形6-7-8和3-4-5的邊的生成平面。乘法形成連接三角形6-7-8和0-1-2的邊的生成平面。乘法形成連接三角形3-4-5和0-1-2的邊的生成平面。
執(zhí)行與三角形6-7-8的邊相關聯(lián)的減法。執(zhí)行與三角形3-4-5的邊相關聯(lián)的減法。執(zhí)行與三角形0-1-2的邊相關聯(lián)的減法。執(zhí)行與連接三角形6-7-8和3-4-5的節(jié)點的邊相關聯(lián)的減法。執(zhí)行與連接三角形6-7-8和0-1-2的節(jié)點的邊相關聯(lián)的減法。執(zhí)行與連接三角形3-4-5和0-1-2的節(jié)點的邊相關聯(lián)的減法。執(zhí)行與連接三角形6-7-8和3-4-5的邊的生成平面相關聯(lián)的減法。執(zhí)行與連接三角形6-7-8和0-1-2的邊的生成平面相關聯(lián)的減法。最后,執(zhí)行與連接三角形3-4-5和0-1-2的邊的生成平面相關聯(lián)的減法。
加法形成所得到的多項式的系數(shù)。接下來,將多項式轉換成大數(shù)。
圖11A-B示出實施例的進程的框圖和圖解。進程1100從框1105開始,其中操作數(shù)的系數(shù)的數(shù)目被表達為因子的乘積。應注意到圖解針對的是9x9運算的例子。在框1110中,因子的每一個與互連的圖的層級中的一個級相關聯(lián)。在層級的每一個級中,完全連接的圖(即具有廣義頂點和廣義邊的廣義圖)的頂點數(shù)和與級相關聯(lián)的因子相等。在層級的末級,存在具有簡單互連的頂點和簡單邊緣的簡單圖。
在框1115,每一個簡單頂點與全局索引和末級局部索引相關聯(lián)。在框1120,定義廣義邊包括若干生成邊和生成平面。在框1125,生成邊是兩個相應的廣義(或簡單)頂點之間的邊。相應的頂點與相同的末級局部索引但不同的全局索引相關聯(lián)。生成平面是互連四個廣義(或簡單)頂點的完全連接圖。
在框1130,對于互連簡單頂點的所有的圖,確定與簡單頂點和簡單邊相關聯(lián)的乘積???135在框1140、1145、1150和1160之間開始一個環(huán)路,其中對于每一級處的所有廣義邊,執(zhí)行每一個框。
在框1140,廣義邊被分解成其組成的生成邊和生成平面。在框1145,確定與生成邊相關聯(lián)的乘積。如果生成邊連接簡單頂點,則由邊的相鄰頂點的全局索引,形成與邊相關聯(lián)的乘積。否則,通過將每一個生成邊視為廣義邊并遞歸地應用廣義邊進程(框1140和1145)來確定與生成邊相關聯(lián)的乘積。
在框1150,為了確定與生成平面相關聯(lián)的乘積,進程1110檢查平面的頂點是否是簡單的。如果它們是簡單的,則形成并返回與平面頂點的全局索引相關聯(lián)的乘積。如果頂點不是簡單的,則將廣義頂點擴展為圖,并形成相應的頂點和邊的集合。相應的邊是互連具有相同的末級局部索引但不同的全局索引的頂點的邊。對于每一個集合,頂點作為集合的元素,被用于遞歸地運行生成平面進程(框1150)。
在框1160,確定最后的廣義邊是否被框1140、1145和1150處理。如果最后的邊未被處理,則進程110返回到框1140。如果最后的邊已經(jīng)被處理,則進程110繼續(xù)框1165。在框1165,對于與形成的乘積相關聯(lián)的所有圖(即,邊、正方形、立方體、超級立方體等)周邊被減去,且對角線用于形成最終乘積的系數(shù)。進程1100然后繼續(xù)進行到在1170返回最終乘積。
接下來,四個一次迭代乘法基數(shù)的比較對Karatsuba的Montgomery(P.Montgomery?!癋ive,Six and Seven-Term Karatsuba-like Formulae”(五、六和七項類似Karatsuba的公式),IEEE Transactions on Computers,2005年5月)、Paar和Weimerskirch方法、實施例和教科書方法。在對于代表性的操作數(shù)大小每一種技術所需要的標量乘法的數(shù)目方面,對這些技術進行比較。根據(jù)圖12所示的數(shù)目,顯而易見的是,實施例進程優(yōu)于所有的選擇,它們適用于很多不同的操作數(shù)大小。對于某些技術輸入大小,實施例生成關于輸入大小減1(是偶數(shù))的公式,然后使用Paar和Weimerskirch技術來生成乘積和附加輸入項的減法。
進位少的大數(shù)乘法由類似Rivest、Shamir和Adleman(RSA)的流行密碼算法所使用。該實施例進程避免了遞歸的花費。實施例使圖特性(例如,頂點、邊和子圖)與大數(shù)乘法例程的類似Karatsuba的項之間相關,這些實施例對于任何給定操作數(shù)大小,生成并使用一次迭代類似Karatsuba乘法進程,它需要與遞歸Karatsuba相同的標量運算,但無需遞歸。實施例與“標量”乘法的最不可能數(shù)相關聯(lián)。對于標量乘法,它表示大數(shù)的“片”或多項式的系數(shù)之間的乘法。實施例可利用圖生成最優(yōu)的“一次迭代”類似Karatsuba公式。現(xiàn)在描述定義EC密碼系統(tǒng)的大數(shù)進位乘法模不可約多項式的約簡。
圖13是根據(jù)一個實施例示出定義密碼系統(tǒng)的兩個高次數(shù)多項式的進位少的乘積模不可約多項式的余數(shù)的計算方法的流程圖。代表性地,在進程框1210,根據(jù)輸入操作數(shù)長度,利用基于一次迭代的乘法預先計算乘法例程。在一個實施例中,可根據(jù)參照圖1-11示出的實施例中的任一個執(zhí)行基于圖的乘法例程。在進程框1220,根據(jù)預先計算的乘法例程利用從層級獲得的進位少的乘法指令計算表示兩個輸入操作數(shù)的乘積多項式的系數(shù)的乘積。在一個實施例中,例如,如表1所示,進位少的乘法是無方向的,例如,64比特/32比特進位少的乘法指令。在進程框1230,計算進位少的乘積多項式??删幊潭囗検降挠鄶?shù),其中可編程多項式定義橢圓曲線密碼系統(tǒng)且余數(shù)形成密碼密鑰。參照圖14的流程圖示出進位少的乘積的余數(shù)的計算方法。
在一個實施例中,為了約簡高次數(shù)(例如,233)的兩個多項式的進位少的乘積,我們將其分成相同長度的兩個部分。在一個實施例中,最低有效一半剛好與最后的余數(shù)進行XOR。對于最高有效部分,一個實施例經(jīng)由兩個乘法實現(xiàn)除法。該算法可被看作Barrett(P.Barrett,“Implementing the Revest,Shamirand Adleman Public Key Encryption Algorithm on a Standard Digital SignalProcessor”(在標準數(shù)字信號處理器上實現(xiàn)Revest,Shamir和Adleman公鑰密碼算法),碩士論文,牛津大學,英國,1986)約簡算法對針對任意大小的被除數(shù)和除數(shù)的模2算術或Feldmeier CRC生成算法(D.Feldmeier,“Fast SoftwareImplementation of Error Correcting Codes”(糾錯碼的快速軟件實現(xiàn))IEEETransactions on Networking,1995年12月)的擴展。在一個實施例中,我們需要考慮輸入的最低有效部分,我們研究定義如下的余數(shù)p(x)的高效率生成 p(x)=c(x)·xtmod g(x) (80) 這里, ·c(x)是GF(2)中帶有系數(shù)的次數(shù)為s-1的多項式,表示進位少的乘積的最高有效位。
·t是多項式g的次數(shù)。
·g(x)是所使用的有限域的不可約多項式。
對于多項式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,以及(81) g(x)=gtxt+gt-1xt-1+...+g1x+g0 在下文中,我們使用符號Lu(v)表示多項式v的u個最低有效項的系數(shù),且Mu(v)表示u個最高有效項的系數(shù)??蓪⒍囗検絧(x)表達為 p(x)=c(x)·xt mod g(x)=g(x)·q(x)mod xt (82) 其中q(x)是次數(shù)s-1的多項式,次數(shù)s-1等于從c(x)·xt與g的除法得出的商。方程式(82)直觀的是被除數(shù)c(x)·xt的t個最低有效項等于0。
此外,可將被除數(shù)c(x)·xt表達為多項式g·q和p的和 c(x)·xt=g(x)·q(x)+p(x) (83) 其中算子“+”表示XOR
。從方程式(83)可預期多項式g·q的t個最低有效項等于多項式p的項。只有這些項彼此相等,對于其t個最低有效項,XOR運算的結果才是0。因此 p(x)=g(x)·q(x)mod xt=Lt(g(x)·q(x)) (84) 現(xiàn)在我們定義 多項式g*表示多項式g的t個最低有效項。顯然, p(x)=Lt(g(x)·q(x))=Lt(q(x)·g*(x)+q(x)·gtxt)(86) 然而,多項式q·gt·xt的t個最低有效項是0。因此, p(x)=Lt(q(x)·g*(x)) (87) 從方程式(87),其后是計算余數(shù)p,我們需要知道商q的值。能夠以與Barrett約簡算法類似的方式計算商 令 xt+s=g(x)·q+(x)+p+(x) (89) 其中q+是等于由xt+s與g的除法得到的商的s次多項式,且p+是從該除法得到的余數(shù)。多項式p+的次數(shù)是t-1。
從方程式(88)和(89),我們得到 以及 (91) 能夠看出多項式c·g·q+和g·q·xs的次數(shù)是t+2·s-1,多項式c·p+的次數(shù)是t+s-2,而多項式p·xs的次數(shù)是t+s-1。結果方程式(91)的左側和右側中多項式的s個最高有效項不受多項式c·p+和p·xs的影響。因此, (92) 接下來,我們認可多項式c·g·q+的s個最高有效項等于多項式g·Ms(c·q+)·xs的s個最高有效項。多項式g·Ms(c·q+)·xs是通過用0替換多項式c·p+的s個最低有效項而由c·p+生成。該觀察背后直觀的是如下多項式c·g·q+的s個最高有效項是通過使多項式c·p+的s個最高有效項按照與由多項式g的項定義的一樣多的偏移位置彼此相加計算的。因此多項式c·g·q+的s個最高有效項不依賴于c·p+的s個最低有效項,因此, (93) 方程式(93)滿足下式給出的q q=Ms(c(x)·q+(x)) (94) 因為有滿足方程式(83)的唯一商q,能夠示出有滿足方程式(93)的唯一商q。結果該商q必須等于Ms(c(x)·q+(x))。
因此得出多項式p由下式建立 p(x)=Lt(g*(x)·Ms(c(x)·q+(x))) (95) 方程式(95)指示用于計算多項式p的算法可如參照圖14所述地執(zhí)行。圖14是根據(jù)一個實施例示出圖13的進程框1230的進位少的乘積多項式??删幊潭囗検降挠鄶?shù)的計算和約簡方法。代表性地,進程框1240和1260可在進位少的乘積模和密碼系統(tǒng)的可約多項式的余數(shù)的計算和約簡期間預先計算并使用。
對于給定的可約多項式g,首先計算多項式g*和q+。代表性地,在進程框1240,多項式g*的次數(shù)是t-1并被計算為g的t個最低有效項。在進程框1250,多項式q+的次數(shù)是s,且等于xt+s和g的除法的商。
在進程框1260,輸入c與q+相乘。結果是次數(shù)為2s-1的多項式。在進程框1270,從步驟1得到的多項式的s個最高有效項與g*相乘。結果是次數(shù)為t+s-2的多項式。在進程框1280,算法返回從步驟2得到的多項式的t個最低有效項。這是所需的余數(shù)。
i nt mod_multiplication(WORD_T YPE*a, WORD_TYPE*b, WORD_TYPE*result) WORD_TYPES_0,S_1,S_2,S_3,S_4,S_5,S_6,S_7,S_8,S_9; WORD_TYPE P_0_0,P_0_1,P_1_0,P_1_1; WORD_TYPE P_2_0P_2_1,P_3_0,P_3_1,P_4_0,P_4_1; WORD_TYPE P_5_0,P_5_1,P_6_0,P_6_1,P_7_0,P_7_1,P_8_0,P_8_1; WORD_TYPE D_0_0,D_0_1,D_1_0,D_1_1; WORD_TYPE L_0,L_1,L_2,L_3; WORD_TYPE U_0,U_1,U_2,U_3; WORD_TYPEV_0,V_1,V_2,V_3; cmu164_instr_3_clocks(P_0_0,P_0_1,a
,b
); cmu164_instr_3_clocks(P_1_0,P_1_1,a[1],b[1]); cmu164_instr_3_clocks(P_2_0,P_2_1,a[2],b[2]); cmu164_instr_3_clocks(P_3_0,P_3_1,a[3],b[3]); S_0=a
^a[1]; S_1=a[2]^a[3]; S_2=a
^a[2]; S_3=a[1]^a[3]; S_4=b
^b[1]; S_5=b[2]^b[3]; S_6=b
^b[2]; S_7=b[1]^b[3]; cmu164_instr_3_clocks(P_4_0,P_4_1,S_0,S_4); cmu164_instr_3_clocks(P_5_0,P_5_1,S_1,S_5); cmu164_instr_3_clocks(P_6_0,P_6_1,S_2,S_6); cmu164_instr_3_clocks(P_7_0,P_7_1,S_3,S_7); S_8=S_0^S_1; S_9=S_4^S_5; cmu164_instr_3_clocks(P_8_0,P_8_1,S_8,S_9); D_0_0=P_6_0^P_0_0^P_2_0; D_0_1=P_6_1^P_0_1^P_2_1; D_1_0=P_7_0^P_1_0^P_3_0; D_1_1=P_7_1^P_1_1^P_3_1; L_0=P_0_0; L_1=P_0_1^P_4_0^P_0_0^P_1_0; L_2=P_4_1^P_0_1^P_1_1^D_0_0^P_1_0; L_3=D_0_1^P_1_1^P_8_0^P_4_0^P_5_0^D_0_0^D_1_0; U_0=P_8_1^P_4_1^P_5_1^D_0_1^D_1_1^D_1_0^P_2_0; U_1=D_1_1^P_2_1^P_5_0^P_2_0^P_3_0; U_2=P_5_1^P_2_1^P_3_1^P_3_0; U_3=P_3_1; //現(xiàn)在我們更新U;本質上我們執(zhí)行第一階段 //barrett的進位少的擴展 V_0=(L_3>>41)|(U_0<<23); V_1=(U_0>>41)|(U_1<<23); V_2=(U_1>>41)|(U_2<<23); V_3=(U_2>>41)|(U_3<<23); U_0=V_0^((V_2>>31)|(V_3<<33)); U_1=V_1^(V_3>>31); U_2=V_2; U_3=V_3; //接下來我們更新V;進位少的Barrett的第二階段 V_0=U_0; V_1=U_1^(U_0<<10); V_2=U_2^((U_1<<10)|(U_0>>54)); V_3=U_3^((U_2<<10)|(U_1>>54)); //最后我們將結果放在一起 result
=V_0^L_0; result[1]=V_1^L_1; result[2]=V_2^L_2; result[3]=V_3^L_3; result[3]&=MASK_L41; return1; } 表2NIST B-233曲線的Galois域乘法 對于NIST推薦的很多橢圓曲線密碼系統(tǒng),多項式g是三項式。因此,多項式g*和q+僅包含兩個等于“1”的數(shù)字。因此整個約簡算法能夠以三個233比特寬移位和XOR運算為代價而實現(xiàn)。在表2中列出了用于實現(xiàn)NIST B-233曲線的Galois域乘法的代碼。
表1我們的技術和OpenSSL實現(xiàn)之間的比較 在表2中我們介紹了構成利用OpenSSL的Sun實現(xiàn)的基于橢圓曲線的Diffie Hellman密鑰交換的主要部分點乘標量乘法運算的性能、我們的軟件改進和我們建議的硬件輔助。所使用的處理器是3.6GHz的奔騰4處理器。如能夠看到的,我們的方法提供了從55%到5.2X范圍的顯著加速,這取決于是否將GFMUL指令引入CPU。進一步的優(yōu)化可去除很多應用級額外開銷(例如,OpenSSL BN結構管理和函數(shù)調用額外開銷),理想地使原型加速66X。實際上,我們相信利用進一步精致的代碼10X的加速是可能的。然而,這種實施留給未來的工作。
所述的實施例具有優(yōu)于現(xiàn)有方法的某些優(yōu)點,因為它高度靈活且實現(xiàn)高性能橢圓曲線處理。這可幫助為公司打開新的市場(例如,按照分組的公鑰密碼學)。此外,改進的方法甚至可影響公司在密碼學和聯(lián)網(wǎng)中獲得領導性進階。例如,建議的指令加速橢圓曲線和AES的GCM模式。由此,利用相同的硬件輔助可加速高性能公鑰運算和消息真實性。當前使用的散列家庭SHA*縮放很差,因為其態(tài)隨摘要長度(digest length)增加。這為公司以轉移到基于AES的真實性方案以及基于AES的方案滲透到安全產(chǎn)品市場提供很強的推動。
所述實施例介紹了一種用于實現(xiàn)特性2橢圓曲線的Galois域乘法的新方法。新的組成部分是與利用目前不是處理器的指令集的一部分的GFMUL指令和對Karatsuba乘法算法的單次迭代擴展組合的有效的約簡方法。目前,在實現(xiàn)直接方式時,由于這種算法的成本軟件實現(xiàn)不使用Karatsuba和Barrett。在密碼處理器中建立的硬件方法使用專用于有限域的多項式的XOR門的樹來執(zhí)行約簡步驟。這種方法是特殊領域,且不適于通用處理器實現(xiàn)。另一方面,我們的方法是新穎的且加速了特性2橢圓曲線密碼,而不將特殊領域的功能引入CPU。我們相信我們的工作很重要,由于其相關聯(lián)的測量到的加速增益且可為未來因特網(wǎng)中高速安全性的進一步革新做好準備。
本發(fā)明的實施例可利用硬件、軟件或其組合來實現(xiàn),并可實現(xiàn)在一個或多個計算機系統(tǒng)或其它處理系統(tǒng)中。在一個實施例中,本發(fā)明涉及能夠實現(xiàn)本文所述功能性的一個或多個計算機系統(tǒng)。在另一個實施例中,本發(fā)明涉及計算設備。在圖13中示出生成平面的例子。按照設備1300的這個例子描述各個實施例,然而還可使用其它的計算機系統(tǒng)或計算機架構。一個實施例結合了密碼程序中的進程1100。在另一個實施例中,進程110結合在硬件密碼設備中。
圖13是利用優(yōu)化密碼系統(tǒng)的設備的一個實施例的圖示。該系統(tǒng)可包括嘗試相互安全地通信的兩個設備。能夠通信的任何類型的設備可使用該系統(tǒng)。例如,系統(tǒng)可包括嘗試與設備安全通信的第一計算機1301。在一個實施例中,設備是智能卡1303。在其它實施例中,使用優(yōu)化密碼系統(tǒng)的設備可包括計算機、手持設備、蜂窩電話、游戲控制臺、無線設備、智能卡和其它類似的設備。這些設備的任意組合可利用該系統(tǒng)通信。
每個設備可包括或不包括密碼程序1305。密碼程序1305可以是軟件應用程序、固件、嵌入式程序、硬件或類似實現(xiàn)的程序。該程序可存儲在非易失性存儲器或存儲設備,或可以是硬連線的。例如,軟件密碼程序1305可在使用期間存儲在系統(tǒng)存儲器1319中,并存儲在硬驅動器或類似的非易失性存儲器中。
系統(tǒng)存儲器可以是本地隨機存取存儲器(RAM)、靜態(tài)RAM(SRAM)、動態(tài)RAM(DRAM)、快速頁模式DRAM(FPM DRAM)、擴展數(shù)據(jù)輸出FRAM(EDO DRAM)、猝發(fā)EDO DRAM(BEDO DRAM)、也被稱為閃存的可擦除可編程ROM(EPROM)、
(
動態(tài)隨機存取存儲器)、SDRAM(同步動態(tài)隨機存取存儲器)、DDR(雙數(shù)據(jù)率)SDRAM、DDRn(即n=2、3、4等)等,且還可包括輔助存儲器(未示出)。
輔助存儲器可包括例如硬盤驅動器和/或可移動存儲設備,表示軟盤驅動器、磁帶驅動器、光盤驅動器等??梢苿域寗悠鲝目梢苿哟鎯卧x取和/或向其寫入??梢苿哟鎯卧硎究杀豢梢苿哟鎯︱寗悠髯x取和寫入的軟盤、磁帶、光盤等。正如將意識到的,可移動存儲單元可包括具有計算機軟件和/或數(shù)據(jù)存儲于其中的機器可讀存儲介質。
密碼程序1305可使用任何加密協(xié)議,包括SSL(加密套接字協(xié)議層)、IPsec、站對站和類似的協(xié)議。在一個示例實施例中,加密程序可包括Diffie-Hellman密鑰交換協(xié)議或RSA加密/解密算法。
加密程序1305可包括針對密鑰交換協(xié)議生成密鑰的密鑰生成器1309組件。密碼程序1309還可包括認可密鑰生成器1307組件。認可密鑰生成器1307可使用來自與運行密碼程序1305的計算機1301通信的設備1303的加密組件1313的密鑰。密鑰生成器1309和認可密鑰生成器1307還可使用公共的質數(shù)和公共的基數(shù)或生成器。公共的質數(shù)和基數(shù)或生成器在兩個通信設備(即計算機1301和智能卡1303)之間共享。
加密程序可用于在網(wǎng)絡1311上與設備進行通信。網(wǎng)絡1311可以是局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)或類似的網(wǎng)絡。網(wǎng)絡1311可使用任何通信介質或協(xié)議。在一個示例實施例中,網(wǎng)絡1311可以是因特網(wǎng)。在另一個實施例中,設備可在包括無線直接通信的直接鏈路上通信。
設備1301還可包括通信接口(未示出)。通信接口允許軟件和數(shù)據(jù)在計算機1301和外部設備(諸如智能卡1303)之間傳輸。通信接口的例子可包括調制解調器、網(wǎng)絡接口(諸如以太網(wǎng)卡)、通信端口、PCMCIA(個人計算機存儲卡國際組織)槽和卡、無線LAN接口等。經(jīng)由通信接口傳輸?shù)能浖蛿?shù)據(jù)以信號的形式,該信號可以是電子、電磁、光或其它能夠由通信接口接收的信號。這些信號經(jīng)由通信路徑(即信道)提供給通信接口。信道承載信號,且可利用導線或電纜、光纖、電話線、蜂窩電話鏈路、無線鏈路和其它通信信道來實現(xiàn)。
在一個示例實施例中,加密組件1313可以是智能卡1303或類似的設備的一部分。加密組件1313可以是存儲或嵌入在SRAM 1315、在硬件中實現(xiàn)或類似實現(xiàn)的軟件。加密組件可包括密鑰生成器1309和認可密鑰生成器1307。
在可選實施例中,輔助存儲器可包括允許計算機程序或其它指令加載到設備1301的其它方式,例如可移動存儲單元和接口。例子可包括程序盒和盒式接口(諸如在視頻游戲機中建立的)、可移動存儲芯片或卡(諸如EPROM(可擦除可編程只讀存儲器)、PROM(可編程只讀存儲器)或閃存)以及相關聯(lián)的插槽、以及允許軟件和數(shù)據(jù)從可移動存儲單元傳遞到設備1301的其它可移動的存儲單元和接口。
在本文獻中,術語“計算機程序產(chǎn)品”可指代可移動存儲單元和信號。這些計算機程序產(chǎn)品允許將軟件提供給設備1301。本發(fā)明的實施例可涉及這種計算機成品產(chǎn)品。計算機程序(也稱為計算機控制邏輯)存儲在存儲器1319和/或輔助存儲器和/或計算機程序產(chǎn)品中。計算機程序還可經(jīng)由通信接口來接收。這種計算機程序在被執(zhí)行時使設備1301能夠執(zhí)行本文所述的本發(fā)明的實施例的特征。具體地,計算機程序在被執(zhí)行時使計算機1301能夠執(zhí)行本發(fā)明的實施例的特征。這種特征可表示圖11A和11B的部分或整個框1105、1110、1115、1120、1125、1130、1135、1140、1145、1150、1160、1165和1170?;蛘哌@種計算機程序可表示計算機1301的控制器。
在利用軟件實現(xiàn)本發(fā)明的實施例中,軟件可存儲在計算機程序產(chǎn)品中并利用可移動存儲驅動器、硬驅動器或通信接口加載到設備1301。控制邏輯(軟件)在由計算機1301執(zhí)行時導致計算機1301執(zhí)行本文描述的功能。
計算機1301和智能卡1301可包括用于顯示各種圖形用戶界面(GUI)和的顯示器(未示出)和用戶顯示器。顯示器可以是模擬電子顯示器、數(shù)字電子顯示器、真空熒光(VF)顯示器、發(fā)光二極管(LED)顯示器、等離子體顯示器(PDP)、液晶顯示器(LCD)、高性能尋址(HPA)顯示器、薄膜晶體管(FTF)顯示器、有機LED(OLED)顯示器、頭戴式顯示器(HUD)等。
在另一個實施例中,本發(fā)明主要實現(xiàn)在硬件中,利用諸如專用集成電路(ASIC)的硬件組件,利用硬件狀態(tài)機來執(zhí)行本文所述功能。在又一個實施例中,本發(fā)明利用硬件和軟件兩者的組合來實現(xiàn)。
在以上描述中,陳述了眾多特定細節(jié)。然而,應該理解本發(fā)明的實施例可在沒有這些特定細節(jié)的情況下事實。例如,公知的等效組件和元件可被本文所述的所取代,且類似地,公知的等效技術可被所公開的特定技術所取代。在其它情況下,公知的電路、結構和技術沒有詳細示出以免使本說明書的理解困難。
本文描述的本公開的實施例可實現(xiàn)在電路中,其包括硬連線電路、數(shù)字電路、模擬電路、可編程電路等。這些實施例還可實現(xiàn)在計算機程序中。這種計算機程序可按高級程序或面向對象的編程語言來編碼。然而,程序可根據(jù)需要實現(xiàn)為匯編或機器語言。語言可以是編譯的或解釋的。另外,這些技術可在各種連網(wǎng)環(huán)境中使用。這種計算機程序可存儲在可由通用或專用可編程處理系統(tǒng)讀取的存儲介質或設備(例如硬盤驅動器、軟盤驅動器、只讀存儲器(ROM)、CD-ROM設備、閃存設備、數(shù)字通用盤(DVD)或其它存儲設備),用于在存儲介質或設備由處理系統(tǒng)讀取時配置或操作處理系統(tǒng),以執(zhí)行本文描述的程序。還可認為本公開的實施例被實現(xiàn)為機器可讀或機器可記錄存儲介質,其被配置成與處理系統(tǒng)一起使用,其中如此配置的存儲介質致使處理系統(tǒng)以特定和預定方式操作以執(zhí)行本文所述的功能。
盡管在附圖中描述和示出了某些示例性實施例,但將理解這些實施例僅僅是示例性的且對寬泛的發(fā)明沒有限制,且本發(fā)明不限于所示和所描述的具體構造和配置,因為本領域的普通技術人員可想到各種其它修改。
說明書中對“實施例”、“一個實施例”、“某些實施例”或“其它實施例”的參照表示結合實施例描述的特定特征、結構或特性包括在至少一些實施例中,而不一定在所有的實施例中。各處出現(xiàn)的“實施例”、“一個實施例”或“某些實施例”不一定都指相同的實施例。如果說明書陳述“可”、“可能”或“能夠”包括組件、特征、結構或特性,則不必需包括該特定組件、特征、結構或特性。如果說明書或權利要求書提到“一”或“一個”元件,這并不意味著僅有一個元件。如果說明書或權利要求書提到“附加”元件,這不排出有一個以上的附加元件。
權利要求
1.一種橢圓曲線密碼系統(tǒng)中的方法,包括
根據(jù)基于圖的單次迭代乘法例程,計算表示兩個輸入操作數(shù)的進位少的乘積的多項式的多個系數(shù),所述例程根據(jù)輸入操作數(shù)的長度計算,以約簡計算所述兩個輸入操作數(shù)的進位少的乘積所需的乘法量;
通過利用兩個乘法執(zhí)行除法,約簡所述進位少的乘積??删幊潭囗検?,所述可編程多項式定義所述橢圓曲線密碼系統(tǒng)。
2.如權利要求1所述的方法,其特征在于,在計算之前,所述方法還包括
根據(jù)輸入操作數(shù)長度利用所述一次迭代基于圖的乘法預先計算所述乘法例程,以約簡計算表示所述兩個輸入操作數(shù)的乘積的所述多項式的所述多個系數(shù)所需的標量乘法量,且無需遞歸。
3.如權利要求1所述的方法,其特征在于,所述預先計算還包括
根據(jù)輸入操作數(shù)長度生成屬于第一操作數(shù)和第二操作數(shù)的多個圖,所述多個圖包括多個頂點和多個邊;
提供所述多個頂點和多個邊,以便在不使用遞歸的情況下執(zhí)行所述第一操作數(shù)和所述第二操作數(shù)的乘法,其中所述第一操作數(shù)和所述第二操作數(shù)的大小至少是所述系統(tǒng)的本機操作數(shù)大小;確定所述多個頂點的第一多個乘積;
確定多個生成邊和多個生成平面的第二多個乘積;以及
由所述第一多個乘積和所述第二多個乘積創(chuàng)建所述多個系數(shù),用于執(zhí)行所述第一操作數(shù)和所述第二操作數(shù)的乘法。
4.如權利要求1所述的方法,其特征在于,還包括
利用以下的方程式根據(jù)余數(shù)p(x)計算密碼密鑰
p(x)=c(x)·xtmod g(x)
其中
c(x)是GF(2)中帶有系數(shù)的次數(shù)為s-1的多項式,表示將被約簡的進位少的乘積的s個最高有效位;
t是多項式g的次數(shù);以及
g(x)是定義橢圓曲線(EC)密碼系統(tǒng)的不可約多項式。
5.如權利要求1所述的方法,其特征在于,約簡所述進位少的乘積還包括
計算包括所述可編程多項式g(x)的t個最低有效項的第一多項式g*;
計算商多項式q+,其中所述商多項式q+的次數(shù)是s,且等于xt+s與所述可編程多項式的除法的商;
計算所述商多項式的所述進位少的乘積和所述進位少的乘積的最高有效位,以提供次數(shù)為2s-1的結果多項式,作為所述兩個乘法的第一乘法;
將所得多項式的s個最高有效項與第一多項式進行進位少的相乘,作為所述兩個乘法的第二乘法,以實現(xiàn)計算次數(shù)為t+s-2的結果多項式所需的除法;以及
返回所得多項式的t個最低有效項作為所需余數(shù)。
6.如權利要求5所述的方法,其特征在于,如果g(x)是三項式和五項式之一,則所述進位少的乘積的計算是利用多個大數(shù)移位運算和互斥運算進行的。
7.如權利要求5所述的方法,其特征在于,如果g(x)是三項式,則所述進位少的乘法是利用兩個大數(shù)移位運算和互斥運算進行的。
8.如權利要求1所述的方法,其特征在于,約簡所述進位少的乘積還包括
通過根據(jù)以下方程式的兩個乘法執(zhí)行除法來計算所述進位少的乘積多項式??删幊潭囗検降挠鄶?shù)p(x)
p(x)=Lt(g*(x)·Ms(c(x)·q+(x)))
其中Lu(v)表示多項式v的u個最低有效項的系數(shù),且Mu(v)表示u個最高有效項的系數(shù);
c(x)是GF(2)中帶有系數(shù)的次數(shù)為s-1的多項式,表示將被約簡的進位少的乘積的s個最高有效位;
t是多項式g的次數(shù);
g(x)是定義橢圓曲線(EC)密碼系統(tǒng)的不可約多項式;以及
g*包括g(x)的t個最低有效項;以及
q+是商多項式,其中所述商多項式q+的次數(shù)是s,且等于xt+s與所述可編程多項式g(x)的除法的商。
9.如權利要求1所述的方法,其特征在于,計算所述多個系數(shù)包括
根據(jù)所述預先計算的乘法例程,利用可從所述系統(tǒng)得到的進位少的乘法指令,計算表示所述兩個輸入操作數(shù)乘積的所述多項式的系數(shù)的乘積,其中所述乘法例程根據(jù)輸入操作數(shù)長度擴展所述進位少的乘法指令,且無需遞歸。
10.一種包括機器可讀存儲介質的制品,在所述機器可讀存儲介質上具有經(jīng)編碼的指令,所述指令可用于編程橢圓曲線編碼系統(tǒng)以執(zhí)行一種方法,包括
根據(jù)輸入操作數(shù)長度利用一次迭代基于圖的乘法預先計算乘法例程,所述乘法例程約簡計算表示兩個輸入操作數(shù)的乘積的多項式的多個系數(shù)所需的乘法量;
根據(jù)所述預先計算的乘法例程,利用可從所述系統(tǒng)得到的進位少的乘法指令,計算表示所述兩個輸入操作數(shù)乘積的所述多項式的系數(shù)的乘積,以根據(jù)所述輸入操作數(shù)長度擴展所述進位少的乘法指令,且無需遞歸;以及
計算所述進位少的乘積多項式模定義所述橢圓曲線密碼系統(tǒng)的可編程多項式的余數(shù),以形成密碼密鑰。
11.如權利要求10所述的制品,其特征在于,預先計算所述乘法例程包括
生成針對輸入操作數(shù)長度的一個或多個從所述一個或多個圖中選出完整子圖的集合;
從所述多個互連圖確定多個廣義邊和多個頂點,所述多個廣義邊包括多個生成邊和多個生成平面;
確定所述多個頂點的第一多個乘積;
確定所述多個生成邊和所述多個生成平面的第二多個乘積;
由所述第一多個乘積和所述第二多個乘積形成表示輸入操作數(shù)的乘積的多項式的多個系數(shù);以及
向加密進程的乘法部分提供所述多個系數(shù)。
12.如權利要求10所述的制品,其特征在于,所述方法還包括
利用以下的方程式根據(jù)余數(shù)p(x)計算密碼密鑰
p(x)=c(x)·xtmod g(x)
其中
c(x)是GF(2)中帶有系數(shù)的次數(shù)為s-1的多項式,表示將被約簡的進位少的乘積的s個最高有效位;
t是多項式g的次數(shù);以及
g(x)是定義橢圓曲線(EC)密碼系統(tǒng)的不可約多項式。
13.如權利要求10所述的制品,其特征在于,針對具有互連頂點的圖確定所述第一多個乘積;以及
其中所述第二多個乘積是利用以下方程式確定的
0≤q0≤q1≤...≤qm-1,m∈
},
其中Pa表示所述第二多個乘積,v表示頂點,L表示級,q表示位置,i表示局部索引。
14.如權利要求10所述的制品,其特征在于,如果B-233橢圓曲線是可編程多項式,則所述進位少的乘積多項式的余數(shù)模所述進位少的乘積多項式的余數(shù)是利用三個233比特寬移位運算和異或(XOR)運算進行的。
15.如權利要求10所述的制品,其特征在于,所述輸入操作數(shù)長度是233比特且所述系統(tǒng)的本機操作數(shù)大小是32比特和64比特之一;且其中可從所述系統(tǒng)得到的所述進位少的乘法指令是32比特和64比特進位少的乘法指令之一。
16.一種橢圓曲線密碼裝置,包括
耦合到存儲器的計算機,所述計算機執(zhí)行所述存儲器中的密碼程序,所述密碼程序包括執(zhí)行輸入操作數(shù)的乘法的乘法部分,所述乘法部分包括基于圖的函數(shù),用于生成表示從所述乘法部分返回的兩個輸入操作數(shù)的進位少的乘積的多項式的多個系數(shù),以及約簡部分,用于通過利用兩個乘法執(zhí)行除法來約簡所述進位少的乘積多項式模可編程多項式,所述可編程多項式定義橢圓曲線密碼裝置。
17.如權利要求16所述的裝置,其特征在于,如果B-233橢圓曲線是可編程多項式,則所述約簡部分還利用三個233比特寬移位運算和異或(XOR)運算計算所述進位少的乘積多項式??删幊潭囗検降挠鄶?shù)。
18.如權利要求16所述的裝置,其特征在于,還包括
預先計算邏輯,用于計算包括可編程多項式的t個最低有效項的第一多項式g*和商多項式q+,其中所述商多項式q+的次數(shù)是s,且等于xt+s與所述可編程多項式的除法的商;
進位少的乘積邏輯,用于計算商多項式的進位少的乘積和所述進位少的乘積的最高有效位作為兩個乘法的第一乘法,以提供次數(shù)是2s-1的結果多項式,并進行所得多項式的s個最高有效項與第一多項式的進位少的乘法作為所述兩個乘法的第二乘法,以實現(xiàn)計算次數(shù)為t+s-2的結果多項式所需的除法并返回所得多項式的t個最低有效項作為所需余數(shù)。
19.如權利要求16所述的裝置,其特征在于,所述多個基于圖的函數(shù)包括
預先計算函數(shù),用于根據(jù)輸入操作數(shù)長度利用所述一次迭代基于圖的乘法預先計算所述乘法例程,所述一次迭代基于圖的乘法約簡計算表示所述兩個輸入操作數(shù)的乘積的所述多項式的多個系數(shù)所需的乘法量,且無需遞歸;以及
乘法函數(shù),用于根據(jù)所述預先計算的乘法例程,利用可從系統(tǒng)得到的進位少的乘法指令,計算表示所述兩個輸入操作數(shù)乘積的所述多項式的系數(shù)的乘積,以根據(jù)所述輸入操作數(shù)長度擴展所述進位少的乘法指令,且無需遞歸。
20.一種橢圓曲線密碼系統(tǒng),包括
耦合到第一存儲器的第一設備,所述第一設備執(zhí)行所述第一存儲器中的密碼程序,所述密碼程序包括執(zhí)行輸入操作數(shù)的乘法的乘法部分,所述乘法部分包括多個基于圖的函數(shù),用于生成表示從所述乘法部分返回的兩個輸入操作數(shù)的進位少的乘積的多項式的多個系數(shù),以及約簡部分,用于通過利用兩個乘法執(zhí)行除法約簡所述進位少的乘積??删幊潭囗検揭陨傻谝幻荑€和第二密鑰,所述可編程多項式定義橢圓曲線密碼系統(tǒng);
耦合到第二存儲器的第二設備,所述第二設備執(zhí)行所述第二存儲器中的加密程序,
其中所述第一設備和所述第二設備在網(wǎng)絡上相互傳送加密數(shù)據(jù)。
21.如權利要求20所述的系統(tǒng),其特征在于,所述多個基于圖的函數(shù)包括
預先計算函數(shù),用于根據(jù)輸入操作數(shù)長度利用所述一次迭代基于圖的乘法預先計算所述乘法例程,所述一次迭代基于圖的乘法約簡計算表示所述兩個輸入操作數(shù)的乘積的所述多項式的多個系數(shù)所需的乘法量,且無需遞歸;以及
根據(jù)所述預先計算的乘法例程,利用可從所述系統(tǒng)得到的進位少的乘法指令,計算表示所述兩個輸入操作數(shù)乘積的所述多項式的系數(shù)的乘積,以根據(jù)所述輸入操作數(shù)長度擴展所述進位少的乘法指令,且無需遞歸。
22.如權利要求21所述的系統(tǒng),其特征在于,所述約簡部分還通過根據(jù)以下方程式的兩個乘法執(zhí)行除法來計算所述進位少的乘積多項式p(x)??删幊潭囗検降挠鄶?shù)
p(x)=Lt(g*(x)·Ms(c(x)·q+(x)))
其中Lu(v)表示多項式v的u個最低有效項的系數(shù),且Mu(v)表示u個最高有效項的系數(shù);
c(x)是GF(2)中帶有系數(shù)的次數(shù)為s-1的多項式,表示將被約簡的進位少的乘積的s個最高有效位;
t是多項式g的次數(shù);以及
g(x)是定義橢圓曲線(EC)密碼系統(tǒng)的不可約多項式的t個最低有效項;以及
商多項式q+,其中所述商多項式q+的次數(shù)是s,且等于xt+s與所述可編程多項式的除法的商。
23.如權利要求21所述的系統(tǒng),其特征在于,所述第一存儲器是雙數(shù)據(jù)率(DDRn)同步動態(tài)隨機存取存儲器(SDRAM),其中n是等于或大于2的整數(shù)。
24.如權利要求21所述的系統(tǒng),其特征在于,所述網(wǎng)絡是有線和無線之一。
25.如權利要求21所述的系統(tǒng),其特征在于,所述第二設備是智能卡、個人數(shù)字助理(PDA)、蜂窩電話和游戲控制臺之一。
全文摘要
在某些實施例中,描述了一種用于加速特性2橢圓曲線密碼系統(tǒng)的計算的裝置和方法。在一個實施例中,根據(jù)輸入操作數(shù)長度,利用一次迭代基于圖的乘法預先計算乘法例程。預先計算之后,乘法例程接著利用進位少的乘法指令計算表示兩個輸入操作數(shù)的進位少的乘積的多項式的系數(shù)的乘積。在一個實施例中,預先計算的乘法例程可用于根據(jù)兩個輸入操作數(shù)的輸入操作數(shù)長度擴展可從層級獲得的進位少的乘法指令。計算之后,在計算進位少的乘積模定義所述橢圓曲線密碼系統(tǒng)的可編程多項式時,進位少的乘積多項式產(chǎn)生余數(shù),以形成密碼密鑰。描述并要求保護其他實施例。
文檔編號H04L9/30GK101483517SQ20081018970
公開日2009年7月15日 申請日期2008年12月26日 優(yōu)先權日2007年12月28日
發(fā)明者S·格倫, M·科恩維斯 申請人:英特爾公司