專利名稱:基于ucps協(xié)議的快速模乘方法及硬件實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多媒體領(lǐng)域,特別是涉及一種基于UCPS協(xié)議的快速模乘方法。本發(fā)明還涉及一種基于UCPS協(xié)議的快速模硬件實(shí)現(xiàn)方法。
背景技術(shù):
為繞開國(guó)外HDCP(High-bandwidth Digital Content Protection高帶寬數(shù)字內(nèi)容保護(hù)規(guī)范)的技術(shù)專利壁壘,同時(shí)也為適應(yīng)中國(guó)這個(gè)龐大的數(shù)字多媒體市場(chǎng)的開發(fā),我國(guó)提出了統(tǒng)一數(shù)字保護(hù)協(xié)議,簡(jiǎn)稱UCPS(Unified Content Protection System)協(xié)議,它是我國(guó)提出的具有自主知識(shí)產(chǎn)權(quán)的數(shù)字保護(hù)協(xié)議,該協(xié)議可以用在從便攜式多媒體設(shè)備到高清數(shù)字電視的各種多媒體設(shè)備上。
UCPS協(xié)議中最耗費(fèi)運(yùn)算時(shí)間的是數(shù)字簽各部分,橢圓曲線密碼體系(Elliptic Curve CryptographyECC)標(biāo)量乘是數(shù)字簽名的核心部分,而模乘又是其中的基本單元,所以模乘的速度關(guān)乎到整個(gè)協(xié)議性能優(yōu)越與否的關(guān)鍵。
模乘是乘數(shù)與被乘數(shù)相乘得出乘積后對(duì)某個(gè)素?cái)?shù)求模運(yùn)算(即求余數(shù)),即q=a×b mod n。在一般情況下多采用蒙格馬利模乘。但是由于蒙格馬利模乘是一種通用模乘方法,軟硬件實(shí)現(xiàn)成本大,即便是進(jìn)行優(yōu)化也會(huì)保持原有的框架,實(shí)現(xiàn)代價(jià)還是不會(huì)有很明顯的減少,因此,提高和改善模乘速度和性能勢(shì)在必行。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種基于UCPS協(xié)議的快速模乘方法,硬件實(shí)現(xiàn)方法,能夠有效提高模乘的計(jì)算速度,而且簡(jiǎn)單易行;為此,本發(fā)明還要提供一種基于UCPS協(xié)議的快速模硬件實(shí)現(xiàn)方法。
為解決上述技術(shù)問題,本發(fā)明的基于UCPS協(xié)議的快速模乘方法,是在現(xiàn)有的移位-加算法的基礎(chǔ)上,將每次移位1比特位,改為將每次移位16比特位,將加法器轉(zhuǎn)化為減法器; 設(shè),輸入 192位x,y 192位模值n; 輸出 xy mod n; 具體實(shí)現(xiàn)的步驟如下 步驟1、初始化x`=y(tǒng)[191:176]×x; 步驟2、令i從12到1循環(huán), x`[192:0]=x`[191:0]+x`[209:192]×(~n)//~n表示n的補(bǔ)碼, x`=x`<<16, s=x`+y[(i×16-1):(i-1)×16]×x; 步驟3、s=x`[191:0]+x`[209:192]×(~n); 步驟4、若(s[192]=1),則s=s+(~n); 步驟5、返回s; 其中n=ffffffffffffffffffffffffffffffffffffffffffffefff,x`,x,y,n,s均為192比特位數(shù),i為0-191的整數(shù)。
本發(fā)明的基于UCPS協(xié)議的快速模乘硬件實(shí)現(xiàn)方法是采用兩級(jí)流水線結(jié)構(gòu); 第一級(jí)流水線為相乘流水線,計(jì)算y[(i×16-1):(i-1)×16]×x; 第二級(jí)流水線為取模流水線,計(jì)算x`[191:0]+x`[209:192]×(~n); 基本運(yùn)算單元為16位乘法器和16位加法器,將192比特位×16比特位運(yùn)算分解為12次16比特位×16比特位運(yùn)算;192比特位+192比特位運(yùn)算分解為12次16比特位+16比特位運(yùn)算,其中x`,x,y,n均為192比特位數(shù),i為0-191的整數(shù)。
本發(fā)明根據(jù)UCPS協(xié)議中橢圓曲線密碼體系算法的一些特點(diǎn),提出了一種基于流水線的簡(jiǎn)單有效的模乘實(shí)現(xiàn)方法,該方法以16位乘法單元為基礎(chǔ)采用流水線的方式實(shí)現(xiàn),提高了計(jì)算速度,比蒙格馬利模乘平均要快4~5倍。
下面結(jié)合附圖與具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明 圖1是本發(fā)明的實(shí)現(xiàn)模乘的ECC_MM模塊框圖; 圖2是圖1所示ECC_MM模塊框圖接口時(shí)序圖; 圖3是圖1所示ECC_MM模塊框圖驗(yàn)證方案示意圖。
具體實(shí)施例方式 如前所述,模乘運(yùn)算可以采用下式表示 q=a×b mod n公式(1) 其中n=ffffffffffffffffffffffffffffffffffffffffffffefff,a、b、n、q均為192bit(比特位)數(shù)。完成一次計(jì)算需要226個(gè)時(shí)鐘周期;在SPIIIE(XILINX公司芯片編號(hào))器件上最高工作頻率達(dá)到82MHz。
實(shí)現(xiàn)公式(1)的模乘ECC_MM模塊硬件電路結(jié)構(gòu)參見圖1,其接口信號(hào)如下表1所示。
表1,ECC_MM模塊接口信號(hào)表
接口信號(hào)的時(shí)序參見圖2所示。
本發(fā)明的基于UCPS協(xié)議的快速模乘硬件實(shí)現(xiàn)方法是由移位-加算法演變而來(lái)的。移位-加算法的數(shù)學(xué)描述如下 輸入 192位x,y 192位模值n 輸出 xy mod n 具體實(shí)現(xiàn)的步驟是 步驟一、初始化x`=x,若y(191)=1,則s=x`,否則s=0; 步驟二、令i從191到0循環(huán),且使x`=x<<1, 若x`>n,則x`=x`-n, 若y(i)=1,則s=s+x`, 若>n,則s=s-n; 步驟三、返回s。
其中n=ffffffffffffffffffffffffffffffffffffffffffffefff,x`,x,y,n,s均為192bit數(shù),i為0-191的整數(shù)。
將上述算法進(jìn)行改進(jìn),由每次移位1bit(位)改為移位16bit(位),將比較器轉(zhuǎn)換為減法器(加補(bǔ)碼),其數(shù)學(xué)表達(dá)如下 輸入 192位x,y 192位模值n 輸出 xy mod n 具體實(shí)現(xiàn)的步驟是 步驟1、初始化x`=y(tǒng)[191:176]×x; 步驟2、令i從12到1循環(huán), x`[192:0]=x`[191:0]+x`[209:192]×(~n)//~n表示n的補(bǔ)碼, x`=x`<<16, s=x`+y[(i×16-1):(i-1)×16]×x, 步驟3、s=x`[191:0]+x`[209:192]×(~n); 步驟4、若(s[192]=1),則s=s+(~n); 步驟5、返回s。
上述改進(jìn)后的算法,硬件電路實(shí)現(xiàn)采用流水線的方式,基本運(yùn)算單元為16位乘法器和16位加法器。如上述表達(dá)式中將192bit×16bit運(yùn)算分解為12次16bit×16bit運(yùn)算;192bit+192bit運(yùn)算分解為12次16bit+16bit運(yùn)算。若采用兩條流水線,則取模流水線計(jì)算x`[191:0]+x`[209:192]×(~n),相乘流水線計(jì)算y[(i×16-1):(i-1)×16]×x。最佳設(shè)計(jì)情況下,改進(jìn)后的算法步驟2循環(huán)需要12*12=144時(shí)鐘周期,整個(gè)模乘需要144+12*2=168時(shí)鐘周期(步驟4要運(yùn)行2次)。
第一級(jí)流水線(相乘流水線)按16bit分組完成兩個(gè)192bit相乘計(jì)算,結(jié)果存儲(chǔ)在存儲(chǔ)單元mul_qp中。當(dāng)啟動(dòng)計(jì)算,一個(gè)時(shí)鐘脈沖信號(hào)mm_start有效時(shí),控制x(即輸入乘數(shù)mm_a)移位的計(jì)數(shù)器cnt_a和控制y(即輸入乘數(shù)mm_b)移位的計(jì)數(shù)器cnt_b清0,cnt_a計(jì)數(shù)達(dá)到16時(shí)cnt_b進(jìn)位,如取輸入乘數(shù)mm_b[191:176]乘輸入乘數(shù)mm_a時(shí),輸入乘數(shù)mm_a依次移位送輸入乘數(shù)mm_a[15:0]、mm_a[31:16]……到16位乘法器MULT16X16,當(dāng)cnt_a=11時(shí)乘法器完成16bit×192bit的計(jì)算,cnt_a=15時(shí)相乘結(jié)果完全存儲(chǔ)到存儲(chǔ)單元mul_qp中。
第二級(jí)流水線(取模流水線)對(duì)存儲(chǔ)單元mul_qp的值取模,左移16bit。取模過程為 result[191:0]=mul_qp[191:0]+mul_qp[209:192]×(~n)。
取模流水線和第一級(jí)流水線一樣,基本單元為16bit加法器和乘法器。左移16位在代碼里采用比第一級(jí)流水線時(shí)序滯后一拍實(shí)現(xiàn),因?yàn)橐粋€(gè)時(shí)鐘周期計(jì)算16bit。
本發(fā)明采用FPGA(Field Programmeble Gate Array現(xiàn)場(chǎng)可編程門陣列)進(jìn)行了驗(yàn)證,驗(yàn)證的方案參見圖3所示。由于UCPS硬件DEMO(演示板)系統(tǒng)的主控是ARM(高級(jí)精簡(jiǎn)指令控制器),所以驗(yàn)證以ARM作為主控。ARM從串口收到PC下發(fā)的命令,譯碼后向ECC_MM模塊傳送參數(shù),ECC_MM模塊計(jì)算結(jié)果通過CPU送到串口后傳到PC,PC用自帶的超級(jí)終端即可。
調(diào)試結(jié)果如下 Input A=192’h ffffffffffffffffffffffffffffffffff B=192’h0000fffffffffffffffffffffffffffffffe Output Q=192’hfffffffffffffffffffffffffffffffe0000 Input A=192’hfffffffffffffffffffffffffffffffffffffffeffe B=192’hffffffffffffffffffffffffffffffffffffffefffd Output Q=192’h00000000000000000000000000000000000000000000002 Input A=192’hffffffffffffffffffffffffffffffffffff B=192’h0000fffffffffffffffffffffffffffff Output Q=192’h000000000000000000000000000000000000000000000001 說(shuō)明采用本發(fā)明的方法計(jì)算是正確的。
以上結(jié)合具體實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,這些并非構(gòu)成對(duì)本發(fā)明的限制。在不脫離本發(fā)明原理的情況下,本領(lǐng)域的技術(shù)人員還可作出許多變形和改進(jìn),這些也應(yīng)屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種基于UCPS協(xié)議的快速模乘方法,其特征在于它是在現(xiàn)有的移位-加算法的基礎(chǔ)上,將每次移位1比特位,改為將每次移位16比特位,將加法器轉(zhuǎn)化為減法器;
設(shè),輸入192位x,y 192位模值n;
輸出xy mod n;
具體實(shí)現(xiàn)的步驟如下
步驟1、初始化x`=y(tǒng)[191:176]×x;
步驟2、令i從12到1循環(huán),
x`[192:0]=x`[191:0]+x`[209:192]×(~n)//~n表示n的補(bǔ)碼,
x`=x`<<16,
s=x`+y[(i×16-1):(i-1)×16]×x;
步驟3、s=x`[191:0]+x`[209:192]×(~n);
步驟4、若(s[192]=1),則s=s+(~n);
步驟5、返回s;
其中n=ffffffffffffffffffffffffffffffffffffffffffffefff,x`,x,y,n,s均為192比特位數(shù),i為0-191的整數(shù)。
2.一種基于UCPS協(xié)議的快速模乘硬件實(shí)現(xiàn)方法,其特征在于采用兩級(jí)流水線結(jié)構(gòu);
第一級(jí)流水線為相乘流水線,計(jì)算y[(i×16-1):(i-1)×16]×x;
第二級(jí)流水線為取模流水線,計(jì)算x`[191:0]+x`[209:192]×(~n);
基本運(yùn)算單元為16位乘法器和16位加法器,將192比特位×16比特位運(yùn)算分解為12次16比特位×16比特位運(yùn)算;192比特位+192比特位運(yùn)算分解為12次16比特位+16比特位運(yùn)算,其中x`,x,y,n均為192比特位數(shù),i為0-191的整數(shù)。
3.如權(quán)利要求2所述的方法,其特征在于
第一級(jí)流水線按16比特位分組完成兩個(gè)192比特位相乘計(jì)算,結(jié)果存儲(chǔ)在存儲(chǔ)單元mul_qp中;當(dāng)啟動(dòng)計(jì)算,一個(gè)時(shí)鐘脈沖信號(hào)mm_start有效時(shí),控制x移位的計(jì)數(shù)器cnt_a和控制y移位的計(jì)數(shù)器cnt_b清0,cnt_a計(jì)數(shù)達(dá)到16時(shí)cnt_b進(jìn)位;如果取輸入乘數(shù)mm_b[191:176]乘輸入乘數(shù)mm_a時(shí),輸入乘數(shù)mm_a依次移位送輸入乘數(shù)mm_a[15:0]、mm_a[31:16]……到16位乘法器MULT16X16,cnt_a=11時(shí)乘法器完成16比特位×192比特位的計(jì)算,cnt_a=15時(shí)相乘結(jié)果完全存儲(chǔ)到存儲(chǔ)單元mul_qp中;
第二級(jí)流水線對(duì)存儲(chǔ)單元mul_qp的值取模,左移16bit,取模過程為result[191:0]=mul_qp[191:0]+mul_qp[209:192]×(~n)。
全文摘要
本發(fā)明公開了一種基于UCPS協(xié)議的快速模乘方法,它是在現(xiàn)有的移位-加算法的基礎(chǔ)上,將每次移位1比特位,改為將每次移位16比特位,將加法器轉(zhuǎn)化為減法器。本發(fā)明還公開了一種基于UCPS協(xié)議的快速模乘硬件實(shí)現(xiàn)方法,采用兩級(jí)流水線結(jié)構(gòu);第一級(jí)流水線為相乘流水線,計(jì)算y[(i×16-1):(i-1)×16]×x;第二級(jí)流水線為取模流水線,計(jì)算x`[191:0]+x`[209:192]×(~n);基本運(yùn)算單元為16位乘法器和16位加法器,將192bit×16bit運(yùn)算分解為12次16bit×16bit運(yùn)算;192bit+192bit運(yùn)算分解為12次16bit+16bit運(yùn)算。本發(fā)明能夠有效提高模乘的計(jì)算速度,而且簡(jiǎn)單易行。
文檔編號(hào)G06F7/72GK101763240SQ20081004418
公開日2010年6月30日 申請(qǐng)日期2008年12月25日 優(yōu)先權(quán)日2008年12月25日
發(fā)明者閔敬國(guó), 袁世強(qiáng) 申請(qǐng)人:上海華虹集成電路有限責(zé)任公司