在ecc中實現(xiàn)位數(shù)自適應(yīng)模乘運算的方法及模乘運算器的制造方法
【專利摘要】本發(fā)明公開了一種在ECC中實現(xiàn)位數(shù)自適應(yīng)模乘運算的方法,包括:基于零位檢測模塊獲取輸入數(shù)據(jù)的位數(shù);根據(jù)輸入數(shù)據(jù)的位數(shù)選擇與輸入數(shù)據(jù)相接近的模乘運算檔位;基于模乘運算檔位所關(guān)聯(lián)的64位KOA并行乘法器對所述輸入數(shù)據(jù)進行運算。本發(fā)明還公開了一種ECC模乘運算器,包括:零位檢測模塊,用于獲取輸入數(shù)據(jù)的位數(shù);模乘運算檔位選擇模塊,用于根據(jù)輸入數(shù)據(jù)的位數(shù)選擇與輸入數(shù)據(jù)相接近的模乘運算檔位;模乘運算模塊,用于基于模乘運算檔位所關(guān)聯(lián)的64位KOA并行乘法器對所述輸入數(shù)據(jù)進行運算。通過本發(fā)明實施例,在原始的KOA算法進行改進,使其自動的根據(jù)輸入乘數(shù)的位數(shù)進行計算調(diào)整,以達到最優(yōu)的計算效果。
【專利說明】在ECC中實現(xiàn)位數(shù)自適應(yīng)模乘運算的方法及模乘運算器
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及橢圓曲線加密算法(ECC)【技術(shù)領(lǐng)域】,具體涉及一種在ECC中實現(xiàn)位數(shù)自適應(yīng)模乘運算的方法及模乘運算器。
【背景技術(shù)】
[0002]ECC加密算法是單位比特安全性能最高的非對稱加密算法,由于硬件實現(xiàn)ECC算法速度比軟件快很多,很多智能卡芯片、閱讀器芯片及安全芯片中,均有ECC算法的實現(xiàn)電路。隨著該算法的應(yīng)用廣泛,ECC算法實現(xiàn)的位數(shù)需要也不一樣,不同標(biāo)簽芯片在ECC加密算法位數(shù)選擇也不盡相同,為了保證安全模塊的廣泛使用性,在同一個安全模塊內(nèi)實現(xiàn)多位數(shù)的ECC加密算法。但是為了保證ECC加密算法的高速性,在基本模塊的實現(xiàn)上需要使關(guān)鍵模塊具有長度自適應(yīng)性。
[0003]ECC加密算法中最關(guān)鍵的基本的運算為模乘運算,其決定了 ECC加密算法具體實現(xiàn)時的運算速度。對于橢圓曲線中模乘算法也有三種,通常實現(xiàn)模乘算法主要直接相乘求模算法、KOA模乘算法和Montgomery模乘算法三種以及相關(guān)算法的改進。對于直接相乘求模的算法來說,雖然實現(xiàn)和算法都比較直接簡單,但其在實現(xiàn)上占用的時間和面積也是最多的。而Montgomery模乘算法雖然高效,但是當(dāng)我們只需要計算一次模乘時,需要的額外操作較多,比較適合RSA算法的模冪操作,ECC的標(biāo)量乘算法并不一直使用模乘計算,中間還會用到其它的操作,并且每一個循環(huán)周期內(nèi)都需要各種操作的組合,接下來要進行其它操作時,因此該算法在模乘算法上并不能取得高效的性能。
[0004]通常采用KOA乘法器來實現(xiàn)模乘算法。乘法器按運算周期來分,主要有串行乘法器、全并行乘法器和串并乘法器三種。對于串行乘法器來說,它通過不斷的移位運算進行實現(xiàn),該算法是以犧牲運算速度來獲取較小的實現(xiàn)面積,其實現(xiàn)面積為0(m)其實現(xiàn)速度也為O(Hl)。第二種是全并行乘法器,該乘法器是在先分別求出部分積然后再對每一部分的部分積進行累加的操作,該算法是以犧牲面積來獲取最快的運算速度,其實現(xiàn)面積為0(m2),而運算速度則為0(1)。第三種方法是串并混合乘法器,是以上兩種方法的折中,其實就是以串行乘法器的思想調(diào)用底層并行乘法器加以實現(xiàn)。其面積及計算速度都介于前面兩者中間。
[0005]KOA乘法器從理論上講,是通過多次的分治處理可以將基礎(chǔ)乘法器的數(shù)目減至到
一位,這樣算法的復(fù)雜度可以降低至。但隨著分治算法的進行,輔助操作隨之增力口,故一般分治的次數(shù)不會太多,因此必須根據(jù)實際需要進行合理設(shè)計。對于乘法器來說,串行乘法器和并行乘法器都不能在面積和速度上有很好的折合,因此目前通常采用串并乘法器來實現(xiàn)模乘器。但是位數(shù)越大的乘法器,消耗的時間越長。對于進行乘法操作的位數(shù)不是固定的情況,當(dāng)位數(shù)較低時,傳統(tǒng)的方法是采用高位補O法,補齊為最高位時再輸入乘法器進行計算。但這無疑產(chǎn)生了極大的時間浪費,特別是位數(shù)低于最高位一半時,乘法器花了一半的時間在計算無用的數(shù)。
【發(fā)明內(nèi)容】
[0006]針對以上幾種實現(xiàn)算法的不足,本發(fā)明提出了在ECC中實現(xiàn)位數(shù)自適應(yīng)模乘運算的方法及ECC模乘運算器,在原始的KOA算法進行改進,使其自動的根據(jù)輸入乘數(shù)的位數(shù)進行計算調(diào)整,以達到最優(yōu)的計算效果。
[0007]本發(fā)明提供了一種在ECC中實現(xiàn)位數(shù)自適應(yīng)模乘運算的方法,所述方法包括如下步驟:
[0008]基于零位檢測模塊獲取輸入數(shù)據(jù)的位數(shù);
[0009]根據(jù)輸入數(shù)據(jù)的位數(shù)選擇與輸入數(shù)據(jù)相接近的模乘運算檔位;
[0010]基于模乘運算檔位所關(guān)聯(lián)的64位KOA并行乘法器對所述輸入數(shù)據(jù)進行運算。
[0011 ] 所述64位KOA并行乘法器包括至少兩個或者以上串并在一起的64位KOA乘法器。
[0012]所述64位KOA乘法器由9個16位乘法器構(gòu)成。
[0013]所述64位KOA并行乘法器至少滿足512位乘法運算。
[0014]相應(yīng)的,本發(fā)明實施例還提供了一種ECC模乘運算器,包括:
[0015]零位檢測模塊,用于獲取輸入數(shù)據(jù)的位數(shù);
[0016]模乘運算檔位選擇模塊,用于根據(jù)輸入數(shù)據(jù)的位數(shù)選擇與輸入數(shù)據(jù)相接近的模乘運算檔位;
[0017]模乘運算模塊,用于基于模乘運算檔位所關(guān)聯(lián)的64位KOA并行乘法器對所述輸入數(shù)據(jù)進行運算。
[0018]所述64位KOA并行乘法器包括至少兩個或者以上串并在一起的64位KOA乘法器。
[0019]所述64位KOA乘法器由9個16位乘法器構(gòu)成。
[0020]所述64位KOA并行乘法器至少滿足512位乘法運算。
[0021]本發(fā)明可以實現(xiàn)512位數(shù)以下的長度自適應(yīng)KOA模乘算法,該算法以全并行的結(jié)構(gòu)設(shè)計了 64位的基礎(chǔ)乘法器模塊,根據(jù)硬件特點以及常見的橢圓曲線位數(shù)值,也可以設(shè)計不同的模乘運算檔位,比如192、256、320、384、448、512。乘法器對輸入的數(shù)據(jù)進行位數(shù)判斷,自適應(yīng)的選擇這六檔中最適當(dāng)?shù)拈L度進行計算。通過這種自適應(yīng)的方法,在各種位數(shù)的情況下,尤其是計算較低位數(shù)時,顯著的提高了乘法器的運算速度。
[0022]本發(fā)明的在硬件上,利用串并混合乘法器來實現(xiàn),利用KOA算法原理,把乘法運算的位數(shù)進行分治,采用全并行的64位基礎(chǔ)乘法器模塊來實現(xiàn)。而對于這64位的基礎(chǔ)乘法器模塊,采用KOA的方法,將64位的乘法器由9個16位的乘法器構(gòu)成,另外加上若干加法電路,就可以利用16位的乘法器來實現(xiàn)64位并行乘法器。為了滿足模乘算法最高位512位的要求,實現(xiàn)的模乘器必須滿足512位乘法運算,對于最高位情況,利用64位的基礎(chǔ)乘法器,通過串行的方式來實現(xiàn)最高為512的乘法器。
[0023]為了滿足模乘算法的長度自適應(yīng),根據(jù)常見的橢圓曲線加密算法ECC的位數(shù)值,把不同位數(shù)的模乘算法劃分為6個檔,通過一個狀態(tài)機來控制整個運算的流程,同時利用一個組合邏輯電路和一個寄存器來標(biāo)識輸入數(shù)據(jù)的位數(shù),根據(jù)輸入位數(shù),利用組合邏輯電路和寄存器的狀態(tài)來決定調(diào)用哪幾個64位乘法器,當(dāng)輸入的位數(shù)較少時,狀態(tài)機根據(jù)寄存器表示的狀態(tài),跳過后面所有狀態(tài)的操作,輸出運算結(jié)果。該發(fā)明雖然在犧牲掉一小部分組合邏輯電路的面積,但能在長度自適應(yīng)的同時快速的實現(xiàn)橢圓曲線模乘算法。
【專利附圖】
【附圖說明】[0024]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
[0025]圖1是本發(fā)明實施例中的在ECC中實現(xiàn)位數(shù)自適應(yīng)模乘運算的方法流程圖;
[0026]圖2是本發(fā)明實施例中的ECC模乘運算器結(jié)構(gòu)示意圖;
[0027]圖3是本發(fā)明實施例中的ECC模乘運算器功能原理結(jié)構(gòu)示意圖;
[0028]圖4是本發(fā)明實施例中的512位KOA乘法器結(jié)構(gòu)原理示意圖;
[0029]圖5是本發(fā)明實施例中的ECC模乘運算中程序運行流程圖。
【具體實施方式】
[0030]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
[0031]圖1示出了在ECC中實現(xiàn)位數(shù)自適應(yīng)模乘運算的方法流程圖,包括如下步驟:
[0032]S101、基于零位檢測模塊獲取輸入數(shù)據(jù)的位數(shù);
[0033]S102、根據(jù)輸入數(shù)據(jù)的位數(shù)選擇與輸入數(shù)據(jù)相接近的模乘運算檔位;
[0034]S103、基于模乘運算檔位所關(guān)聯(lián)的64位KOA并行乘法器對所述輸入數(shù)據(jù)進行運
笪
[0035]這里的64位KOA并行乘法器包括至少兩個或者以上串并在一起的64位KOA乘法器。64位KOA乘法器由9個16位乘法器構(gòu)成。該64位KOA并行乘法器至少滿足512位乘
法運算。
[0036]相應(yīng)的,圖2還示出了本發(fā)明實施例中的ECC模乘運算器結(jié)構(gòu)示意圖,包括:
[0037]零位檢測模塊,用于獲取輸入數(shù)據(jù)的位數(shù);
[0038]模乘運算檔位選擇模塊,用于根據(jù)輸入數(shù)據(jù)的位數(shù)選擇與輸入數(shù)據(jù)相接近的模乘運算檔位;
[0039]模乘運算模塊,用于基于模乘運算檔位所關(guān)聯(lián)的64位KOA并行乘法器對所述輸入數(shù)據(jù)進行運算。
[0040]需要說明的是,該64位KOA并行乘法器包括至少兩個或者以上串并在一起的64位KOA乘法器。該64位KOA乘法器由9個16位乘法器構(gòu)成。該64位KOA并行乘法器至少滿足512位乘法運算。
[0041]本發(fā)明可以實現(xiàn)512位數(shù)以下的長度自適應(yīng)KOA模乘算法,該算法以全并行的結(jié)構(gòu)設(shè)計了 64位的基礎(chǔ)乘法器模塊,根據(jù)硬件特點以及常見的橢圓曲線位數(shù)值,也可以設(shè)計不同的模乘運算檔位,比如192、256、320、384、448、512。乘法器對輸入的數(shù)據(jù)進行位數(shù)判斷,自適應(yīng)的選擇這六檔中最適當(dāng)?shù)拈L度進行計算。通過這種自適應(yīng)的方法,在各種位數(shù)的情況下,尤其是計算較低位數(shù)時,顯著的提高了乘法器的運算速度。當(dāng)然根據(jù)根據(jù)這種串并原理,其可以滿足不同位數(shù)的長度適應(yīng)性KOA模乘運算,也不限于512位數(shù)的運算。
[0042]本發(fā)明的在硬件上,利用串并混合乘法器來實現(xiàn),利用KOA算法原理,把乘法運算的位數(shù)進行分治,采用全并行的64位基礎(chǔ)乘法器模塊來實現(xiàn)。而對于這64位的基礎(chǔ)乘法器模塊,采用KOA的方法,將64位的乘法器由9個16位的乘法器構(gòu)成,另外加上若干加法電路,就可以利用16位的乘法器來實現(xiàn)64位并行乘法器。為了滿足模乘算法最高位512位的要求,實現(xiàn)的模乘器必須滿足512位乘法運算,對于最高位情況,利用64位的基礎(chǔ)乘法器,通過串行的方式來實現(xiàn)最高為512的乘法器。
[0043]為了滿足模乘算法的長度自適應(yīng),根據(jù)常見的橢圓曲線加密算法ECC的位數(shù)值,把不同位數(shù)的模乘算法劃分為6個檔,通過一個狀態(tài)機來控制整個運算的流程,同時利用一個組合邏輯電路和一個寄存器來標(biāo)識輸入數(shù)據(jù)的位數(shù),根據(jù)輸入位數(shù),利用組合邏輯電路和寄存器的狀態(tài)來決定調(diào)用哪幾個64位乘法器,當(dāng)輸入的位數(shù)較少時,狀態(tài)機根據(jù)寄存器表示的狀態(tài),跳過后面所有狀態(tài)的操作,輸出運算結(jié)果。該發(fā)明雖然在犧牲掉一小部分組合邏輯電路的面積,但能在長度自適應(yīng)的同時快速的實現(xiàn)橢圓曲線模乘算法。
[0044]相應(yīng)的,圖3示出了本發(fā)明實施例中的ECC模乘運算器功能原理結(jié)構(gòu)示意圖,主要包括一個控制狀態(tài)機、I個寄存器組、2個零位檢測模塊以及乘法位數(shù)選擇模塊、數(shù)據(jù)選擇模塊、64位KOA并行乘法器模塊。本發(fā)明主要利用狀態(tài)機來控制整個算法的計算流程,通過零位檢測模塊來判斷輸入數(shù)據(jù)的位數(shù),根據(jù)輸入數(shù)據(jù)位數(shù),利用乘法位數(shù)選擇模塊來選擇與輸入數(shù)據(jù)位數(shù)相接近的檔,并和數(shù)據(jù)選擇模塊共同利用控制狀態(tài)機來控制當(dāng)前模乘算法的執(zhí)行,合理的跳出不需要執(zhí)行的算法狀態(tài),通過寄存器和64位KOA并行乘法器暫存運算結(jié)果和計算。當(dāng)運算結(jié)束后通過接口輸出運算結(jié)果。
[0045]具體來說,零位檢測器來判斷輸入位數(shù),通過乘法位數(shù)選擇模塊和數(shù)據(jù)選擇模塊進行模乘算法運算的檔的選擇,根據(jù)檔的選擇,通過狀態(tài)機調(diào)用64位KOA并行乘法器模塊串行實現(xiàn)模乘算法,在位數(shù)不固定的情況下,每次都能合理選擇串行乘法的位數(shù),跳出后面無須執(zhí)行的狀態(tài),實現(xiàn)長度自適應(yīng)的快速模乘算法。
[0046]圖4示出了本發(fā)明實施例中的512位KOA乘法器結(jié)構(gòu)原理圖,該64位KOA乘法器由9個16位乘法器構(gòu)成。該64位KOA并行乘法器至少滿足512位乘法運算。利用串并混合乘法器來實現(xiàn),利用KOA算法原理,把乘法運算的位數(shù)進行分治,采用全并行的64位基礎(chǔ)乘法器模塊來實現(xiàn)。而對于這64位的基礎(chǔ)乘法器模塊,采用KOA的方法,將64位的乘法器由9個16位的乘法器構(gòu)成,另外加上若干加法電路,就可以利用16位的乘法器來實現(xiàn)64位并行乘法器。為了滿足模乘算法最高位512位的要求,實現(xiàn)的模乘器必須滿足512位乘法運算,對于最高位情況,利用64位的基礎(chǔ)乘法器,通過串行的方式來實現(xiàn)最高為512的乘法器。
[0047]在乘法器具體的實現(xiàn)過程中,定義wire類型的數(shù)組isZero[0..4],每一位反映寬度為64位的兩個乘數(shù)的輸入的數(shù)據(jù)段是否全為0,例如isZero[4]表示最高64位,由組合邏輯電路確定該數(shù)組的值。用wire類型的數(shù)組isSkip [0..4]表示寬度為64位的兩個乘數(shù)部分計算可否跳過。則有,當(dāng)isSkip[i+l]為I且isZero[i]為I時,isSkip[i]為I。此處組合邏輯電路大約占整個乘法器面積的1/20,不會太影響乘法器的面積。完成整個乘法器的計算需要一個小狀態(tài)機,用來控制數(shù)據(jù)流程。在設(shè)計中,我們將狀態(tài)機的計算順序加以優(yōu)化,使得狀態(tài)機可以根據(jù)isSkip的值正確的跳過一些狀態(tài)操作。例如,若isZero[0..4]=01111,也就是說,輸入的兩個乘數(shù)最高256位都為0,192-256位不全為0,isSkip [0..4]=01111當(dāng)前乘法器最佳長度為256位。狀態(tài)機經(jīng)過多次狀態(tài)轉(zhuǎn)換后,會根據(jù)isSkip的值,跳過后面所有狀態(tài)的操作,輸出運算結(jié)果。其狀態(tài)流程圖如圖5所示。
[0048]本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括:只讀存儲器(ROM,Read Only Memory)、隨機存取存儲器(RAM,RandomAccess Memory)、磁盤或光盤等。
[0049]以上對本發(fā)明實施例所提供的在ECC中實現(xiàn)位數(shù)自適應(yīng)模乘運算的方法及模乘運算器進行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實施方式】及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
【權(quán)利要求】
1.一種在ECC中實現(xiàn)位數(shù)自適應(yīng)模乘運算的方法,其特征在于,所述方法包括如下步驟: 基于零位檢測模塊獲取輸入數(shù)據(jù)的位數(shù); 根據(jù)輸入數(shù)據(jù)的位數(shù)選擇與輸入數(shù)據(jù)相接近的模乘運算檔位; 基于模乘運算檔位所關(guān)聯(lián)的64位KOA并行乘法器對所述輸入數(shù)據(jù)進行運算。
2.如權(quán)利要求1所述的在ECC中實現(xiàn)位數(shù)自適應(yīng)模乘運算的方法,其特征在于,所述64位KOA并行乘法器包括至少兩個或者以上串并在一起的64位KOA乘法器。
3.如權(quán)利要求2所述的在ECC中實現(xiàn)位數(shù)自適應(yīng)模乘運算的方法,其特征在于,所述64位KOA乘法器由9個16位乘法器構(gòu)成。
4.如權(quán)利要求3所述的ECC中實現(xiàn)位數(shù)自適應(yīng)模乘運算的方法,其特征在于,所述64位KOA并行乘法器至少滿足512位乘法運算。
5.一種ECC模乘運算器,其特征在于,包括: 零位檢測模塊,用于獲取輸入數(shù)據(jù)的位數(shù); 模乘運算檔位選擇模塊,用于根據(jù)輸入數(shù)據(jù)的位數(shù)選擇與輸入數(shù)據(jù)相接近的模乘運算檔位; 模乘運算模塊,用于基于模乘運算檔位所關(guān)聯(lián)的64位KOA并行乘法器對所述輸入數(shù)據(jù)進行運算。
6.如權(quán)利要求5所述的ECC模乘運算器,其特征在于,所述64位KOA并行乘法器包括至少兩個或者以上串并在一起的64位KOA乘法器。
7.如權(quán)利要求6所述的ECC模乘運算器,其特征在于,所述64位KOA乘法器由9個16位乘法器構(gòu)成。
8.如權(quán)利要求7所述的ECC模乘運算器,其特征在于,所述64位KOA并行乘法器至少滿足512位乘法運算。
【文檔編號】G06F7/72GK103970504SQ201410191201
【公開日】2014年8月6日 申請日期:2014年5月7日 優(yōu)先權(quán)日:2014年5月7日
【發(fā)明者】胡建國, 黃晴晴, 李仕仁, 譚宇泉, 白小楠 申請人:廣東順德中山大學(xué)卡內(nèi)基梅隆大學(xué)國際聯(lián)合研究院, 中山大學(xué), 胡建國