新四季網

一種基於gf(2的製作方法

2023-10-06 16:48:29 1

專利名稱:一種基於gf(2的製作方法
技術領域:
本發明屬於公鑰密碼系統技術領域,具體涉及到橢圓曲線加密系統中實現GF(2n)上乘和加運算的ECC加速器電路,主要解決橢圓曲線加密/解密運算過程所必須的基於GF(2n)上的橢圓曲線離散對數運算問題,即GF(2n)上的乘和加運算問題。
背景技術:
橢圓曲線密碼(ECC)是1985年由N.Koblitz和V.Miller提出的。橢圓曲線密碼屬於公鑰密碼體制,由於其優越性能被稱為「二十一世紀的加密算法」。
在有限域GF(2n)上,橢圓曲線點集所構成的阿貝爾群上定義的離散對數系統,可以構造出基於有限域上離散對數的一些雙鑰體制。經過對橢圓曲線離散對數密碼體制長期的研究,發現其安全性優於RSA等其它公鑰密碼體制,並可以以更小的軟、硬體規模獲得相同的安全性。同時,在實現相同的安全性下,ECC所需的密鑰量比RSA少得多,ECC安全性高、運算速度快和所需軟硬體資源少的特點使它廣泛應用於無線通信、計算機網絡和IC卡等領域。
橢圓曲線加密算法簡述橢圓加密/解密運算過程基於GF(2n)上的橢圓曲線離散對數問題,其基本過程如下a)密鑰的生成使用者執行下列運算生成密鑰[1]在區間[1,n-1]中隨機選取一個整數d;[2]計算點Q=dP(d個P相,這是定義在GF(2n)橢圓曲線上的加法,它由GF(2n)上的乘、加和乘逆運算實現,這裡略去具體計算公式);[3]公開自己的公開密鑰——(E(GF(2n)),P,n,Q);[4]私鑰為整數d。
b)加密過程假定有消息m要發送給使用者,發送方執行加密操作 查找使用者的公鑰(E(GF(2n)),p,n,Q);[2]將m表示成一個域元素m∈GF(2n);[3]在區間[1,n-1]內選取一個隨機數k;[4]依據使用者的公鑰計算(x1,y1)=kP(k個P相,同樣可由GF2n上的乘、加和乘逆運算實現);[5]計算點(x2,y2)=kQ,如果x2=0,則回到第[3]步;[6]計算C=m·x2;[7]傳送加密數據(x1,y1,C)給使用者。
c)解密過程使用者收到密文(x1,y1,C)後,執行如下解密操作[1]使用私鑰d,計算點(x2,y2)=d(x1,y1),再計算GF(2n)中x2-1;[2]通過計算m=C·x2-1,恢復出明文數據m。
綜上所述,密鑰的生成、加密和解密過程其基本運算都可分解為GF(2n)上的乘、加和乘逆運算。因此橢圓曲線密碼(ECC)加速器應支持定義在GF(2n),n≤256上的乘和加運算,乘逆運算用乘運算來表示,所以對於GF(2n)上的乘、加運算的高效實現是關鍵。而GF(2n)上的乘運算通常按照從低位到高位的順序、採用移位和加法來實現,要求乘數的位數是確定的,且電路規模較大。

發明內容
本發明的目的是提供一種ECC加速器電路,作為CPU的協處理器,實現GF(2n)上的乘和加運算,通過使用精巧的體系結構來降低電路規模、解決乘數不定長問題、並提高系統運算速度。
本發明的基本功能是解決橢圓曲線加密/解密運算過程所必須的基於GF(2n)上的橢圓曲線離散對數運算問題,即GF(2n)上的乘和加運算問題。本橢圓曲線密碼(ECC)加速器支持定義在GF(2n),n≤256上的乘和加運算,運算速度為256bit×1bit/拍,也就是說在乘數及時寫入的情況下,完成256位的GF(2n)乘運算僅需要256個時鐘周期。
本發明技術解決方案一種基於GF(2n)全串行的ECC加速器電路,包括總線控制邏輯電路、ECC控制邏輯電路和ECC運算邏輯電路三個電路單元,輸入信號datain[7:0]包含數據和控制信息,連接到總線控制邏輯電路;地址信號addr[7:0]連接到總線控制邏輯電路;總線控制邏輯電路的輸出包含按字節傳輸的被乘數md[255:0]、乘數mr[7:0]以及控制信息ecc_ctrl[7:0],其中被乘數md[255:0]按字節傳輸到ECC運算邏輯電路,乘數mr[7:0]連接到ECC運算邏輯電路,控制信息ecc_ctrl[7:0]連接到ECC控制邏輯電路;ECC控制邏輯電路根據輸入控制信號進行處理後生成的ECC狀態信號ecc_state[7:0]輸出到ECC運算邏輯電路;ECC運算邏輯電路根據輸入的狀態信號對輸入數據進行處理生成的結果信號rs[255:0]連接到總線控制邏輯電路;總線控制邏輯電路輸出信號dataout[7:0];時鐘信號clk、寫信號wr_n、讀信號rd_n、片選信號cs_n、復位信號reset_n是電路的共用輸入信號。
本發明通過一個ECC加速器電路來專門實現GF(2n)上的乘、加運算,ECC加密系統的用戶密鑰長度可以根據安全性的要求進行選擇,最高支持256位。本發明採用二進位乘法從高位到低位逐位相乘的思想設計實現了ECC加速器電路。在乘運算中採用從高位到低位逐位乘並取模的方法,使乘數寄存器由256位減少到8位,並且在一個時鐘周期內完成256bit×1bit的GF(2n)乘運算(包括取模),這樣既減小了電路規模,又提高了運算速度,同時解決了乘數不定長的問題。


附圖是本發明結構框圖。
具體實施例方式
本發明採用一種新穎的算法實現了基於GF(2n)的ECC加速器電路,在電路描述上採用硬體描述語言Verilog HDL來完成。
1.電路埠說明表1電路埠信號說明


2.電路的verilog硬體描述語言<![CDATA[module ecc_top(reset_n,clk,cs_n,rd_n,wr_n,addr,datain,dataout);input reset_n;//system reset signal,active lowinput clk; //system clock,active in posedgeinput cs_n; //chip selection singal,active lowinput rd_n; //read enable singal,active lowinput wr_n; //write enable singal,active low and data issampled in its posedgeinput[2:0]addr; //address signalinput[7:0]datain;output[7:0]dataout; //data signalreg[7:0]data_out;//define internal signal herereg [7:0]ecc_state,ecc_ctrl;//external registersreg [255:0]md,rs; //multiplicand and result registersreg [7:0]mr; //multiplier registerreg [263:0]ipol; //irreducible ploynomial registerreg [4:0]current_position;//register for indication currentposition of mdreg [3:0]multiply_counter; //the counter for multiply times(<8)//-----------------------------------generate reset singal here----------------------//wire reset_all;assign reset_all=reset n ~ecc ctrl[1];]]><![CDATA[rd_after2<=1'b1; elserd_after2<=rd_after1;end//----------------------------------writing extern register here----------------------//always @(posedge clk)//writing ecc_ctrlbegin if(~reset_n) ecc_ctrl<=8'b0; else if(~cs_n addr==3'b100 ~wr_n_syn) ecc_ctrl<=datain;end//----------------------------------reading internal register here----------------------//assign dataout=(rd_n|cs_n) 8'bz:(addr==3'b100) ecc_ctrl:(addr==3'b000) ecc_state: (addr==3'b010) data_out:8'bz;//----------------------------------operating here----------------------//reg start;//a mark for start multiplicationalways@(posedge clk)begin if(~reset_all) begin ecc_state<=8'b0000_0010; md<=256'b0; ipol<=200'b0; rs<=256'b0;]]><![CDATA[ mr<=8'b0; current_position<=5'b10111; multiply_counter<=4'b0; start<=1'b0; data_out<=8'b0;endelse if(~ecc_ctrl
~ecc_state[5])begin case(ecc_ctrl[7:2]) 6'b100100://command 90H begin if(start==1'b1)start<=1'b0; md<=256'b0; current_position<=5'b10111; ecc_state<=8'b0000_0000; end 6'b100000://command 80H begin if(start==1'b1)start<=1'b0; if(current_position!=5'b10111) begin md<={md[247:0],8'b0}; current_position<=current_position+1'b1; if(current_position!=5'b10110) ecc_state<=8'b0000_0101; else ecc_state<=8'b0000_0000; end end]]><![CDATA[6'b001000://command 20Hbegin if(start==1'b1)start<=1'b0; if(~ecc_state[3]) ecc_state[7:1]<=7'b0000_100; else if(~cs_n ~rd_n_syn addr==3'b010) begin data_out<=rs[255:248]^md[255:248]; rs<={rs[247:0],8'b0}; md<={md[247:0],md[255:248]}; if(current_position==5'b10111) current_position<=5'b0; else current_position<=current_position+1'b1; if(current_position!=5'b10110) ecc_state<=8'b0000_1001; else ecc_state<=8'b0000_1000; endend6'b001001: //command 24Hbegin if(start==1'b1)start<=1'b0; if(~ecc_state[3]) ecc_state[7:1]<=7'b0000_100; else if(~cs_n ~rd_n_syn addr==3'b010) begin data_out<=rs[255:248]; rs<={rs[247:0],8'b0};]]><![CDATA[ ecc_state[7:1]<=7'b0000_100; endend6'b010000://command 40Hbegin if(~start) begin ecc_state[7:1]<=7'b0001_000; rs<=256'b0; start<=1'b1; end else if(~cs_n ~wr_n_syn addr==3'b010 ecc_state[4]) begin mr<=datain^md[255:248]; multiply_counter<=4'b0; ecc_state[7:1]<=7'b0000_010; end else if(ecc_state[2]) begin if(mr[7]) begin if((md[255:248]{ipol[263:257],1'b0})) beginif((rs[255:248]ipol[263:256]))rs<=md^ipol[255:0]^{rs[254:0],1'b0}^ipol[255:0];elsers<=md^ipol[255:0]^{rs[254:0],1'b0}; end]]><![CDATA[ else if((rs[255:248]ipol[263:256])) rs<={rs[254:0],1'b0}^ipol[255:0]^md; else rs<={rs[254:0],1'b0}^md; end else if((rs[255:248]ipol[263:256])) rs<={rs[254:0],1'b0}^ipol[255:0]; else rs<={rs[254:0],1'b0}; mr<={mr[6:0],1'b0}; multiply_counter<=multiply_counter+1'b1; if(multiply_counter!=4'b0111) ecc_state[7:1]<=7'b0000_010; else ecc_state[7:1]<=7'b0001_000; endend6'b010001://command 44Hbegin if(~start) begin ecc_state[7:1]<=7'b0001_000; rs<=256'b0; start<=1'b1; end else if(~cs_n ~wr_n_syn addr==3'b010 ecc_state[4]) begin mr<=datain; multiply_counter<=4'b0;]]><![CDATA[  ecc_state[7:1]<=7'b0000_010;   end   else if(ecc_state[2])   begin  if(mr[7])  begin   if((md[255:248]{ipol[262:256],1'b0}))   begin   if((rs[255:248]ipol[263:256]))   rs<=md^ipol[255:0]^{rs[254:0],1'b0}^ipol[255:0];   else   rs<=md^ipol[255:0]^{rs[254:0],1'b0};   end   else if((rs[255:248]ipol[263:256]))   rs<={rs[254:0],1'b0}^ipol[255:0]^md;   else   rs<={rs[254:0],1'b0}^md;  end  else if((rs[255:248]ipol[263:256]))  rs<={rs[254:0],1'b0}^ipol[255:0];  else  rs<={rs[254:0],1'b0};  mr<={mr[6:0],1'b0};  multiply_counter<=multiply_counter+1'b1;  if(multiply_counter!=4'b0111)  ecc_state[7:1]<=7'b0000_010;  else  ecc_state[7:1]<=7'b0001_000;]]><![CDATA[  endend6'b010010://command 48Hbegin if(start==1'b1)start<=1'b0; if(~ecc_state[4]) ecc_state[7:1]<=7'b0001_000; else if(~cs_n ~wr_n_syn addr==3'b010) begin   ipol<={ipol[255:0],datain^md[255:248]};   md<={md[247:0],md[255:248]};   if(current_position==5'b10111)   current_position<=5'b0;   else   current_position<=current_position+1'b1;   if(current_position!=5'b10110)   ecc_state<=8'b0001_0001;   else   ecc_state<=8'b0001_0000; endend6'b010011://command 4cHbegin if(start==1'b1)start<=1'b0; if(~ecc_state[4]) ecc_state[7:1]<=7'b0001_000; else if(~cs_n ~wr_n_syn addr==3'b010) begin   ipol<={ipol[255:0],datain};]]><![CDATA[ endend6'b010100://command 50Hbegin if(start==1'b1)start<=1'b0; if(~ecc_state[4]) ecc_state[7:1]<=7'b0001_000; else if(~cs_n ~wr_n_syn addr==3'b010) begin   md<={md[247:0],datain^md[255:248]};   if(current_position==5'b10111)   current_position<=5'b0;   else   current_position<=current_position+1'b1;   if(current_position!=5'b10110)   ecc_state<=8'b0001_0001;   else   ecc_state<=8'b0001_0000; endend6'b010101://command 54Hbegin if(start==1'b1)start<=1'b0; if(~ecc_state[4]) ecc_state[7:1]<=7'b0001_000; else if(~cs_n ~wr_n_syn addr==3'b010) begin   md<={md[247:0],datain};   if(current_position==5'b10111)]]>3.電路工作原理說明ECC加速器電路包含總線控制邏輯電路、ECC控制邏輯電路和ECC運算邏輯電路三個電路單元。總線控制邏輯電路控制CPU對三個專門功能寄存器(ECC控制寄存器、ECC狀態寄存器和ECC數據寄存器)的直接讀寫操作;同時根據ECC控制寄存器的命令通過ECC數據寄存器完成對四個ECC內部寄存器(被乘數寄存器、乘數寄存器、不可規約多項式寄存器和結果寄存器)的間接讀寫操作。ECC控制邏輯電路根據CPU寫入ECC控制寄存器的指令(共12條),控制ECC完成各種相應操作;ECC運算邏輯電路根據CPU寫入ECC控制寄存器的指令,通過精巧的體系結構設計使其在一個時鐘周期內完成256bit×1bit的GF2n乘運算(包括取摸),也就是說在乘數及時寫入的情況下在256個時鐘周期內完成256位的GF(2n)乘運算。
(1)在總線控制邏輯電路中主處理器和ECC加速器之間是通過8位的數據總線來進行數據交換的。主處理器可以將命令和數據以同步方式直接寫入ECC控制寄存器和ECC數據寄存器,並通過讀出ECC狀態寄存器來監測加速器的工作狀態。
(2)被乘數寄存器是一個32位元組的可讀可寫間接訪問寄存器。通過「寫被乘數寄存器」指令連續32個時鐘節拍將8位的ECC數據寄存器的內容左移入被乘數寄存器。執行「寫被乘數寄存器同時實現加運算」指令時,待寫入ECC數據寄存器的8位數據先和原被乘數寄存器的相應位進行GF(2n)上的加運算(異或)再間接寫入被乘數寄存器。「復位被乘數寄存器」將左移過的被乘數寄存器移位到復位後的原始位置。「擦除被乘數寄存器」指令在一個時鐘周期內將被乘數寄存器的32個字節復位為全0(3)不可規約多項式寄存器是一個33位元組的只寫間接訪問寄存器。通過「寫不可規約多項式」指令連續33個時鐘節拍將8位的ECC數據寄存器的內容左移入不可規約多項式寄存器。不可規約多項式寄存器的最高字節有效地指示了不可規約多項式,非0最高位的位置,這樣大大提高了計算效率。需要特別說明的是,ECC加速器中GF(2n)上的乘運算是左對齊進行的。
(4)乘數寄存器是一個8位的只寫間接訪問寄存器。通過「寫乘數寄存器並啟動乘運算」指令可以將ECC數據寄存器的內容一次寫入乘數寄存器,並在後續的8個時鐘周期內每拍完成一個256bit×1bit的GF(2n)乘運算(包括取模)。本設計採用全串行結構來完成GF(2n)上的乘運算,一方面電路結構簡單,晶片面積小;另一方面可以適應乘數不定長的情況,使用靈活。每8位運算之間還可以插入「空操作」指令,來對抗功耗分析。乘運算可以通過「結束乘運算」或除「寫乘數寄存器並啟動乘運算」指令外的其它任何指令來結束。
(5)結果寄存器是一個32位元組的只讀間接訪問寄存器。通過「讀結果寄存器」指令可以連續32個時鐘節拍將8位的運算結果寫入ECC數據寄存器。「讀結果寄存器同時實現加運算」指令將運算結果和被乘數寄存器的相應位進行GF(2n)上的加運算(異或)再間接讀出。為了豐富處理手段,ECC加速器還提供了「將結果寄存器的內容拷貝到被乘數寄存器」指令,方便了編程。
4.電路應用效果本發明實際應用在「西安市科技計劃項目信息技術專項高強度非對稱加密智能安全晶片技術研究」項目的電路設計中。此項目通過採用本發明電路代替傳統的GF(2n)上的乘、加電路,明顯簡化了電路的結構、提高了運算速度,同時又解決了乘數不定長的問題,取得了很好效果。實際應用測試結果表明該設計電路的功能完全正確,各項性能指標均符合要求。
權利要求
1.一種基於GF(2n)全串行的ECC加速器電路,其特徵在於包括總線控制邏輯電路、ECC控制邏輯電路和ECC運算邏輯電路三個電路單元,輸入信號datain[7:0]包含數據和控制信息,連接到總線控制邏輯電路;地址信號addr[7:0]連接到總線控制邏輯電路;總線控制邏輯電路的輸出包含按字節傳輸的被乘數md[255:0]、乘數mr[7:0]以及控制信息ecc_ctrl[7:0],其中被乘數md[255:0]按字節傳輸到ECC運算邏輯電路,乘數mr[7:0]連接到ECC運算邏輯電路,控制信息ecc_ctrl[7:0]連接到ECC控制邏輯電路;ECC控制邏輯電路根據輸入控制信號進行處理後生成的ECC狀態信號ecc_state[7:0]輸出到ECC運算邏輯電路;ECC運算邏輯電路根據輸入的狀態信號對輸入數據進行處理生成的結果信號rs[255:0]連接到總線控制邏輯電路;總線控制邏輯電路輸出信號dataout[7:0];時鐘信號clk、寫信號wr_n、讀信號rd_n、片選信號cs_n、復位信號reset_n是電路的共用輸入信號。
全文摘要
ECC加速器電路涉及到橢圓曲線加密系統中實現GF(文檔編號H04L9/30GK101051262SQ20071001788
公開日2007年10月10日 申請日期2007年5月18日 優先權日2007年5月18日
發明者蔣林, 謝曉燕, 孫家澤 申請人:西安郵電學院

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀