專利名稱:一種基于Ⅱ型高斯基域的橢圓曲線加解密方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息安全領(lǐng)域,尤其涉及一種基于n型高斯基域的橢圓曲線加 解密方法和裝置。
背景技術(shù):
橢圓曲線密碼(Elliptic Curve Cryptography, ECC )的加密原理基于有限域 上橢圓曲線離散對(duì)凄t問題(Elliptic Curve Discrete Logarithm Problem , ECDLP)q的難解性,這種難解性可以以奇特征有限域上的橢圓曲線為例說明。設(shè)GF(p)是一個(gè)P#2, 3的奇特征有限域,定義在GF(p)上的橢圓曲線是 指滿足Weierstrass方牙呈/=x3+ox + 6 (a,6e ,且4a3 + 2762 # 0 )的所有解,(x, eG^O^GF(/ )與無窮遠(yuǎn)點(diǎn)O構(gòu)成的非空集合。設(shè)P是橢 圓曲線E(x , 7 ) (GF(p))上的一個(gè)點(diǎn),則在橢圓曲線E上關(guān)于用戶的橢圓 曲線離散對(duì)數(shù)問題為給定一點(diǎn)Q6E(x, ;; ) 求解整數(shù)jc (jceGF(p)),使xP-Q。如果這樣的數(shù)存在,那么就是橢圓曲線離散對(duì)數(shù),即, 選取該橢圓曲線上的一個(gè)點(diǎn)P作為基點(diǎn),給定一個(gè)整數(shù)x ,求解jcP = Q是容 易的,但是要從Q點(diǎn)和P點(diǎn)推導(dǎo)出整數(shù)x ,則是非常困難的。因此,在眾多密 碼安全體制技術(shù)方案中,ECC是目前已知的安全性最高的一種密碼體制。根據(jù)有限域選取的不同,ECC體制可以分為基于素?cái)?shù)域G^(p)和二進(jìn)制 多項(xiàng)式域GF(2m )兩大類(此時(shí)的橢圓曲線方程為滿足Weierstrass方程: /+jg; = Jc3+ax + 6 O, 6 e GF(2m) , JU-0 )),其中,二進(jìn)制域包括一般 高斯基域(Normal gauss Basis , NB)和I 、 II型高斯基域,后兩者又歸為 最優(yōu)正規(guī)基(Optimal Normal Basis , ONB)。由于高斯基域具有平方運(yùn)算只需移位、乘法運(yùn)算不需求模并且易于利用硬件實(shí)現(xiàn)等優(yōu)點(diǎn),所以,它在數(shù)字 簽名、智能卡、銀行保密系統(tǒng)和政府安全系統(tǒng)等信息保密系統(tǒng)中得到廣泛應(yīng) 用。一般地,定義在高斯基域上的ECC需要對(duì)基域元素做三種運(yùn)算點(diǎn)乘、 求逆和點(diǎn)加,而耗時(shí)最多的是點(diǎn)乘運(yùn)算?,F(xiàn)有的ECC體制中,對(duì)于點(diǎn)乘運(yùn)算 一般是才艮寺居IEEE才示準(zhǔn)[IEEE P1363 / D13 (Draft Version 13). Standard Specifications for Public Key Cryptography Annex A, 1999-12]中高斯基域乘 法來實(shí)現(xiàn),其基域乘法公式如下& = IX(,+lAr(p_0 .............................................( 1 )其中,0^;^m-1, p=2m+l, m為基于二進(jìn)制多項(xiàng)式域GF(2")上的橢 圓曲線密鑰長(zhǎng)度,F(xiàn)是高斯基域乘法下標(biāo)序列式子,由F(2^Vmod/ )",os"附-i, osy《i導(dǎo)出。按照上述公式(1)給出的計(jì)算過程, 一次高斯基域乘法需要進(jìn)行2m 次循環(huán)移位和2W-m次的按位"異或"(XOR)和按位"與"(AND)運(yùn)算, 具有o(W)的復(fù)雜度。在利用計(jì)算機(jī)實(shí)現(xiàn)時(shí),可以通過按向量轉(zhuǎn)換,得到以 下公式Cj(a《F("l))&(6《FO-/)) ..........................(2)按照公式(2)提供的向量化算法,降低了計(jì)算的復(fù)雜度,利于在計(jì)算 機(jī)上實(shí)現(xiàn),但一次高斯基域乘法仍然需要4m-2次循環(huán)移位和2m-l次向量的 "異或"(XOR)運(yùn)算和"與,,(AND)運(yùn)算。因此,在現(xiàn)有技術(shù)中,按 照公式(1)或公式(2)提供的算法, 一次ECC的加解密過程,也需要1000 次數(shù)量級(jí)高斯基域乘法,利用計(jì)算機(jī)軟硬件實(shí)現(xiàn)時(shí),仍然消耗了龐大的計(jì)算 資源,不利于產(chǎn)品化應(yīng)用推廣。發(fā)明內(nèi)容本發(fā)明實(shí)施例的目的在于提供一種基于II型高斯基域的橢圓曲線加解密方法和裝置,旨在解決現(xiàn)有的ECC體制在高斯基域上的點(diǎn)乘運(yùn)算復(fù)雜,加解密過 程中算法耗時(shí)過多的問題。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的, 一種基于II型高斯基域的橢圓曲線加密方法, 所述方法包括以下步驟輸入指令,獲取^厶鑰A和生成元P;生成隨機(jī)數(shù)^ ; 計(jì)算^尸和^A的值;以A = V^為加密密鑰對(duì)嵌入至橢圓曲線上的明文信息進(jìn)行加密,并將 ^尸和加密所得密文發(fā)送給解密方。本發(fā)明實(shí)施例的另 一 目的在于提供一種基于II型高斯基域的橢圓曲線解密方法,所述方法包括以下步驟輸入指令,獲取私鑰A,并生成隨機(jī)數(shù)&;爭(zhēng)收加密方發(fā)送的密文和; 選擇與加密方同樣的橢圓曲線;以& = 、^P為解密密鑰,對(duì)密文進(jìn)行解密,得到信息的明文。 本發(fā)明實(shí)施例的另 一 目的在于提供一種基于II型高斯基域的橢圓曲線加密 裝置,包括Montgomery算法模塊和加密模塊,所述Montgomery算法模塊用于計(jì)算隨機(jī)數(shù)^與生成元P和加密方的^^鑰A的乘積6尸和6A,輸出密鑰^ = ^A和^P,所述力。密模塊用于接收明文信息輸入,并根據(jù)所述Montgomery算法模塊輸出的密鑰i ,對(duì)明文信息使用AES算法加密。本發(fā)明實(shí)施例的再一 目的在于提供一種基于II型高斯基域的橢圓曲線解密 裝置,包括Montgomery算法模塊和解密模塊,所述Montgomery算法模塊用于 根據(jù)隨機(jī)數(shù)、和加密方發(fā)送的A尸計(jì)算出解密密鑰^ = A:^尸=所述解密模塊用于以A解密密鑰,解密加密方發(fā)送的密文。本發(fā)明的有益效果在于對(duì)于密鑰長(zhǎng)度為m的密鑰,完成一次基域乘法只 需要進(jìn)行2m+l次循環(huán)移位(其中包括循環(huán)移一位m+l次,循環(huán)移A:位m次)、 1.5m次向量的"異或,,運(yùn)算和m次向量的"與"運(yùn)算,顯著節(jié)省了計(jì)算資源。 由于耗時(shí)最多的基域元素的點(diǎn)乘運(yùn)算得到優(yōu)化,本發(fā)明進(jìn)行一次ECC加解密過 程只需要143.8毫秒,與現(xiàn)有技術(shù)進(jìn)行一次ECC加解密過程需要351毫秒相比, 速度提高了 2倍多。
圖1是本發(fā)明實(shí)施例提供的基于II型高斯基域的橢圓曲線加密方法流程圖;圖2是本發(fā)明實(shí)施例提供的基于II型高斯基域上元素的點(diǎn)乘方法流程圖; 圖3是本發(fā)明實(shí)施例提供的基于II型高斯基域的橢圓曲線解密方法圖; 圖4是本發(fā)明實(shí)施例提供的基于II型高斯基域的橢圓曲線加密裝置示 意圖;圖5是本發(fā)明實(shí)施例提供的基于II型高斯基域的橢圓曲線解密裝置示 意圖;以及圖6是本發(fā)明實(shí)施例提供的II型高斯基域點(diǎn)乘模塊組成示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí) 施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅 僅用以解釋本發(fā)明,并不用于限定本發(fā)明。請(qǐng)參閱圖1,本發(fā)明實(shí)施例提供的基于II型高斯基域的橢圓曲線加密方法, 詳述如下。步驟S101,輸入指令,獲取公鑰A和生成元尸。ECC體制屬于非對(duì)稱加密,在通信過程中,要求加密方(發(fā)送方)利用解 密方(接收方)提供的公鑰加密明文。因此,在本發(fā)明提供的實(shí)施例中,通過 輸入指令,加密方首先獲取由解密方或第三方公布的解密方公鑰a,同時(shí),還應(yīng)獲取生成元尸。生成元尸為本發(fā)明實(shí)施例中橢圓曲線五上的點(diǎn),在加解密過 程開始之前的預(yù)處理階段時(shí)已經(jīng)公布。 步驟S102,生成隨機(jī)數(shù)^。密鑰的產(chǎn)生必須是隨機(jī)的,而且對(duì)于各種可能密鑰的概率應(yīng)該是等概率, 因此,凡是將與密鑰相關(guān)的參數(shù)做某種數(shù)學(xué)運(yùn)算的參數(shù)應(yīng)該不具備可預(yù)測(cè)性。 在本發(fā)明提供的實(shí)施例中,可以利用隨機(jī)發(fā)生器生成隨機(jī)數(shù)^,以便與生成元尸 相乘(^尸)后增加其不可預(yù)測(cè)性。步驟S103,計(jì)算A;,尸和&a的值。^Z^是本發(fā)明提供的實(shí)施例中的加密密鑰A,即,i = aa。計(jì)算^尸和 ^a的值包括以下步驟S1031,初始化橢圓曲線參數(shù)。如前所述,橢圓曲線滿足Weierstrass方,呈y2 + = ;c3 + ax + 6 ( a , 6eGF(2"),且6#0 ),初始化橢圓曲線參數(shù)a和6后,確定了本發(fā)明實(shí)施例中 的橢圓曲線五。S1032,選擇高斯基域作為橢圓曲線點(diǎn)乘運(yùn)算時(shí)的有限域,利用Montgomery 算法計(jì)算^尸和^D"其中,采用快速高斯基域點(diǎn)乘方法計(jì)算高斯基域上元素之 間的點(diǎn)乘。假設(shè)^已經(jīng)轉(zhuǎn)化為二進(jìn)制數(shù),即,輸入& =(、,...,A,A:。)2,尸=0,力,M此 處為橢圓曲線參數(shù)),其中,g為橢圓曲線的階數(shù),& (i取O, 1,..., t- 1 )為二進(jìn)制數(shù)0或1。以本發(fā)明為例,Montgomery算法過程如下SI: a仨jc,4 <~1,I2 <~x4+Z),Z2 <~x2.S2: 對(duì)于/從/-2到0,重復(fù)執(zhí)行若&=1,則<formula>formula see original document page 14</formula>在本發(fā)明實(shí)施例提供的Montgomery算法中,任意兩元素之間的點(diǎn)乘運(yùn)算, 例如,xZp 6Z纟和x2 ( 視為x自身做點(diǎn)乘運(yùn)算x.x )等,都是定義在高斯基 域上。如前所述,ECC體制中基域元素之間的點(diǎn)乘運(yùn)算最耗時(shí)間,現(xiàn)有技術(shù)按 照公式(1)或(2)提供的高斯基域乘法,基域元素之間的點(diǎn)乘運(yùn)算過于消耗 時(shí)間。為了節(jié)省計(jì)算資源,本發(fā)明將公式(1)優(yōu)化,得到本發(fā)明實(shí)施例提供的高 斯基域元素乘法公式 x )、<formula>formula see original document page 14</formula>其中,序列下標(biāo)K由<formula>formula see original document page 14</formula>得到,r為高斯基域的生成元,F(xiàn)為高斯基域乘法下標(biāo)序列,m為基于二進(jìn)制多 項(xiàng)式域G尸(2")上的橢圓曲線密鑰長(zhǎng)度。在本發(fā)明提供的實(shí)施例中,橢圓曲線上的點(diǎn)P(x,力(也即生成元P)的坐 標(biāo)x、少和橢圓曲線參數(shù)等都是定義在高斯基域上的元素,元素自身或之間做 一系列運(yùn)算(包括點(diǎn)乘或點(diǎn)加等等)后所得的結(jié)果亦是定義在高斯基域上的元 素,例如,上述Montgomery算法中的x2 (視為坐標(biāo)x自身做點(diǎn)乘運(yùn)算jcxZ, ( 4是由坐標(biāo)x和參數(shù)6做一系列運(yùn)算后得到,x^是坐標(biāo)x和Z,之間的點(diǎn)乘 x 《)和6《(Z纟視為4自身的點(diǎn)乘Z, & & Z,)都是定義在高斯基域上 的元素。為了便于說明,在本發(fā)明提供的實(shí)施例中,利用Montgomery算法計(jì) 算和&Z)A時(shí),點(diǎn)乘運(yùn)算符兩邊的操作數(shù)統(tǒng)一用定義在高斯基域上的元素& 和元素^表示,并且以A和^的下標(biāo)區(qū)分運(yùn)算后的元素,點(diǎn)乘運(yùn)算的最終結(jié)果 用c表示。圖2是本發(fā)明實(shí)施例提供的基于II型高斯基域上元素的點(diǎn)乘方法流 程,詳述如下。步驟S201,根據(jù)公式(3.1)計(jì)算序列下標(biāo)G.和G的值。步驟S202,對(duì)元素^和元素^做"與"(AND)運(yùn)算,所得結(jié)果暫時(shí)保存 于元素q中。元素^和元素^之間的"與,,(AND)運(yùn)算就是高斯基域元素之間的點(diǎn)乘 運(yùn)算。如前所述,元素A和元素h表示Montgomery算法中點(diǎn)乘運(yùn)算符兩邊的 操作數(shù),其可以是橢圓曲線上的點(diǎn)尸(x,力(也即生成元尸)的坐標(biāo)x、;;或橢圓 曲線參數(shù)6等,也可以是它們自身或之間做一系列運(yùn)算(包括點(diǎn)乘或點(diǎn)加等等) 后所得的結(jié)果,例如,在上述Montgomery算法中,對(duì)于x2的點(diǎn)乘運(yùn)算;c x , 元素A可以表示jc,元素^可以表示x;對(duì)于a^的點(diǎn)乘運(yùn)算x, Z,,元素^可 以表示jc,元素^可以表示Z,;對(duì)于6《或其他類推。步驟S203至步驟S204,對(duì)元素q做循環(huán)右移一位的運(yùn)算,判斷(m-l)/2是 否大于hm是基于二進(jìn)制多項(xiàng)式域GF(2"上的橢圓曲線密鑰長(zhǎng)度,t是一變量,在 第一次對(duì)q循環(huán)右移一位的運(yùn)算時(shí),其值為0。根據(jù)(m-1)/2與A的大小關(guān)系, 判斷循環(huán)是否應(yīng)該結(jié)束,若(m-l)/2大于則轉(zhuǎn)步驟S205,否則,直接輸出q 作為元素^和元素^點(diǎn)乘的最終結(jié)果c (步驟S210)。步驟S205 ,對(duì)元素&和元素^分別做循環(huán)左移一位的運(yùn)算,得到元素和元素^+1。說明書第8/12頁步驟S206,對(duì)^+1元素和元素^做"與"(AND)運(yùn)算,得到元素《;對(duì)元素^+1和元素^做"與,,(AND)運(yùn)算,得到元素《'。步驟S207,對(duì)元素《和元素《'做"異或"(XOR)運(yùn)算,得到元素&。 步驟S208,對(duì)元素&做循環(huán)右移。.位和循環(huán)右移G位運(yùn)算,分別得到元素A和元素A'。y的取值從O至O-1)/2,參數(shù)匸和^由公式(3.1)決定。步驟S209至步驟S210,對(duì)元素A、元素;V和元素q做"異或"(XOR) 運(yùn)算,并輸出結(jié)果c。元素A、 A'和q異或(A十;V十q )后的結(jié)果可以用^+1表示,同時(shí)變 量H故自增1運(yùn)算,即,使& = &+ 1,此后,流程跳轉(zhuǎn)至步驟S204,比較(m-l)/2 和A:的大小關(guān)系,若(m-l)/2大于A:,則開始新的運(yùn)算,否則,將q+,作為元素點(diǎn)乘運(yùn)算的最終結(jié)果c輸出(步驟S210)。由圖2的算法流程可以看出,完成步驟S202需要一次循環(huán)移位和"與,, (AND)運(yùn)算,完成步驟S205至S209需要2m次循環(huán)移位運(yùn)算、1.5m次"異 或"(XOR)運(yùn)算和m次"異或"(XOR)運(yùn)算。這樣,完成一次基域乘法只需 進(jìn)行2m+l次循環(huán)移位運(yùn)算、1.5m次向量"異或"(XOR)和m次向量"與" (AND)運(yùn)算,其中,包括循環(huán)移一位m+l次,循環(huán)移k位(kM)m次。步驟S104,以i = A^A為密鑰對(duì)嵌入至橢圓曲線上的明文信息進(jìn)行加密, 并將^戶和加密所得密文發(fā)送給解密方。作為本發(fā)明一個(gè)實(shí)施例,可以以W = AA為加密密鑰,采用高級(jí)加密標(biāo)準(zhǔn) (Advanced Encryption Standard, AES )算法對(duì)嵌入至橢圓曲線上的明文信息進(jìn) 行加密。如果解密方(接收方)根據(jù)接收到的&尸,能夠計(jì)算出一個(gè)密鑰/ 2, & 是與加密方(發(fā)送方)相同的公鑰,即,i 2= A = 則解密方(接收方)可以從密文恢復(fù)出明文。請(qǐng)參閱圖3,本發(fā)明實(shí)施例提供的基于II型高斯基域的橢圓曲線解密方法,詳述如下。步驟S301,輸入指令,獲取私鑰A,并生成隨機(jī)數(shù)&。與加密方一樣,在本發(fā)明提供的實(shí)施例中,隨機(jī)數(shù)&由一隨機(jī)數(shù)發(fā)生器生成。對(duì)加密方而言,A是公鑰;對(duì)于解密方而言,A是私鑰,并存在數(shù)學(xué)關(guān)系 /^ = ^戶。由于&由解密方產(chǎn)生,因此,只有解密方能夠解密由公鑰(私鑰) 」a加密后的密文。步驟S302,接收加密方發(fā)送的密文和^尸。 步驟S303,選擇與加密方同樣的橢圓曲線。由于橢圓曲線由Weierstrass方牙呈/+xy = x3十ox + 6 O, 6eGF(2"1),且 6-0 )決定,因此,解密方只要確定和加密放同樣的參數(shù)"和參數(shù)6,就選擇了 與加密方同樣的橢圓曲線五。步驟S304,計(jì)算 尸的值。計(jì)算A:人尸時(shí),也涉及基域元素的點(diǎn)乘運(yùn)算。與步驟S103中計(jì)算^P或AA 的方法完全相同,即,以II型高斯基域?yàn)橛邢抻?,在?duì)元素做點(diǎn)乘時(shí),按照?qǐng)D 2所述的基于II型高斯基域上元素的點(diǎn)乘方法,計(jì)算出A,具體不再贅述。步驟S305,以A = A:人P為解密密鑰,對(duì)密文進(jìn)行解密,得到信息的明文。作為本發(fā)明一個(gè)實(shí)施例,解密方可以采用AES算法的逆算法對(duì)密文進(jìn)行解 密,解密原理在于當(dāng)由&戶計(jì)算出密鑰A = 、/^P = fc人尸時(shí),由于存在數(shù)學(xué) 關(guān)系A(chǔ) = ^i5,則實(shí)際上存在數(shù)學(xué)關(guān)系^ = &Z)A ,而在加密方,有i = AA (步驟S103),故i 2 = i ,即,解密方擁有與加密方相同的密鑰,才艮據(jù)AES 算法規(guī)則,可以解密加密方的密文,從而恢復(fù)出明文信息。圖4是本發(fā)明實(shí)施例提供的基于II型高斯基域的橢圓曲線加密裝置。為 了便于說明,僅示出與本發(fā)明相關(guān)的部分。所述裝置中的模塊可以是硬件、 軟件或軟^/f牛結(jié)合的功能單元,以下詳述原理。參數(shù)獲取模塊401用于獲取生成元P和加密方的公鑰A,隨機(jī)數(shù)生成模塊402生成一個(gè)隨機(jī)數(shù)^ 。 Montgomery算法模塊403至少包括一個(gè)II型高 斯基域點(diǎn)乘模塊4031。 Montgomery算法模塊403根據(jù)參數(shù)獲取模塊401獲取 的生成元P和加密方的公鑰A以及隨機(jī)數(shù)生成模塊402生成的隨機(jī)數(shù)A , 計(jì)算出^P和AA。在計(jì)算^尸和^A過程中,II型高斯基域點(diǎn)乘模塊4031完 成II型高斯基域上元素的點(diǎn)乘運(yùn)算。加密模塊404接收明文信息輸入,并根據(jù) Montgomery算法模塊403輸出的加密密鑰i (W與^C^的關(guān)系為7 =盡A ), 對(duì)明文信息使用AES算法加密。發(fā)送模塊405將加密模塊404輸出的密文和 Montgomery算法模塊403輸出的^P發(fā)送至解密方(接收方)。圖5是本發(fā)明實(shí)施例提供的基于II型高斯基域的橢圓曲線解密裝置,所 述裝置包括私鑰獲取模塊501、隨機(jī)數(shù)生成模塊502、 Montgomery算法模 塊503和解密模塊504,其中,Montgomery算法模塊503至少包括一個(gè)II型高 斯基域點(diǎn)乘模塊4031。私鑰獲取模塊501用于獲取解密方的私鑰A( A對(duì)加密方而言是公鑰) 并輸出給Montgomery算法模塊503。隨機(jī)數(shù)生成才莫塊502生成一個(gè)隨機(jī)數(shù)、 輸出至Montgomery算法模塊503以便計(jì)算密鑰。Montgomery算法模塊503 根據(jù)隨機(jī)數(shù)生成模塊502生成的隨機(jī)數(shù)&和加密方發(fā)送的V3,計(jì)算出解密密鑰7 2 (A和&、 ^P數(shù)學(xué)關(guān)系為A = AA戶- M^尸)。在計(jì)算過程中,II型 高斯基域上元素的點(diǎn)乘運(yùn)算由II型高斯基域點(diǎn)乘模塊4031完成。由于存在數(shù)學(xué)關(guān)系A(chǔ) = &戶,且7 2 =P =尸,則實(shí)際上A = & A ,而在加密方,有i = 故A = i ,即,解密方擁有與加密方相同的密鑰,因此,解密模塊504可以以/ 2為解密密鑰,采用AES算法的逆算法解密由加密方發(fā)送過來的密文,恢復(fù)出明文信息。圖6是本發(fā)明實(shí)施例提供的II型高斯基域點(diǎn)乘模塊4031組成示意圖,詳述假設(shè)需要做點(diǎn)乘運(yùn)算的II型高斯基域上的兩元素為&和& ,即,II型高斯基域點(diǎn)乘模塊的輸入為"4和^ 。在點(diǎn)乘運(yùn)算開始時(shí),第一 "與,,邏輯單元601對(duì)元素^和^執(zhí)行"與"運(yùn) 算,其運(yùn)算結(jié)果為q。第一循環(huán)右移單元602對(duì)第一 "與"邏輯單元601輸出 的結(jié)果q執(zhí)行循環(huán)右移一位的運(yùn)算,同時(shí)讓判斷單元603判斷點(diǎn)乘運(yùn)算過程中 應(yīng)該循環(huán)的次數(shù)是否達(dá)到設(shè)定值,若達(dá)到,則輸出單元612直接輸出q作為點(diǎn) 乘運(yùn)算的最終結(jié)果;否則,由第一循環(huán)左移單元604和第二循環(huán)左移單元606 對(duì)元素&和元素&分別執(zhí)行左移一位的運(yùn)算,輸出運(yùn)算結(jié)果分別為元素和 元素d。第二 "與"邏輯單元605對(duì)A+,元素和元素^執(zhí)行"與"運(yùn)算,輸出 運(yùn)算結(jié)果為元素《;第三"與"邏輯單元607對(duì)元素Z^和元素aj丸行"與" 運(yùn)算,輸出運(yùn)算結(jié)果為元素《'。第一 "異或"邏輯單元608對(duì)元素《和元素《' 執(zhí)行"異或"運(yùn)算,輸出運(yùn)算結(jié)果為元素&。第二循環(huán)右移單元609對(duì)元素^ 執(zhí)行循環(huán)右移/: (G由公式(3.1)決定)位,輸出運(yùn)算結(jié)果為元素/V;第三 循環(huán)右移單元610對(duì)元素&執(zhí)行循環(huán)右移((。由/^式(3.1)決定)位,輸出 運(yùn)算結(jié)果為元素A。第二 "異或"邏輯單元611對(duì)元素A、 A'和q執(zhí)行"異 或,,(A①/V0q )運(yùn)算,得到運(yùn)算結(jié)果為元素&+1,同時(shí),判斷單元612判 斷點(diǎn)乘運(yùn)算過程中應(yīng)該循環(huán)的次數(shù)是否達(dá)到設(shè)定值,若達(dá)到,則輸出單元612 直接輸出c^作為元素^和元素^點(diǎn)乘運(yùn)算的最終結(jié)果c;否則,第一循環(huán)左移單元604及其以后的各單元再次對(duì)各單元的輸出結(jié)果進(jìn)行處理,直至點(diǎn)乘運(yùn)算 過程中應(yīng)該循環(huán)的次數(shù)達(dá)到設(shè)定值。本發(fā)明通過將IEEE標(biāo)準(zhǔn)中高斯基域乘法公式q = U",(,+D^(^,)優(yōu)化為<formula>formula see original document page 19</formula>制時(shí),使得基于II型高斯基域的Montgomery算法中,對(duì)于密鑰長(zhǎng)度為m的密 鑰,完成一次基域乘法只需要進(jìn)行2m+l次循環(huán)移位(其中包括循環(huán)移一位m+l次,循環(huán)移A:位m次)、1.5w次向量的"異或"運(yùn)算和m次向量的"與"運(yùn)算, 顯著節(jié)省了計(jì)算資源。由于耗時(shí)最多的基域元素的點(diǎn)乘運(yùn)算得到優(yōu)化,本發(fā)明 進(jìn)行一次ECC加解密過程只需要143.8毫秒,與現(xiàn)有技術(shù)進(jìn)行一次ECC加解 密過程需要351毫秒相比,速度提高了2倍多。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā) 明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明 的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種基于II型高斯基域的橢圓曲線加密方法,其特征在于,所述方法包括以下步驟輸入指令,獲取公鑰Db和生成元P;生成隨機(jī)數(shù)k1;計(jì)算K1P和k1Db的值;以R=k1Db為加密密鑰對(duì)嵌入至橢圓曲線上的明文信息進(jìn)行加密,并將k1P和加密所得密文發(fā)送給解密方。
2、 如權(quán)利要求1所述的基于II型高斯基域的橢圓曲線加密方法,其特征在于,所述計(jì)算y^P和&A的值步驟包括 初始化所述橢圓曲線參數(shù);選擇高斯基域作為橢圓曲線點(diǎn)乘運(yùn)算時(shí)的有限域,利用Montgomery算法 計(jì)算A^和^ZV其中,采用快速高斯基域點(diǎn)乘方法計(jì)算高斯基域上元素之間的點(diǎn)乘。
3、 如權(quán)利要求2所述的基于n型高斯基域的橢圓曲線加密方法,其特征在于,所述快速高斯基域點(diǎn)乘方法包括 輸入高斯基域元素&和元素^ ;對(duì)元素^和元素^執(zhí)行"與"邏輯運(yùn)算,所得運(yùn)算結(jié)果暫時(shí)保存于元素q中;對(duì)元素q執(zhí)行循環(huán)右移一位的運(yùn)算,判斷(m-l)/2是否大于其中,所 述w為基于二進(jìn)制多項(xiàng)式域GF(2"上的橢圓曲線密鑰長(zhǎng)度,A:為整數(shù)一變量, 其初值為0;對(duì)元素a,和元素^分別執(zhí)行循環(huán)左移一位的運(yùn)算,得到元素和元素、;對(duì)"^元素和元素^執(zhí)行"與"邏輯運(yùn)算,得到元素《,對(duì)元素&+1和元素^執(zhí)行"與"邏輯運(yùn)算,得到元素《';對(duì)元素《和元素《'執(zhí)行"異或"邏輯運(yùn)算,得到元素&; 對(duì)元素^執(zhí)行循環(huán)右移。位和循環(huán)右移^位運(yùn)算,分別得到元素a和元素—。=— F(A:))%w,0 < yt < mA',其中,所述。和^.由/>式。'=(_/-")%附,附"< p一2 , w ^ 1決定,F(xiàn)為高斯基域乘法下標(biāo)序列,m為基于二進(jìn)制多項(xiàng)式域GF(2")上的橢圓 曲線密鑰長(zhǎng)度;對(duì)元素A、元素A'和元素q執(zhí)行"異或"邏輯運(yùn)算,得到運(yùn)算結(jié)果q+,, 同時(shí),變量A:做自增1運(yùn)算,并比較o-1)/2和A:的大小關(guān)系,若(w-1)/2大 于A:,則開始新的運(yùn)算,否則,將q+,作為元素A和元素^點(diǎn)乘運(yùn)算的最終結(jié)果 輸出。
4、 如權(quán)利要求1所述的基于II型高斯基域的橢圓曲線加密方法,其特征在 于,所述對(duì)嵌入至橢圓曲線上的明文信息進(jìn)行加密是以AES算法對(duì)嵌入至橢圓 曲線上的明文信息進(jìn)行加密。
5、 一種基于II型高斯基域的橢圓曲線解密方法,其特征在于,所述方法包 括以下步驟輸入指令,獲取私鑰zv并生成隨機(jī)數(shù)&; 接收加密方發(fā)送的密文和^尸; 選擇與加密方同樣的橢圓曲線; 計(jì)算A:^尸;以/ 2= A人尸為解密密鑰,對(duì)密文進(jìn)行解密,得到信息的明文。
6、 如權(quán)利要求5所述的基于II型高斯基域的橢圓曲線解密方法,其特征在 于,所述計(jì)算A:人尸是采用Montgomery算法計(jì)算A:^戶,所述Montgomery算法 包括采用快速高斯基域點(diǎn)乘方法計(jì)算高斯基域上元素之間的點(diǎn)乘。
7、如權(quán)利要求6所述的基于n型高斯基域的橢圓曲線解密方法,其特征在于,所述快速高斯基域點(diǎn)乘方法計(jì)算高斯基域上元素之間的點(diǎn)乘的步驟包括 輸入高斯基域元素&和元素^ ;對(duì)元素^和元素^執(zhí)行"與"邏輯運(yùn)算,所得運(yùn)算結(jié)果暫時(shí)保存于元素q中;對(duì)元素q執(zhí)行循環(huán)右移一位的運(yùn)算,判斷(m-l)/2是否大于A:,其中,所 述m為基于二進(jìn)制多項(xiàng)式域GF(2"")上的橢圓曲線密鑰長(zhǎng)度,A:為一整數(shù)變量, 其初Y直為0;對(duì)元素&和元素^分別執(zhí)行循環(huán)左移一位的運(yùn)算,得到元素和元素、;對(duì)"^元素和元素^執(zhí)行"與"邏輯運(yùn)算,得到元素《,對(duì)元素^和元素^執(zhí)行"與"邏輯運(yùn)算,得到元素《';對(duì)元素《和元素《'執(zhí)行"異或"邏輯運(yùn)算,得到元素&;對(duì)元素&執(zhí)行循環(huán)右移。位和循環(huán)右移亡位運(yùn)算,分別得到元素a和元素,=C/ —,O》%m,0 < A: < w ,=(J.—尸(J —")o/ow,附S A: </ —2 , M P/V,其中,所述(和^由公式?jīng)Q定,F(xiàn)為高斯基域乘法下標(biāo)序列,m為基于二進(jìn)制多項(xiàng)式域GF(2")上的橢圓 曲線密鑰長(zhǎng)度;對(duì)元素a、元素/V和元素q執(zhí)行"異或"邏輯運(yùn)算,得到運(yùn)算結(jié)果^+1, 同時(shí),變量A:做自增1運(yùn)算,并比較(m-l)/2和A的大小關(guān)系,若0-l)/2大 于A:,則開始新的運(yùn)算,否則,將c^作為元素^和元素^點(diǎn)乘運(yùn)算的最終結(jié)果 輸出。
8、如權(quán)利要求5所述的基于n型高斯基域的橢圓曲線解密方法,其特征在于,所述以A = ^、P為解密密鑰,對(duì)密文進(jìn)行解密是以及2 = A:A尸為解密密 鑰,采用AES算法的逆算法對(duì)密文進(jìn)行解密。
9、 一種基于II型高斯基域的橢圓曲線加密裝置,包括Montgomery算法模 塊和加密模塊,其特征在于,所述Montgomery算法模塊用于計(jì)算隨機(jī)數(shù)^與生成元戶和加密方的7>鑰A的乘積^P和&A,輸出密鑰^ = AA和A尸,所 述加密模塊用于接收明文信息輸入,并根據(jù)所述Montgomery算法模塊輸出的 密鑰i ,對(duì)明文信息使用AES算法加密。
10、 如權(quán)利要求9所述的基于II型高斯基域的橢圓曲線加密裝置,其特征 在于,所述裝置進(jìn)一步包括參數(shù)獲取模塊,用于獲取生成元尸和加密方的公鑰A并輸出至所述 Montgomery算法模塊;隨機(jī)數(shù)生成模塊,用于生成一個(gè)隨機(jī)數(shù)^并輸出至所述Montgomery算法模塊;發(fā)送模塊,用于將所述加密模塊輸出的密文和所述Montgomery算法模塊 輸出的^尸發(fā)送至解密方。
11 、如權(quán)利要求9所述的基于II型高斯基域的橢圓曲線加密裝置,其特征 在于,所述Montgomery算法模塊至少包括用于II型高斯基域上元素點(diǎn)乘運(yùn)算 的II型高斯基域點(diǎn)乘模塊,所述II型高斯基域點(diǎn)乘模塊具體包括第一 "與,,邏輯單元,用于對(duì)II型高斯基域元素A和^執(zhí)行首次"與"運(yùn)算,得到運(yùn)算結(jié)果為高斯基域元素q;第一循環(huán)右移單元,用于對(duì)所述第一 "與"邏輯單元輸出的q執(zhí)行循環(huán)右 移一位的運(yùn)算;第一循環(huán)左移單元,用于對(duì)元素a,執(zhí)行左移一位的運(yùn)算,輸出運(yùn)算結(jié)果為 元素^+1;第二循環(huán)左移單元,用于對(duì)元素^執(zhí)行左移一位的運(yùn)算,輸出運(yùn)算結(jié)果為元素d;第二 "與"邏輯單元,用于對(duì)元素A+,和元素h執(zhí)行"與"運(yùn)算,輸出運(yùn)算結(jié)果為元素《;第三"與"邏輯單元,用于對(duì)元素^+1和元素^執(zhí)行"與"運(yùn)算,輸出運(yùn) 算結(jié)果為元素《';第一 "異或"邏輯單元,用于對(duì)元素《和元素《'執(zhí)行"異或"運(yùn)算,輸出 運(yùn)算結(jié)果為元素^;第二循環(huán)右移單元,用于對(duì)元素^執(zhí)行循環(huán)右移^位運(yùn)算,輸出運(yùn)算結(jié)果為元素A';第三循環(huán)右移單元,用于對(duì)元素&執(zhí)行循環(huán)右移^位運(yùn)算,輸出運(yùn)算結(jié)果 為元素&;第二 "異或"邏輯單元,用于對(duì)元素& 、 ;V和q執(zhí)行"異或"(&④;V十q )運(yùn)算,得到運(yùn)算結(jié)果為元素^+1;輸出單元,用于輸出元素a和元素^點(diǎn)乘運(yùn)算的最終結(jié)果;判斷單元,用于判斷點(diǎn)乘運(yùn)算過程中應(yīng)該循環(huán)的次數(shù)是否達(dá)到設(shè)定值,若達(dá)到,則所述輸出單元直接輸出cA+1作為元素&和元素^點(diǎn)乘運(yùn)算的最終結(jié)果行處理,直至點(diǎn)乘運(yùn)算過程中應(yīng)該循環(huán)的次數(shù)達(dá)到設(shè)定值; 其中,所述r和廣由公<formula>formula see original document page 6</formula>決定,其中F為高斯基域乘法下標(biāo)序列,m為基于二進(jìn)制多項(xiàng)式咸GF(2"上的橢 圓曲線密鑰長(zhǎng)度。
12、 一種基于II型高斯基域的橢圓曲線解密裝置,包括Montgomery算法模 塊和解密模塊,其特征在于,所述Montgomery算法模塊用于根據(jù)隨機(jī)數(shù)^和加 密方發(fā)送的&尸計(jì)算出解密密鑰<formula>formula see original document page 6</formula>,所述解密模塊用于以7 2為解密密鑰,解密加密方發(fā)送的密文。
13、 如權(quán)利要求12所述基于II型高斯基域的橢圓曲線解密裝置,其特征在于,所述裝置進(jìn)一步包括私鑰獲取模塊,用于獲取解密方的私鑰A并輸出至所述Montgomery算 法模塊;隨機(jī)數(shù)生成模塊,用于生成一個(gè)隨機(jī)數(shù)^并輸出至所述Montgomery算法模塊。
14、如權(quán)利要求12所述基于II型高斯基域的橢圓曲線解密裝置,其特征在 于,所述Montgomery算法模塊至少包括用于II型高斯基域上元素點(diǎn)乘運(yùn)算的 II型高斯基域點(diǎn)乘模塊,所述II型高斯基域點(diǎn)乘模塊具體包括第一 "與"邏輯單元,用于對(duì)II型高斯基域元素A和^執(zhí)行首次"與"運(yùn)算,得到運(yùn)算結(jié)果為高斯基域元素q;第一循環(huán)右移單元,用于對(duì)所述第一 "與"邏輯單元輸出的q執(zhí)行循環(huán)右 移一位的運(yùn)算;第一循環(huán)左移單元,用于對(duì)元素^執(zhí)行左移一位的運(yùn)算,輸出運(yùn)算結(jié)果為 元素"w;第二循環(huán)左移單元,用于對(duì)元素^執(zhí)行左移一位的運(yùn)算,輸出運(yùn)算結(jié)果為元素64+1;第二 "與"邏輯單元,用于對(duì)元素"w和元素h執(zhí)行"與"運(yùn)算,輸出運(yùn)算結(jié)果為元素《;第三"與,,邏輯單元,用于對(duì)元素d和元素^執(zhí)行"與"運(yùn)算,輸出運(yùn) 算結(jié)果為元素《';第一 "異或"邏輯單元,用于對(duì)元素《和元素《'執(zhí)行"異或"運(yùn)算,輸出 運(yùn)算結(jié)果為元素&;第二循環(huán)右移單元,用于對(duì)元素&執(zhí)行循環(huán)右移^.位運(yùn)算,輸出運(yùn)算結(jié)果為元素;V;第三循環(huán)右移單元,用于對(duì)元素&執(zhí)行循環(huán)右移。位運(yùn)算,輸出運(yùn)算結(jié)果為元素A;第二"異或,,邏輯單元,用于對(duì)元素A、 ;V和q執(zhí)行"異或"()運(yùn)算,得到運(yùn)算結(jié)果為元素&+1;輸出單元,用于輸出元素a和元素&點(diǎn)乘運(yùn)算的最終結(jié)果;判斷單元,用于判斷點(diǎn)乘運(yùn)算過程中應(yīng)該循環(huán)的次it是否達(dá)到設(shè)定值,若達(dá)到,則所述輸出單元直接輸出作為元素&和元素^點(diǎn)乘運(yùn)算的最終結(jié)果c;否則,所述第一循環(huán)左移單元及其。 行處理,直至點(diǎn)乘運(yùn)算過程中應(yīng)該循環(huán)的次數(shù)達(dá)到"&定值;<formula>formula see original document page 8</formula>其中,所述。和G由公式.1決。'=(j. — F(p —S A: < ; — 2 定,其中F為高斯基域乘法下標(biāo)序列,m為基于二進(jìn)制多項(xiàng)式域GF(2")上的橢 圓曲線密鑰長(zhǎng)度。
全文摘要
本發(fā)明適用于信息安全領(lǐng)域,提供了一種基于II型高斯基域的橢圓曲線加密方法,所述方法包括以下步驟輸入指令,獲取公鑰D<sub>b</sub>和生成元P;生成隨機(jī)數(shù)k<sub>1</sub>;計(jì)算k<sub>1</sub>P和k<sub>1</sub>D<sub>b</sub>的值;以R=k<sub>1</sub>D<sub>b</sub>為加密密鑰對(duì)嵌入至橢圓曲線上的明文信息進(jìn)行加密,并將k<sub>1</sub>P和加密所得密文發(fā)送給解密方。由于耗時(shí)最多的基域元素的點(diǎn)乘運(yùn)算得到優(yōu)化,本發(fā)明進(jìn)行一次ECC加解密過程只需要143.8毫秒,與現(xiàn)有技術(shù)進(jìn)行一次ECC加解密過程需要351毫秒相比,速度提高了2倍多。
文檔編號(hào)H04L9/32GK101567783SQ200810067009
公開日2009年10月28日 申請(qǐng)日期2008年4月24日 優(yōu)先權(quán)日2008年4月24日
發(fā)明者李輝亮, 田逢春 申請(qǐng)人:深圳市同洲電子股份有限公司