專利名稱:加速對特性2橢圓曲線密碼系統的計算的方法
加速對特性2橢圓曲線密碼系統的計算的方法本申請是2008年12月26日提交的、申請號為200810189706. I、題為“加速對特性2橢圓曲線密碼系統的計算的方法”的發明專利申請的分案申請。背景領域實施例涉及密碼領域,且尤其涉及加速對特性2橢圓曲線密碼系統的計算的裝置、系統和方法。
背景技術:
Karatsuba 算法(A. Karatsuba 和 Y. Ofman, Multiplication of Multidigit Numbers on Automata (自動機上多位數的乘法),Soviet Physics - Doklady, 7 (1963),第595-596頁)在1962年提出,作為ー種減少計算兩個大數的乘積所需的標量乘法的數目的嘗試。經典的算法接受次數等于I的兩個多項式作為輸入,即
并利用三個標量乘法計算它們的乘積a (χ) b (χ) Za1ID1X2+x+a^lv這種技術與多項
式a(x)和b(x)相乘的樸素(也稱為“教科書”)方式不同,該方式執行4個標量乘法,即得出乘積 aob。、和 S1Id1。Karatsuba示出僅需要進行三個標量乘法,即僅需要得出乘積S1Id1、(aja。)(Vb0)和a0b0。一旦執行標量乘法,缺失的系數(aA+aA)可被計算為差值( + )(bi+bj-aaba-aibi。對于較大的操作數,可遞歸地應用Karatsuba算法。Karatsuba不僅適用于多項式,還適用于大數。大數可通過用變量χ替換任意2的冪來轉換成多項式。與使用Karatsuba相關聯的最重要的未解決的問題之ー是如何將算法應用到大數,而不會由于遞歸而浪費處理時間。遞歸不合需要有三個原因。第一,遞歸Karatsuba進程使相關的加法與乘法交織。結果,遞歸Karatsuba進程不能充分利用任何由處理器架構或芯片組支持的硬件級并行度。第二,由于遞歸,由遞歸Karatsuba產生的中間標量項需要更多的處理器字來表示。因此,單個標量乘法或加法需要ー個以上的處理器運算來實現。這種額外開銷是相當大的。第三,遞歸Karatsuba招致函數調用額外開銷。Oregon Sate University (俄勒網州立大學)的 Cetin Koc 等人(S. S. Erdem和 C.K. Koc. “A less recursive variant οι Karatsuba-Ofman algorithm formultiplying operands of size a power of two”(用于對2的幕大小的操作數作乘法的Karatsuba-Ofman算法的較小遞歸變體),會議錄,第16屆IEEE計算機架構討論會,主編 J. -C. Bajard 和 M. Schulte,第 28-35 頁,IEEE 計算機協會出版社,Santiago deCompostela,西班牙,2003年6月15-18日)描述了 Karatsuba的一種較小遞歸變體,其中輸入操作數的大小需要是2的冪。然而,該變體仍需要遞歸調用且僅適用于特定大小的操作數。最初由Koblitz (N. Koblitz, “Elliptic Curve Cryptosystems”(捕圓曲線密碼系統),Mathematics of Computation (計算數學),48,第 203-209 頁,1987)和 Miller (V.Miller, “Uses of Elliptic Curvers in Cryptography”(密碼學中捕圓曲線的使用),會議錄,Advances in Cryptology (Crypto,85)(密碼學的進步),第 416-426 頁,1985)提出的橢圓曲線密碼學近來獲得了來自工業的很多關注,并且密鑰建立和數字簽名運算類似于帶有相似密碼強度的RSA,但其密鑰大小小得多。橢圓曲線密碼學背后的主要思想是橢圓曲線中的點形成加法群。點可與其自身相加很多次,其中加法次數可以是很大的數。這種運算通常被稱為“點乘標量乘法(pointtimes scalar multiplication)”或簡稱為“點乘法”。橢圓曲線密碼學對公鑰運算的適用性來自以下事實如果原始和所得點是已知的,但加法的數目是未知的,則很難從原始和所得點得出該數目。所得的點的坐標可形成公鑰,而產生公鑰的加法的數目可形成私鑰。附圖簡述在附圖的各個圖中,實施例作為示例而非限制示出,其中相同的附圖標記指示類似的元素,且附圖中 圖I示出4乘4示例的進程的實施例的流程圖;圖2示出完全圖的示例;圖3示出圖同構的示例;圖4示出18乘18示例的實施例的圖示;圖5示出利用局部索引序列符號的實施例的生成平面(spanning plane)的表示;圖6不出利用半局部索引序列和全局索引符號的實施例的生成平面的表不;圖7示出生成平面的可選表示;圖8示出9乘9生成平面的另ー個示例;圖9示出邊到生成邊和生成平面的映射的實施例表示;
圖10示出實施例的減法生成的圖示;圖IIA-IIB示出實施例的框圖;圖12示出現有進程與實施例的比較;以及圖13是示出根據ー個實施例的計算兩個輸入操作數的進位少的乘積的余數的方法。圖14是示出根據ー個實施例計算圖13的余數的方法的流程圖。圖15示出系統中的裝置的實施例。詳細描述本文討論的實施例一般涉及加速對特性2橢圓曲線密碼系統的計算的裝置、系統和方法。在一個實施例中,諸如Lopez-Dahab空間(J. Lopez和R. Dahab, “FastMultiplication on Elliptic Curves over GF(2m)without Precomputation,,(無需予頁計算的在GF(2m)上橢圓曲線的快速乘法),會議錄,Workshop on Cryptographic Hardware andEmbedded Systems (CHES 1999)(加密硬件與嵌入式系統研討會),第316-327頁,1999)的射影空間被用于表示點坐標,點加法和點倍增通過引入ー種在GF(2m)形式的有限域中使元素相乘的新穎的方式來加速。在一個實施例中,元素利用用于進位少(carry-less)的乘法(GFMUL)和單次迭代類似 Karatsuba 公式(M. Kounavis,“A New Method for Fast IntegerMultiplication and its Application to Cryptography” (一種用于快速整數乘法的新方法及其對密碼學的應用),會議錄,International Symposium on the PerformanceEvaluation of Computer and Telecommunication Systems (關于計算機和電信系統的性能評估的國際研討會SPECTS2007)圣地亞哥,美國加州,2007年7月)的CPU指令做乘法,用于計算GF(2)中高次數多項式的進位少的乘積。在一個實施例中,通過認識到很多曲線用稀疏的不可約多項式指定域,來進行這些多項式的進位少的乘積的約簡。例如,美國國家標準及技術研究所(NIST)曲線用三項(三項式)或五項(五項式)指定多項式。一個實施例用軟件在3. 6GHz奔騰4處理器上基于NISTB-233曲線使橢圓曲線Diffie Hellman加速55%。如果將3時鐘等待時間GFMUL指令引入CPU,則加速因子變為5. 2X。進ー步的軟件優化有可能使加速增加超過10X。參照附圖,現在將描述示例性實施例。提供示例性實施例,以 說明實施例且不應該理解為限制本實施例的范圍。在一個實施例中,針對其中點坐標是GF (2m)形式的有限域的元素且諸如Lopez-Dahab射影空間(Lopez和Dahab 1999)之類的射影空間用于表示點坐標的橢圓曲線,加速點乘法,以確保點乘法中的所有基本運算(即點加法和點倍増)包括Galois (伽羅瓦)域加法和乘法但沒有除法。通過實現Galois域乘法,我們的實現方式不同于現有技術水平(“The OpenSSL Source Code Distribution”(OpenSSL 源代碼分布)可在 www. openssl.org得到)。在現有技術水平的實現中,使用針對32或64比特進位少的乘法的4比特表查找、用于將進位少的乘法擴展到較大操作數的遞歸Karatsuba和最終乘積模(modulo)所使用域的不可約多項式的逐字約簡,來實現Galois域(GF)乘法。在一個實施例中,使用實現兩個64比特輸入的進位少的乘法的指令(GFMUL)來代替表查找。利用GFMUL指令作為構造塊,將新穎的單次迭代擴展(Kounavis 2007)應用于已知的Karatsuba算法,以便獲得所需的較大輸入(例如,233 bitds)的進位少的乘法。在一個實施例中,一種約簡結果模稀疏的不可約多項式的方法有助于提高總體性能。在一個實施例中,NIST B-233曲線的約簡需要不超過3個256比特寬偏移和3個256比特寬XOR操作,從而使得單個英特爾奔騰4執行橢圓曲線Diffie Hellman能夠比現有技術水平(OpenSSL,未注明日期)快55%。此外,如果使用3時鐘GFMUL指令,則加速器因子變為5. 2X。在一個實施例中,約簡方法不需要將域特定約簡邏輯置于處理器指令的實現中。我們首先描述進位少的乘法。如本文所描述的,“進位少的乘法”也稱為Galois域(GF (2))乘法,是使兩個數相乘而不生成或傳播進位的運算。在標準的整數乘法中,第一操作數被移位的次數與第二操作數中等于“I”的比特的位置一祥多。通過使第一操作數的經移位的版本彼此相加導出兩個操作數的乘積。在進位少的乘法中,進行相同的過程,但加法不生成或傳播進位。由此,比特加法等價于異或(XOR)邏輯運算。進位少的乘法形式上定義如下令兩個操作數各自是大小為η比特的A、B。令數A是以下的比特陣列A=[an_! an_2…a0](I)還令數B是B=[bn_! bn_2…bj(2)令進位少的乘法結果是以下的比特陣列C= [C2lri c2n_fc0](3)
輸出C的比特被定義為以下輸入A和B的比特的邏輯函數
權利要求
1.一種橢圓曲線密碼系統中的方法,所述方法包括 根據輸入操作數長度利用一次迭代基于圖的乘法預先計算乘法例程; 藉由計算裝置根據預先計算的乘法例程計算兩個輸入操作數的第一進位少的乘積;以及 藉由所述計算裝置通過執行若干移位運算和異或運算來計算所述第一進位少的乘積和稀疏多項式之間的第二進位少的乘積, 其中所述稀疏多項式包括多個系數且所述多個系數中等于I的系數的數目小于等于O的系數的數目,并且在定義橢圓曲線ニ進制域的多項式中移位運算和異或運算的數目約為所述多個系數中等于I的系數的數目。
2.如權利要求I所述的方法,其特征在于,還包括 通過執行若干移位運算和異或運算來計算所述第二進位少的乘積和第二稀疏多項式之間的第三進位少的乘積,其中所述第二稀疏多項式包括多個系數且所述多個系數中等于I的系數的數目小于等于O的系數的數目,并且在定義橢圓曲線ニ進制域的多項式中移位運算和異或運算的數目約為所述多個系數中等于I的系數的數目。
3.如前述權利要求中任一項所述的方法,其特征在于,預先計算還包括 根據輸入操作數長度生成屬于第一操作數和第二操作數的多個圖,所述多個圖包括多個頂點和多個邊; 提供所述多個頂點和所述多個邊,以便在不使用遞歸的情況下執行所述第一操作數和所述第二操作數的乘法,其中所述第一操作數和所述第二操作數的大小至少是所述系統的本機操作數大小; 確定所述多個頂點的第一多個乘積; 確定多個生成邊和多個生成平面的第二多個乘積;以及 由所述第一多個乘積和所述第二多個乘積創建所述多個系數,用于執行所述第一操作數和所述第二操作數的乘法。
4.如權利要求2所述的方法,其特征在于,計算所述第三進位少的乘積包括 利用以下的方程式根據余數P(X)計算密碼密鑰P u) =c (X) · Xt mod g U) 其中 C(X)是GF(2)中帶有系數的次數為s- 的多項式,表示將被約簡的進位少的乘積的s個最聞有效位; t是多項式g的次數;以及 g(x)是定義橢圓曲線(EC)密碼系統的不可約多項式。
5.如權利要求2所述的方法,其特征在于,計算所述第一進位少的乘積還包括 計算包括可編程多項式g(x)的t個最低有效項的第一多項式g* ; 計算商多項式q+,其中所述商多項式q+的次數是S,且等于xt+s與所述可編程多項式的除法的商; 計算所述商多項式的進位少的乘積和所述進位少的乘積的最高有效位,以提供次數為2s-l的結果多項式,作為兩個乘法的第一乘法; 將所得多項式的s個最高有效項與所述第一多項式進行進位少的相乘,作為所述兩個乘法的第二乗法,以實現計算次數為t+s-2的結果多項式所需的除法;以及 返回所得多項式的t個最低有效項作為余數。
6.如權利要求5所述的方法,其特征在于,如果g(x)是三項式和五項式之一,則所述進位少的乘積的計算是利用多個大數移位運算和異或運算進行的。
7.如權利要求5所述的方法,其特征在于,如果g(x)是三項式,則所述進位少的乘法是利用兩個大數移位運算和異或運算進行的。
8.如權利要求2所述的方法,其特征在于,計算所述第三進位少的乘積包括 通過根據以下方程式的兩個乘法執行除法來計算所述第一進位少的乘積模可編程多項式的余數P (X) P (X) =Lt (g* (X) · Ms (c (X) · q+ (X))), 其中 Lu(v)表示多項式V的u個最低有效項的系數,且Mu(V)表示u個最高有效項的系數;C(X)是GF(2)中帶有系數的次數為s-Ι的多項式,表示將被約簡的進位少的乘積的s個最聞有效位; t是多項式g的次數; g(x)是定義橢圓曲線(EC)密碼系統的不可約多項式; g*包括g (χ)的t個最低有效項;以及 Q+是商多項式,其中所述商多項式q+的次數是S,且等于xt+s與所述可編程多項式g (X)的除法的商。
9.如權利要求8所述的方法,其特征在于,預先計算所述乘法包括 生成針對輸入操作數長度的ー個或多個圖; 從所述一個或多個圖中選出完整子圖的集合; 從多個互連圖確定多個廣義邊和多個頂點,所述多個廣義邊包括多個生成邊和多個生成平面; 確定所述多個頂點的第一多個乘積; 確定所述多個生成邊和所述多個生成平面的第二多個乘積; 由所述第一多個乘積和所述第二多個乘積形成表示輸入操作數的乘積的多項式的多個系數;以及 向加密進程的乘法部分提供所述多個系數;或者 其中針對具有互連頂點的圖確定所述第一多個乘積;以及 其中所述第二多個乘積是利用以下方程式確定的
10.如權利要求9所述的方法,其特征在干,如果233比特橢圓曲線包括可編程多項式,則計算所述第三進位少的乘積是利用三個233比特寬移位運算和異或(XOR)運算進行的。
11.如權利要求10所述的方法,其特征在于,所述輸入操作數長度是233比特且所述系統的本機操作數大小是32比特和64比特之ー;并且其中可從所述系統得到的進位少的乘法指令是32比特和64比特進位少的乘法指令之一。
12.—種橢圓曲線密碼系統,包括 耦合到第一存儲器的第一計算機設備,所述第一計算機設備執行所述第一存儲器中的密碼程序,所述第一計算機設備具有用于執行所述密碼程序的裝置,所述第一計算機設備的所述裝置包括 用于根據輸入操作數長度利用一次迭代基于圖的乘法預先計算乘法例程的裝置; 用于根據預先計算的乘法例程計算兩個輸入操作數的第一進位少的乘積的裝置;以及用于通過執行若干移位運算和異或運算來計算所述第一進位少的乘積和稀疏多項式之間的第二進位少的乘積的裝置, 其中所述稀疏多項式包括多個系數且所述多個系數中等于I的系數的數目小于等于O的系數的數目,并且在定義橢圓曲線ニ進制域的多項式中移位運算和異或運算的數目約為所述多個系數中等于I的系數的數目;以及 耦合到第二存儲器的第二計算機設備,所述第二計算機設備執行所述第二存儲器中的所述密碼程序,所述第二計算機設備具有用于執行所述密碼程序的裝置, 其中所述第一計算機設備和所述第二計算機設備在網絡上相互傳送加密數據。
13.如權利要求12所述的系統,其特征在于,所述第一計算機設備的所述裝置還包括 用于通過執行若干移位運算和異或運算來計算所述第二進位少的乘積和第二稀疏多項式之間的第三進位少的乘積的裝置,其中所述第二稀疏多項式包括多個系數且所述多個系數中等于I的系數的數目小于等于O的系數的數目,并且在定義橢圓曲線ニ進制域的多項式中移位運算和異或運算的數目約為所述多個系數中等于I的系數的數目。
14.如權利要求13所述的系統,其特征在于,用于計算所述第三進位少的乘積的裝置包括 用于通過根據以下方程式的兩個乘法執行除法來計算所述第一進位少的乘積模可編程多項式的余數P(X)的裝置 P (X) =Lt (g* (X) · Ms (c (χ) · q+ (χ))), 其中 Lu(v)表示多項式V的u個最低有效項的系數,且Mu(V)表示u個最高有效項的系數;C(X)是GF(2)中帶有系數的次數為s-Ι的多項式,表示將被約簡的進位少的乘積的s個最聞有效位; t是多項式g的次數; g*包括不可約多項式的t個最低有效項,所述不可約多項式定義橢圓曲線(EC)密碼系統;以及 商多項式q+,其中所述商多項式q+的次數是S,且等于xt+s與所述可編程多項式的除法的商。
15.如權利要求12所述的系統,其特征在于,用于預先計算的裝置還包括 用于根據輸入操作數長度生成屬于第一操作數和第二操作數的多個圖的裝置,所述多個圖包括多個頂點和多個邊;用于提供所述多個頂點和所述多個邊以在不使用遞歸的情況下執行所述第一操作數和所述第二操作數的乘法的裝置,其中所述第一操作數和所述第二操作數的大小至少是所述系統的本機操作數大小; 用于確定所述多個頂點的第一多個乘積的裝置; 用于確定多個生成邊和多個生成平面的第二多個乘積的裝置;以及用于由所述第一多個乘積和所述第二多個乘積創建所述多個系數以便執行所述第一操作數和所述第二操作數的乘法的裝置。
16.如權利要求13所述的系統,其特征在于,用于計算所述第一進位少的乘積的裝置還包括 用于計算包括可編程多項式g(x)的t個最低有效項的第一多項式g*的裝置; 用于計算商多項式q+的裝置,其中所述商多項式q+的次數是S,且等于xt+s與所述可編程多項式的除法的商; 用于計算所述商多項式的進位少的乘積和所述進位少的乘積的最高有效位以提供次數為2s_l的結果多項式作為兩個乘法的第一乘法的裝置; 用于將所得多項式的s個最高有效項與所述第一多項式進行進位少的相乘作為所述兩個乘法的第二乘法以實現計算次數為t+s-2的結果多項式所需的除法的裝置;以及用于返回所得多項式的t個最低有效項作為余數的裝置。
17.如權利要求12所述的系統,其特征在于,所述第一存儲器是雙數據率(DDRn)同步動態隨機存取存儲器(SDRAM),其中η是等于或大于2的整數。
18.如權利要求12所述的系統,其特征在于,所述網絡是有線網絡和無線網絡之一。
19.如權利要求12所述的系統,其特征在于,所述第二計算機設備是智能卡、個人數字助理(PDA)、蜂窩電話和游戲控制臺之。
全文摘要
在某些實施例中,描述了一種用于加速特性2橢圓曲線密碼系統的計算的裝置和方法。在一個實施例中,根據輸入操作數長度,利用一次迭代基于圖的乘法預先計算乘法例程。預先計算之后,乘法例程接著利用進位少的乘法指令計算表示兩個輸入操作數的進位少的乘積的多項式的系數的乘積。在一個實施例中,預先計算的乘法例程可用于根據兩個輸入操作數的輸入操作數長度擴展可從層級獲得的進位少的乘法指令。計算之后,在計算進位少的乘積模定義所述橢圓曲線密碼系統的可編程多項式時,進位少的乘積多項式產生余數,以形成密碼密鑰。描述并要求保護其他實施例。
文檔編號G06F7/72GK102866878SQ201210297970
公開日2013年1月9日 申請日期2008年12月26日 優先權日2007年12月28日
發明者S·格倫, M·科恩維斯 申請人:英特爾公司