本發(fā)明涉及信息安全領(lǐng)域,特別是涉及一種標(biāo)量的規(guī)則NAF(非相鄰表示型)序列的生成方法。
背景技術(shù):
橢圓曲線密碼系統(tǒng)(ECC)具有安全性高、計(jì)算量小、處理速度快、存儲(chǔ)空間小、帶寬要求低等特點(diǎn)。與RSA公鑰體制相比,ECC非常適合于資源有限的嵌入式移動(dòng)環(huán)境,如智能卡(smartcard)上的密碼芯片。傳統(tǒng)上,對(duì)密碼芯片的攻擊主要是對(duì)實(shí)現(xiàn)的算法從數(shù)學(xué)角度進(jìn)行分析,如差分分析和線性分析。但自從旁路攻擊(Side Channel Attacks)被提出以后,人們?cè)絹碓蕉嗟拈_始關(guān)注芯片的實(shí)現(xiàn),以及針對(duì)芯片所面臨的攻擊所采取的抗攻擊措施。旁路攻擊是一種利用密碼芯片在運(yùn)算過程中無意泄露出的信息,比如指令執(zhí)行時(shí)間、功耗、電磁輻射等信息,對(duì)芯片進(jìn)行攻擊的一種方法。與傳統(tǒng)的攻擊方法相比,其密鑰的搜索空間大大小于差分密鑰分析和線性密鑰分析。按攻擊特點(diǎn)的不同,旁路攻擊可以分為時(shí)間攻擊、功耗分析攻擊和電磁輻射攻擊等幾種類型。功耗分析技術(shù)分為簡(jiǎn)單功耗分析(SPA)和差分功耗分析(DPA),SPA是指根據(jù)功耗曲線上所呈現(xiàn)的特殊特征來推測(cè)密鑰信息,DPA利用的是操作數(shù)的變化所引起的微小的功耗變化,需要通過對(duì)大量功耗曲線進(jìn)行統(tǒng)計(jì)分析最終得出密鑰信息。
標(biāo)量乘是ECC最重要最耗時(shí)的運(yùn)算,對(duì)ECC的功耗攻擊也主要集中在對(duì)標(biāo)量乘運(yùn)算的攻擊,快速而安全的實(shí)現(xiàn)標(biāo)量乘對(duì)于ECC來講至關(guān)重要。設(shè)E(Fq)是定義在有限域Fq上的橢圓曲線,P(x,y)是E(Fq)上的點(diǎn)。若Fq是二元域,則-P=(x,x+y);若Fq的特征大于3,則-P=(x,-y)。因此橢圓曲線點(diǎn)的減法和點(diǎn)的加法一樣有效。這使得人們可以使用標(biāo)量k的帶符號(hào)數(shù)學(xué)表示,一種特別有用的帶符號(hào)數(shù)學(xué)表示是非相鄰表示型(NAF),對(duì)于一個(gè)標(biāo)量k有唯一的NAF表示。Width-w NAF算法是帶有預(yù)計(jì)算表的NAF算法的一種擴(kuò)展形式,它具有連續(xù)的w位數(shù)中非零的個(gè)數(shù)最多為1的特點(diǎn),因此常用于標(biāo)量乘的快速實(shí)現(xiàn)。每一個(gè)標(biāo)量k都有唯一的Width-w NAF表示,而非0位的位置也與標(biāo)量k本身的數(shù)值有直接的關(guān)系,這不利于抗簡(jiǎn)單功耗分析(SPA)攻擊。
一種有效抵御SPA攻擊的方法是為標(biāo)量k產(chǎn)生規(guī)則的Width-w NAF表示,在這種規(guī)則Width-w NAF序列中每w位數(shù)中一定會(huì)也只會(huì)在特定的位置產(chǎn)生非0位,因而非0位的位置與標(biāo)量k本身的數(shù)值沒有直接的關(guān)系,在標(biāo)量乘的功耗曲線上也就沒有明顯的特征可供SPA所利用。其算法如下:
輸入:正整數(shù)k,窗口寬度w
輸出:k的規(guī)則序列窗口NAF表示kw
1.r=0,i=0,r0=w
2.若k為偶數(shù),則k=k+1
3.當(dāng)k大于1時(shí),重復(fù)執(zhí)行
3.1u[i]=(kmod 2w+1)-2w
3.3kw[r+ri-1]=0,...,kw[r+1]=0,kw[r]=u[i]
3.4r=r+ri,i=i+1,ri=w
4.kw[n]=0,...,kw[r+1]=0,kw[r]=1
5.返回kw[n],kw[n-1],...,kw[0]
由于該方法只能處理奇數(shù)的標(biāo)量,對(duì)于偶數(shù)標(biāo)量可以做加1處理,最后在標(biāo)量乘結(jié)束后再進(jìn)行調(diào)整就可以了:(k+1)P-P。這個(gè)方法首先是要根據(jù)所選擇的窗口大小w為標(biāo)量k計(jì)算規(guī)則的NAF序列并存儲(chǔ),根據(jù)窗口大小計(jì)算需要預(yù)計(jì)算的點(diǎn)并存儲(chǔ),然后再進(jìn)行標(biāo)量乘計(jì)算,最后根據(jù)標(biāo)量k的奇偶性決定是否需要對(duì)結(jié)果進(jìn)行調(diào)整。相同二進(jìn)制長(zhǎng)度的標(biāo)量k的規(guī)則NAF序列可能因k實(shí)際數(shù)值的不同而長(zhǎng)度不同。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述技術(shù)中的現(xiàn)狀,本發(fā)明所要解決的技術(shù)問題是提供一種標(biāo)量的規(guī)則NAF序列的生成方法,既能夠節(jié)約計(jì)算時(shí)間又能夠節(jié)約存儲(chǔ)空間。
為解決上述技術(shù)問題,本發(fā)明的標(biāo)量的規(guī)則NAF序列的生成方法,包括如下步驟:
步驟1、根據(jù)需求選擇規(guī)則NAF序列的窗口大小w,w為大于1的正整數(shù),列出相應(yīng)窗口大小下規(guī)則NAF序列的格式;
步驟2、列出非0項(xiàng)X的所有可能,根據(jù)大小順序重新編碼到連續(xù)的正整數(shù)X’集合上來,消除負(fù)數(shù)的表示,并記住實(shí)際非0項(xiàng)X與正整數(shù)X’之間的對(duì)應(yīng)關(guān)系;
步驟3、根據(jù)標(biāo)量k的最低位記錄其奇偶性并調(diào)整最低位得到奇數(shù)的k’,若k[0]=1,則k’=k,否則,k’=k+1;
步驟4、從低到高將k’分成每w位一組,找到位數(shù)最高的非0組,并在其最高位的前面加一個(gè)1,將新的k’從高到低移一位,去掉最低位,得到經(jīng)過重新編碼并省略原規(guī)則NAF序列中的0之后的窗口為w的規(guī)則NAF序列;
步驟5、在標(biāo)量乘k’P計(jì)算過程中從新的規(guī)則NAF序列中從高到低取出的每個(gè)X’,對(duì)應(yīng)w個(gè)倍點(diǎn)運(yùn)算D和一個(gè)點(diǎn)加運(yùn)算A,而點(diǎn)加的點(diǎn)由X’對(duì)應(yīng)的X確定。
采用本發(fā)明的方法產(chǎn)生的標(biāo)量k的規(guī)則NAF序列,簡(jiǎn)化了標(biāo)量k的規(guī)則NAF序列產(chǎn)生流程:不需要特殊的計(jì)算,省略規(guī)則NAF序列的計(jì)算過程;不需要額外的存儲(chǔ)空間,省略額外存儲(chǔ)規(guī)則NAF序列的存儲(chǔ)空間,首尾的處理和整個(gè)序列的移位也可以在使用過程中解決掉,這樣既能夠節(jié)約時(shí)間又能夠節(jié)約存儲(chǔ)空間。在同一窗口寬度w下為相同二進(jìn)制長(zhǎng)度的標(biāo)量k產(chǎn)生相同長(zhǎng)度的規(guī)則NAF序列,以統(tǒng)一標(biāo)量乘計(jì)算時(shí)間和完全消除SPA信息的泄露。
附圖說明
下面結(jié)合附圖與具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明:
附圖是規(guī)則序列的變化示意圖。
具體實(shí)施方式
標(biāo)量乘是ECC最重要最耗時(shí)的運(yùn)算,對(duì)ECC的攻擊也主要集中在對(duì)標(biāo)量乘運(yùn)算的攻擊,快速而安全的實(shí)現(xiàn)標(biāo)量乘一直是業(yè)界努力的方向。所述標(biāo)量的規(guī)則NAF序列的生成方法是涉及橢圓曲線密碼中標(biāo)量乘的安全而快 速的具體實(shí)現(xiàn)方法。
為了提高標(biāo)量乘的執(zhí)行速度和抗SPA攻擊,目前主要采用對(duì)標(biāo)量進(jìn)行帶符號(hào)的規(guī)則化變換后再進(jìn)行標(biāo)量乘運(yùn)算,這樣在功耗曲線上看到的是點(diǎn)加和倍點(diǎn)運(yùn)算規(guī)律的出現(xiàn),不會(huì)有SPA信息的泄露,通過窗口大小的選擇也可以減少點(diǎn)加運(yùn)算的次數(shù),有效提高執(zhí)行速度。
標(biāo)量的規(guī)則化變換通常需要規(guī)則NAF序列的計(jì)算過程,規(guī)則化后的變量是帶符號(hào)的整數(shù),且可能比標(biāo)量的二進(jìn)制表示的位數(shù)要多,因此需要額外的存儲(chǔ)空間來存放標(biāo)量的規(guī)則NAF序列。
所述標(biāo)量的規(guī)則NAF序列的生成方法通過省略原規(guī)則NAF序列中的0和對(duì)非0項(xiàng)進(jìn)行重新編碼來實(shí)現(xiàn),整個(gè)過程不需要計(jì)算,也不會(huì)增加位數(shù),這樣的產(chǎn)生方法可以省去規(guī)則NAF序列產(chǎn)生過程中的計(jì)算時(shí)間,也不需要額外的存儲(chǔ)空間來存放規(guī)則NAF序列。
下面以窗口w=4為例(結(jié)合附圖所示),詳細(xì)說明標(biāo)量的規(guī)則NAF序列的生成方法的實(shí)現(xiàn)過程。
步驟一、選擇窗口w=4的規(guī)則NAF序列,默認(rèn)數(shù)值按左高右低排列,其格式為:000X000X000X…000X。
步驟二、窗口w=4的規(guī)則NAF序列中非0的X∈{-15,-13,-11,-9,-7,-5,-3,-1,1,3,5,7,9,11,13,15},一一對(duì)應(yīng)到如下集合X’∈{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}。
步驟三、根據(jù)標(biāo)量k的最低位記錄其奇偶性并調(diào)整最低位得到奇數(shù)的k’,若k[0]=1,則k’=k,否則,k’=k+1。
步驟四、從低到高將k’分成每4位一組,找到位數(shù)最高的非0組,并在其最高位的前面加一個(gè)1,將新的k’從高到低移一位,去掉最低位,這樣就得到了經(jīng)過重新編碼并省略原規(guī)則NAF序列中的0之后的窗口為4的規(guī)則NAF序列:X’X’X’…X’。
步驟五、在標(biāo)量乘k’P計(jì)算過程中從新的規(guī)則NAF序列中從高到低取出的每個(gè)X’對(duì)應(yīng)運(yùn)算DDDDA,其中D代表倍點(diǎn)運(yùn)算,A代表點(diǎn)加運(yùn)算,而A點(diǎn)加的點(diǎn)為X’對(duì)應(yīng)的X代表的點(diǎn),比如X’=1,則對(duì)應(yīng)的X=-13,因此點(diǎn)加的點(diǎn)為-13P,P是橢圓曲線上的點(diǎn)。
附圖中上端為原規(guī)則序列,下端為重新編碼后的規(guī)則序列。
以上通過具體實(shí)施方式對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,但這些并非構(gòu)成對(duì)本發(fā)明的限制。在不脫離本發(fā)明原理的情況下,本領(lǐng)域的技術(shù)人員還可做出許多變形和改進(jìn),這些也應(yīng)視為本發(fā)明的保護(hù)范圍。