国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      二元擴(kuò)域上SM2加密算法的實(shí)現(xiàn)方法與流程

      文檔序號(hào):11234391閱讀:2127來源:國(guó)知局
      二元擴(kuò)域上SM2加密算法的實(shí)現(xiàn)方法與流程

      本發(fā)明具體涉及二元擴(kuò)域f2m上sm2橢圓曲線公鑰密碼算法的公鑰加密算法實(shí)現(xiàn)。



      背景技術(shù):

      橢圓曲線密碼算法的快速實(shí)現(xiàn)一直是橢圓曲線密碼體制研究的重點(diǎn),基于有限域上的橢圓曲線可以實(shí)現(xiàn)數(shù)據(jù)加密等密碼方案。

      二元擴(kuò)域上橢圓曲線可以用仿射坐標(biāo)、標(biāo)準(zhǔn)射影坐標(biāo)、jacobian加重射影坐標(biāo)以及l(fā)opez&dahab射影坐標(biāo)表示,根據(jù)橢圓曲線特點(diǎn)和坐標(biāo)的具體形式對(duì)點(diǎn)加和倍點(diǎn)運(yùn)算進(jìn)行優(yōu)化,通過對(duì)幾種情況下的優(yōu)化,由圖1得到lopez&dahab射影坐標(biāo)下的點(diǎn)加和倍點(diǎn)運(yùn)算的運(yùn)算速度最快。

      多倍點(diǎn)運(yùn)算是橢圓曲線密碼算法的核心運(yùn)算。對(duì)于多倍點(diǎn)運(yùn)算的實(shí)現(xiàn)方式有很多種,其中,基于k的有符號(hào)二進(jìn)制展開的滑動(dòng)窗口算法的實(shí)現(xiàn)速度最快。

      橢圓曲線公鑰加密算法中涉及到的雜湊函數(shù)使用sm3模塊來實(shí)現(xiàn),這個(gè)模塊主要包括頂層模塊、controller控制器、消息擴(kuò)展模塊、消息壓縮模塊以及結(jié)果讀取。降低了電路開銷,總體上提升了整個(gè)算法流程的速度。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明所要解決的技術(shù)問題是:針對(duì)上述存在的問題,提供了一種二元擴(kuò)域f2m上sm2橢圓曲線公鑰密碼算法的公鑰加密算法實(shí)現(xiàn)方法,通過提高點(diǎn)乘和雜湊函數(shù)等的計(jì)算速度來有效的提升sm2公鑰加密算法的性能。

      為解決上述技術(shù)問題,本發(fā)明的sm2公鑰加密算法的實(shí)現(xiàn)方法,包括如下步驟:

      步驟一:用隨機(jī)數(shù)發(fā)生器產(chǎn)生隨機(jī)數(shù)k∈[1,n-1];

      步驟二:計(jì)算橢圓曲線點(diǎn)c1=[k]g=(x1,y1),將c1的數(shù)據(jù)類型轉(zhuǎn)換為比特串,其中g(shù)為橢圓曲線的一個(gè)基點(diǎn);

      步驟三:計(jì)算橢圓曲線點(diǎn)s=[h]pb,若s是無窮遠(yuǎn)點(diǎn),則報(bào)錯(cuò)并退出,其中pb為用戶b的公鑰;

      步驟四:計(jì)算橢圓曲線點(diǎn)s1=[k]pb=(x2,y2),將坐標(biāo)x2、y2的數(shù)據(jù)類型轉(zhuǎn)換為比特串;

      步驟五:計(jì)算t=kdf(x2∥y2,klen),若t為全0比特串,則返回步驟一,其中kdf(z,klen)為密鑰派生函數(shù),x∥為x與y的拼接;

      步驟六:計(jì)c2=m⊕t,其中⊕為長(zhǎng)度相等的兩個(gè)比特串按比特的異或運(yùn)算;

      步驟七:計(jì)算c3=hash(x2∥m∥y2),其中hash()為密碼雜湊函數(shù);

      步驟八:輸出密文c=c1∥c2∥c3。

      本發(fā)明在二元擴(kuò)域上使用ld投影坐標(biāo)運(yùn)算,對(duì)于點(diǎn)乘運(yùn)算采用快速的基于k的有符號(hào)的二進(jìn)制展開的滑動(dòng)窗口算法以及使用集成的sm3模塊計(jì)算雜湊值,可以提升sm2公鑰加密算法的性能。

      附圖說明

      下面結(jié)合附圖與具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明:

      圖1是所述sm2公鑰加密算法的實(shí)現(xiàn)方法的流程圖;

      圖2是計(jì)算c1=[k]g=(x1,y1)的流程圖。

      圖3是sm3模塊的端口設(shè)計(jì)圖。

      具體實(shí)施方式

      二元擴(kuò)域f2m上sm2橢圓曲線公鑰密碼算法的公鑰加密算法實(shí)現(xiàn)方法如圖1所示。

      步驟一:用隨機(jī)數(shù)發(fā)生器產(chǎn)生隨機(jī)數(shù)k∈[1,n-1];

      步驟二:在ld坐標(biāo)下計(jì)算橢圓曲線點(diǎn)c1=[k]g=(x1,y1),將c1的數(shù)據(jù)類型轉(zhuǎn)換為比特串;

      對(duì)于步驟二,通過如下步驟來實(shí)現(xiàn):

      步驟(1):設(shè)需要存儲(chǔ)的點(diǎn)的個(gè)數(shù)r>1,g1=g,g2=[2]g1;

      步驟(2):i從1增加到r-1計(jì)算g2i+1=c2i-1+g2,(i為控制循環(huán)的中間計(jì)算量,)步驟(3):naf(k)=(ki-1,,ki-2,k1,k0);(其中ki為隨機(jī)數(shù)k的從右數(shù)第i+1位,正整數(shù)k的寬度為w的);

      步驟(4):令j=l-1,c1=o;當(dāng)j≥0時(shí);

      (1)若kj=0,則c1=[2]c1,j=j(luò)-1;

      (2)否則:

      (2.1)令t是使且kt=1或k=-1的最小整數(shù);

      (2.2)

      (2.3)如果hj>0,否則

      (2.4)令j=t-1;(其中j,t,hj,等都是計(jì)算的中間量,l為寬度為w的naf的長(zhǎng)度);

      步驟(5):輸出c1;

      步驟(6):設(shè)是y1,從最左邊到最右邊的比特;

      設(shè)mk-1;mk-2;···;m0是m從最左邊到最右邊的字節(jié),則其中0≤i<k,當(dāng)8i+j≥m,0<j≤7時(shí),其中y1,為長(zhǎng)度為m的比特串。m為長(zhǎng)度為k的字節(jié)串,其中(頂函數(shù),大于或等于x的最小整數(shù)。)

      步驟(7):令pc=04;字節(jié)串s=pc∥x1∥y1;

      步驟(8):設(shè)sk-1,sk-2,…,s0是s從最左邊到最右邊的字節(jié);

      設(shè)是c1從最左邊到最右邊的比特,則是si右起第i-8j+1比特,其中(底函數(shù),小于或等于x的最大整數(shù)。)其中輸入s為長(zhǎng)度為k的字節(jié)串。輸出c1為長(zhǎng)度為m的比特串,其中m=8k。

      步驟三:計(jì)算橢圓曲線點(diǎn)s=[h]pb,若s是無窮遠(yuǎn)點(diǎn),則報(bào)錯(cuò)并退出;

      步驟三通過如下步驟來實(shí)現(xiàn):

      步驟(1):設(shè)需要存儲(chǔ)的點(diǎn)的個(gè)數(shù)r>1,pb1=pb,(pbi為中間量)

      步驟(2):i從1增加到r-1計(jì)算

      步驟(3):naf(h)=(hi-1,hi-2,h1,h0);

      步驟(4):令j=l-1,s=o;當(dāng)j≥0時(shí);

      (1)若hj=0,則s=[2]s,j=j(luò)-1;

      (2)否則:

      (2.1)令t是使且ht=1或ht=-1的最小整數(shù);

      (2.2)

      (2.3)如果kj>0,否則

      (2.4)令j=t-1;

      步驟(5):輸出s;

      步驟四:計(jì)算橢圓曲線點(diǎn)s1=[k]pb=(x2,y2),將坐標(biāo)x2、y2的數(shù)據(jù)類型轉(zhuǎn)換為比特串;步驟四的過程按照以下步驟計(jì)算:

      步驟(1):設(shè)需要存儲(chǔ)的點(diǎn)的個(gè)數(shù)r>1,pb1=pb,

      步驟(2):i從1增加到r-1計(jì)算

      步驟(3):naf(k)=(ki-1,,ki-2,k1,k0);

      步驟(4):令j=l-1,s1=o;當(dāng)j≥0時(shí);

      (1)若kj=0,則s1=[2]s1,j=j(luò)-1;

      (2)否則:

      (2.1)令t是使且kt=1或kt=-1的最小整數(shù);

      (2.2)

      (2.3)如果hj>0,否則

      (2.4)令j=t-1;

      步驟(5):輸出s1;

      關(guān)于對(duì)坐標(biāo)x2、y2的數(shù)據(jù)類型轉(zhuǎn)換為比特串的計(jì)算通過以下步驟來實(shí)現(xiàn):

      步驟(1):設(shè)是y2,從最左邊到最右邊的比特;

      設(shè)mk-1;mk-2;···;m0是m從最左邊到最右邊的字節(jié),則其中0≤i<k,當(dāng)8i+j≥m,0<j≤7時(shí),其中y2,為長(zhǎng)度為m的比特串。m為長(zhǎng)度為k的字節(jié)串,

      設(shè)mk-1,mk-2,…,m0是s從最左邊到最右邊的字節(jié);

      設(shè)是c2從最左邊到最右邊的比特,則是mj右起第i-8j+1比特,其中其中輸入m為長(zhǎng)度為k的字節(jié)串。輸出c2為長(zhǎng)度為m的比特串,其中m=8k。

      步驟五:計(jì)算t=kdf(x2∥y2,klen),若t為全0比特串,則返回步驟一;

      步驟六:計(jì)算c2=m⊕t;

      步驟七:計(jì)算c3=hash(x2∥m∥y2);

      步驟七的過程由以下步驟來完成:

      步驟(1):令m=x2∥m∥y2;首先將比特“1”添加到消息的末尾,再添加k個(gè)“0”,其中k是滿足l+1+k=448mod512的最小的非負(fù)整數(shù),m的長(zhǎng)度為k比特。

      步驟(2):再添加一個(gè)64位比特串,該比特串是長(zhǎng)度l的二進(jìn)制表示;[0061]步驟(3):將消息分組b(is)劃分為16個(gè)字w0,w1,…,w15。

      步驟(4):從j=16到j(luò)=67循環(huán),

      wj←p1(wj-16⊕wj-9⊕(wj-3<<15))⊕(wj-13<<7)⊕wj-6

      步驟(5):從j=0到j(luò)=63循環(huán),

      w’j←wj⊕wj+4;

      步驟(6):令a,b,c,d,e,f,g,h為字寄存器,ss1,ss2,tt1,tt2為中間變量;

      步驟(7):壓縮函數(shù)vi+1=cf(v(i),b(i)),0≤i≤n-1;

      步驟(8):abcdefgh←v(i),“←”為左向賦值運(yùn)算符

      步驟(9):從j=0到j(luò)=63循環(huán);

      ss1←((a<<12)+e+(tj<<j))<<7

      ss2←ss1⊕(a<<12)

      tt1←ffj(a,b,c)+d+ss2+w’j

      tt2←ggj(e,f,g)+h+ss1+wj

      d←c

      c←b<<9

      b←a

      a←tt1

      h←g

      g←f<<19

      f←e

      e←p0(tt2)

      v(i+1)←abcdefgh⊕v(i)

      步驟(10):對(duì)m’按512比特進(jìn)行分組:m’=b(0)b(1),…,b(n-1)其中n=(l+k+65)/512。

      步驟(11):從i=0到j(luò)=n-1循環(huán),v(i+1)=cf(v(i),b(i))

      其中cf是壓縮函數(shù),v(0)為256比特初始值iv,b(i)為填充后的消息分組,迭代壓縮的結(jié)果為v(n)

      步驟(12):abcdefgh←v(n),輸出256比特的雜湊值y=abcdefgh.

      不同坐標(biāo)系下,點(diǎn)加和倍點(diǎn)運(yùn)算的復(fù)雜度見表1,因此在ld坐標(biāo)系下計(jì)算點(diǎn)加和倍點(diǎn)復(fù)雜度最小,點(diǎn)乘運(yùn)算速度最快。

      表1

      使用sm3密碼雜湊算法進(jìn)行計(jì)算,這個(gè)步驟主要包括頂層模塊、controller控制器、消息擴(kuò)展模塊、消息壓縮模塊以及結(jié)果讀取模塊如圖3所示。其中,控制模塊采用標(biāo)準(zhǔn)的三段式fsm結(jié)構(gòu)設(shè)計(jì),控制其他模塊電路的執(zhí)行;消息擴(kuò)展模塊主要生成相應(yīng)的132個(gè)字,供后續(xù)算法壓縮電路模塊使用;消息壓鎖模塊主要實(shí)現(xiàn)消息的壓縮,并最終得到相應(yīng)的256位加密哈希值;結(jié)果讀取模塊主要實(shí)現(xiàn)從256位的結(jié)果寄存器中,以32位形式讀取與輸出。同時(shí),由于寄存器會(huì)帶來大量的面積和功耗開銷,所以為了進(jìn)一步降低功耗的開銷,使用寄存器復(fù)用的方法,盡量?jī)?yōu)化并減少了寄存器的個(gè)數(shù)。通過調(diào)度優(yōu)化,使得擴(kuò)展和壓縮模塊的進(jìn)程是可以嵌套的,這樣擴(kuò)展和壓縮模塊即可共用同一個(gè)控制器產(chǎn)生的控制信號(hào),這樣既減少了控制電路的復(fù)雜度,也降低了控制電路的開銷。

      雖然本發(fā)明披露如上,但本發(fā)明并非限定于此。任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動(dòng)與修改,因此本發(fā)明的保護(hù)范圍應(yīng)當(dāng)以權(quán)利要求所限定的范圍為準(zhǔn)。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1