專利名稱:防對(duì)稱密碼算法受攻擊的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全領(lǐng)域,特別是涉及一種防對(duì)稱密碼算法受攻擊的方法。
背景技術(shù):
隨著信息技術(shù)的發(fā)展,數(shù)據(jù)的機(jī)密性和完整性受到越來越多的關(guān)注,在早期人們還主要關(guān)注協(xié)議和算法的安全性,但自從旁路攻擊(SideCharmel Attacks)被提出以后,人們?cè)絹碓蕉嗟拈_始關(guān)注芯片的實(shí)現(xiàn),以及針對(duì)芯片所面臨的攻擊所采取的抗攻擊措施。旁路攻擊(Side Channel Attacks)主要是基于物理特征的分析技術(shù),包括功耗分析,電磁分析,錯(cuò)誤分析,時(shí)間分析等等。功耗分析是指通過分析密碼運(yùn)算過程中呈現(xiàn)的電流/電壓變化得出功耗的變化,進(jìn)而將功耗與密鑰信息聯(lián)系起來,最終獲取密鑰信息。功耗分析技術(shù)又分為簡(jiǎn)單功耗分析(SPA)和差分功耗分析(DPA)。SPA是指根據(jù)功耗曲線上所呈現(xiàn)的特殊特征來推測(cè)密鑰信息,DPA利用的是操作數(shù)的變化所引起的微小的功耗變化,需要通過對(duì)大量功耗曲線進(jìn)行統(tǒng)計(jì)分析,最終得出密鑰信息。電磁分析與功耗分析類似,只是獲取曲線的方式有別。錯(cuò)誤分析是利用錯(cuò)誤結(jié)果進(jìn)行分析得出密鑰信息的分析技術(shù)。時(shí)間分析是指有的算法運(yùn)行時(shí)間會(huì)因密鑰的不同而不同,因而可以通過運(yùn)行時(shí)間來推測(cè)密鑰。在硬件防御功耗分析措施方面,通常包括引入噪聲的方式降低測(cè)量精度和在算法級(jí)提供保護(hù)。引入噪聲的方式實(shí)現(xiàn)起來比較簡(jiǎn)單,但是效果并不理想,可以通過增加樣本數(shù)來克服。一個(gè)典型的算法級(jí)技術(shù)是盲化方法(masking),但是要完全實(shí)現(xiàn)隨機(jī)盲化在時(shí)間和硬件方面的開銷都很難被目前的應(yīng)用所接受,而固定盲化方法的安全性又很難保證;另外一個(gè)技術(shù)是電路一級(jí)的雙軌邏輯,其面積和時(shí)延方面的開銷都很大,并且其實(shí)現(xiàn)的技術(shù)難度比較大。
發(fā)明內(nèi)容
針對(duì)上述技術(shù)中的現(xiàn)狀,本發(fā)明所要解決的技術(shù)問題是提供一種防對(duì)稱密碼算法受攻擊的方法,它相對(duì)安全而又易于實(shí)現(xiàn)的,無統(tǒng)計(jì)分析規(guī)律,能夠?qū)崿F(xiàn)錯(cuò)誤檢測(cè),并且最終能夠準(zhǔn)確實(shí)現(xiàn)對(duì)稱密碼算法加解密。為解決上述技術(shù)問題,本發(fā)明的通過平衡漢明重量防對(duì)稱密碼算法受攻擊的方法,包括如下步驟步驟一、實(shí)現(xiàn)兩套獨(dú)立的運(yùn)算邏輯,其中第一套邏輯完全以密碼協(xié)議(比如FIPS PUB 46-3)規(guī)定的方式實(shí)現(xiàn),第二套邏輯除了非線性運(yùn)算部分(通常被稱為SB0X)需要特殊構(gòu)造之外,其余線性運(yùn)算部分完全按協(xié)議實(shí)現(xiàn);步驟二、明文以兩種不同的方式分別存儲(chǔ)在兩個(gè)寄存器中,兩個(gè)寄存器中總的漢明重量為一特定值,并且兩個(gè)寄存器中的數(shù)據(jù)分別經(jīng)過兩套獨(dú)立的運(yùn)算邏輯進(jìn)行運(yùn)算;步驟三、在兩套運(yùn)算邏輯中的每個(gè)運(yùn)算節(jié)點(diǎn)的數(shù)據(jù)都具有一定的數(shù)學(xué)關(guān)系,以保證它們總的漢明重量為一不變的特定值;步驟四、利用兩套運(yùn)算邏輯中的每個(gè)運(yùn)算節(jié)點(diǎn)的數(shù)據(jù)所具有的一定的數(shù)學(xué)關(guān)系,對(duì)數(shù)據(jù)做同步,以避免因數(shù)據(jù)太快或太慢而呈現(xiàn)出特殊的功耗特征;步驟五、利用兩套運(yùn)算邏輯中的每個(gè)運(yùn)算節(jié)點(diǎn)的數(shù)據(jù)所具有的一定的數(shù)學(xué)關(guān)系, 包括在每一輪運(yùn)算后存儲(chǔ)在寄存器中的數(shù)據(jù)所具有的一定的數(shù)學(xué)關(guān)系,如果密碼設(shè)備受到攻擊,破壞了這種數(shù)學(xué)關(guān)系,則可以通過檢測(cè)兩個(gè)寄存器之間的數(shù)學(xué)關(guān)系來檢測(cè)密碼設(shè)備是否因受到攻擊而出錯(cuò)。為了讓兩套邏輯中運(yùn)算的數(shù)據(jù)保持一定的數(shù)學(xué)關(guān)系,在有的對(duì)稱密碼算法(比如 DES)中需要增加一些特殊的邏輯(比如取反邏輯)。步驟一中所述的特殊構(gòu)造是指第二套邏輯的非線性運(yùn)算部分的輸入與輸出和第一套邏輯的非線性運(yùn)算部分的輸入與輸出分別相反。步驟三所述的一定的數(shù)學(xué)關(guān)系是指兩套運(yùn)算邏輯中的每個(gè)運(yùn)算節(jié)點(diǎn)的數(shù)據(jù)都具有相反的數(shù)學(xué)關(guān)系。本發(fā)明通過平衡漢明重量的方式在一定程度上消除操作數(shù)據(jù)與功耗的關(guān)系并實(shí)現(xiàn)檢錯(cuò),與傳統(tǒng)的防DPA攻擊的盲化方法和雙軌邏輯相比,具有速度快,電路的面積小,不需要開發(fā)新的邏輯門,對(duì)設(shè)計(jì)實(shí)現(xiàn)沒有特別的要求,在防DPA攻擊的同時(shí),還能夠防DFA攻
擊ο本發(fā)明的方法相對(duì)安全而又易于實(shí)現(xiàn),無統(tǒng)計(jì)分析規(guī)律,能夠?qū)崿F(xiàn)錯(cuò)誤檢測(cè),并且最終能夠準(zhǔn)確實(shí)現(xiàn)對(duì)稱密碼算法加解密。
下面結(jié)合附圖與具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明圖1是本發(fā)明實(shí)現(xiàn)的DES輪變換;圖2是圖1中A,B兩點(diǎn)的同步邏輯。具體實(shí)現(xiàn)方式下面以DES (數(shù)據(jù)加密標(biāo)準(zhǔn)data encryption standard)的加密過程為例來介紹本發(fā)明。1、實(shí)現(xiàn)兩套獨(dú)立的運(yùn)算邏輯,其中第一套邏輯完全以協(xié)議規(guī)定的方式實(shí)現(xiàn),第二套邏輯的SBOX部分通過專門構(gòu)造使得其輸入與輸出和第一套邏輯的SBOX的輸入與輸出分別相反,而其余的線性運(yùn)算部分和第一套邏輯完全一致,如圖1所示。2、由于DES的運(yùn)算過程中有左右兩邊異或的運(yùn)算,這將消除兩套邏輯中數(shù)據(jù)之間相反的數(shù)學(xué)關(guān)系,為保持這種數(shù)學(xué)關(guān)系,必須增加取反邏輯使其保持原有的相反關(guān)系,如圖 1所示。3、明文以正反兩種方式分別存儲(chǔ)在兩個(gè)寄存器中,兩個(gè)寄存器中總的漢明重量為 64。兩個(gè)寄存器中的數(shù)據(jù)分別經(jīng)過兩套獨(dú)立的運(yùn)算邏輯進(jìn)行運(yùn)算。4、兩套運(yùn)算邏輯中的每個(gè)運(yùn)算節(jié)點(diǎn)的數(shù)據(jù)都具有相反的數(shù)學(xué)關(guān)系,保證總的漢明重量為恒定值。5、由于數(shù)據(jù)的0,1比例會(huì)影響其運(yùn)算的速度,如果兩套運(yùn)算邏輯中重要的功能單元的數(shù)據(jù)到達(dá)時(shí)間不一致,就可能會(huì)呈現(xiàn)出特殊的功耗特征,從而成為攻擊目標(biāo),在本發(fā)明的實(shí)現(xiàn)中,利用兩套運(yùn)算邏輯中數(shù)據(jù)所具有的相反關(guān)系來對(duì)SBOX的輸入進(jìn)行同步,即只有在數(shù)學(xué)關(guān)系滿足時(shí),真實(shí)的數(shù)據(jù)才會(huì)進(jìn)入SB0X,否則輸入為全0。如圖2所示。
6、利用兩個(gè)寄存器中的中間結(jié)果和最終的運(yùn)算結(jié)果相反的關(guān)系來檢測(cè)是否有錯(cuò)誤發(fā)生,以決定運(yùn)算結(jié)果是否能夠輸出密碼模塊。以上通過具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,但這些并非構(gòu)成對(duì)本發(fā)明的限制。在不脫離本發(fā)明原理的情況下,本領(lǐng)域的技術(shù)人員還可做出許多變形和改進(jìn),這些也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種防對(duì)稱密碼算法受攻擊的方法,其特征在于,包括如下步驟步驟一、實(shí)現(xiàn)兩套獨(dú)立的運(yùn)算邏輯,其中第一套邏輯完全以密碼協(xié)議規(guī)定的方式實(shí)現(xiàn), 第二套邏輯除了非線性運(yùn)算部分需要特殊構(gòu)造之外,其余線性運(yùn)算部分完全按協(xié)議實(shí)現(xiàn);步驟二、明文以兩種不同的方式分別存儲(chǔ)在兩個(gè)寄存器里,兩個(gè)寄存器中總的漢明重量為一特定值,并且兩個(gè)寄存器中的數(shù)據(jù)分別經(jīng)過兩套獨(dú)立的運(yùn)算邏輯進(jìn)行運(yùn)算;步驟三、在兩套運(yùn)算邏輯中的每個(gè)運(yùn)算節(jié)點(diǎn)的數(shù)據(jù)都具有一定的數(shù)學(xué)關(guān)系,以保證它們總的漢明重量為一不變的特定值;步驟四、利用在兩套運(yùn)算邏輯中的每個(gè)運(yùn)算節(jié)點(diǎn)的數(shù)據(jù)所具有的一定的數(shù)學(xué)關(guān)系對(duì)關(guān)鍵功能單元的數(shù)據(jù)做同步,以避免因數(shù)據(jù)太快或太慢而呈現(xiàn)出特殊的功耗特征;步驟五、利用在兩套運(yùn)算邏輯中的每個(gè)運(yùn)算節(jié)點(diǎn)的數(shù)據(jù)所具有的一定的數(shù)學(xué)關(guān)系,包括在每一輪運(yùn)算后存儲(chǔ)在寄存器中的數(shù)據(jù)所具有的一定的數(shù)學(xué)關(guān)系,如果密碼設(shè)備受到攻擊,破壞了這種數(shù)學(xué)關(guān)系,則通過檢測(cè)兩個(gè)寄存器中的數(shù)據(jù)之間的數(shù)學(xué)關(guān)系來檢測(cè)密碼設(shè)備是否因受到攻擊而出錯(cuò)。
2.如權(quán)利要求1所述的方法,其特征在于步驟一中所述的特殊構(gòu)造是指第二套邏輯的非線性運(yùn)算部分的輸入與輸出和第一套邏輯的非線性運(yùn)算部分的輸入與輸出分別相反。
3.如權(quán)利要求1所述的方法,其特征在于步驟三所述的一定的數(shù)學(xué)關(guān)系是指兩套運(yùn)算邏輯中的每個(gè)運(yùn)算節(jié)點(diǎn)的數(shù)據(jù)都具有相反的數(shù)學(xué)關(guān)系。
全文摘要
本發(fā)明公開了一種通過平衡漢明重量防對(duì)稱密碼算法受攻擊的方法,涉及信息安全技術(shù)領(lǐng)域。通過平衡漢明重量來消除操作數(shù)據(jù)與功耗之間關(guān)系并實(shí)現(xiàn)檢錯(cuò)的方法;實(shí)現(xiàn)兩套獨(dú)立的邏輯,兩套邏輯中運(yùn)算的數(shù)據(jù)具有特殊的數(shù)學(xué)關(guān)系,使得操作數(shù)據(jù)的漢明重量始終保持不變,這在一定程度上也就掩蓋了因漢明重量的不同而引起的功耗差異;并且可以利用兩套邏輯中的操作數(shù)具有的特定數(shù)學(xué)關(guān)系對(duì)數(shù)據(jù)進(jìn)行同步,也可以通過檢測(cè)它們之間的關(guān)系是否成立來判斷運(yùn)算過程是否有錯(cuò)誤發(fā)生,從而達(dá)到防DFA攻擊的目的。
文檔編號(hào)H04L9/06GK102468954SQ201010537949
公開日2012年5月23日 申請(qǐng)日期2010年11月10日 優(yōu)先權(quán)日2010年11月10日
發(fā)明者徐云秀 申請(qǐng)人:上海華虹集成電路有限責(zé)任公司