防對稱密碼算法受攻擊的方法
【專利摘要】本發(fā)明公開了一種防對稱密碼算法受攻擊的方法,涉及信息安全【技術(shù)領(lǐng)域】。包括以下步驟:分析密碼算法一輪中相互獨立的子操作;利用隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù)來確定本輪運算中子操作的執(zhí)行順序;下一輪利用隨機數(shù)發(fā)生器產(chǎn)生的新的隨機數(shù)確定運算中子操作的執(zhí)行順序;每一輪都采用新的隨機數(shù)確定運算中子操作的執(zhí)行順序,直到結(jié)束。本發(fā)明通過隨機數(shù)來確定運算中子操作的執(zhí)行順序,使得一連串的子操作執(zhí)行的前后順序不可預測,攻擊者得到的樣本之間的相互關(guān)系難以確定,因而能夠有效降低攻擊者收集到的信息的信噪比,也就能夠有效抵御功耗分析攻擊。
【專利說明】防對稱密碼算法受攻擊的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及信息安全領(lǐng)域,特別是涉及一種防對稱密碼算法受攻擊的方法。
【背景技術(shù)】
[0002] 隨著信息技術(shù)的發(fā)展,數(shù)據(jù)的機密性和完整性受到越來越多的關(guān)注,在早期人們 還主要關(guān)注協(xié)議和算法的安全性,但自從旁路攻擊(Side Channel Attacks)被提出以后, 人們越來越多的開始關(guān)注芯片的實現(xiàn),以及針對芯片所面臨的攻擊所采取的抗攻擊措施。
[0003] 旁路攻擊主要是基于物理特征的分析技術(shù),包括功耗分析,電磁分析,錯誤分析, 時間分析等等。功耗分析是指通過分析密碼運算過程中呈現(xiàn)的電流/電壓變化得出功耗的 變化,進而將功耗與密鑰信息聯(lián)系起來,最終獲取密鑰信息。功耗分析技術(shù)又分為簡單功耗 分析(SPA)和差分功耗分析(DPA)。SPA是指根據(jù)功耗曲線上所呈現(xiàn)的特殊特征來推測密鑰 信息,DPA利用的是操作數(shù)的變化所引起的微小的功耗變化,需要通過對大量功耗曲線進行 統(tǒng)計分析,最終得出密鑰信息。電磁分析與功耗分析類似,只是獲取曲線的方式有別。錯誤 分析是利用錯誤結(jié)果進行分析得出密鑰信息的分析技術(shù)。時間分析是指有的算法運行時間 會因密鑰的不同而不同,因而可以通過運行時間來推測密鑰。
[0004] 實施功耗分析攻擊需要收集大量的信息,這些獲取的信息中有有用的信息(例如, 與密鑰相關(guān)的信息),也有噪聲(例如,對確定密鑰有干擾或無關(guān)的信息)。從測量中獲得信 息的質(zhì)量可以用信噪比來表示,即信號量與噪聲量之比的度量單位?;謴兔荑€所必須的信 息數(shù)量由測量和分析的技術(shù)決定,但是與信噪比的平方成反比關(guān)系。即信噪比降低300倍, 信息量會增加到90, 000倍。
[0005] 在硬件防御功耗分析措施方面,通常包括引入噪聲的方式降低測量精度和在算法 級提供保護。引入噪聲的方式比較多,比如電流擾動、假操作等。一個典型的算法級技術(shù)是 盲化方法(masking),但是要完全實現(xiàn)隨機盲化在時間和硬件方面的開銷都很難被目前的 應(yīng)用所接受,而固定盲化方法的安全性又很難保證;另外一個技術(shù)是電路一級的雙軌邏輯, 其面積和時延方面的開銷都很大,并且其實現(xiàn)的技術(shù)難度比較大。
【發(fā)明內(nèi)容】
[0006] 針對上述技術(shù)中的現(xiàn)狀,本發(fā)明所要解決的技術(shù)問題是提供一種防對稱密碼算法 受攻擊的方法,它相對安全而又易于實現(xiàn),能有效降低信噪比,增加攻擊需要的樣本數(shù),從 而增加攻擊的難度。
[0007] 為解決上述技術(shù)問題,本發(fā)明的防對稱密碼算法受攻擊的方法,包括如下步驟:
[0008] 步驟一、將密碼算法一輪中相互獨立的運算分解為多個子操作,一個時鐘執(zhí)行一 個子操作;
[0009] 步驟二、利用隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù)來確定第一輪運算中子操作的執(zhí)行順 序,并執(zhí)行完第一輪的所有運算;
[0010] 步驟三、利用隨機數(shù)發(fā)生器產(chǎn)生的新的隨機數(shù)來確定第二輪運算中子操作的執(zhí)行 順序,并執(zhí)行完第二輪的所有運算;
[0011] 步驟四、其余各輪運算,每一輪都采用隨機數(shù)發(fā)生器產(chǎn)生的新的隨機數(shù)來確定本 輪運算中子操作的執(zhí)行順序,直到所有運算結(jié)束。
[0012] 步驟一中所述的將密碼算法一輪中相互獨立的運算分解為多個子操作,每個子操 作可大可小,根據(jù)具體實現(xiàn)的效率來確定。
[0013] 步驟二、三、四中所述的隨機數(shù)的位數(shù)由子操作的個數(shù)確定,力爭使得每個子操作 出現(xiàn)在每個位置的概率相等。
[0014] 本發(fā)明采用子操作亂序執(zhí)行的方式來防止對稱密碼算法受攻擊;即通過隨機數(shù)來 確定運算中子操作的執(zhí)行順序,使得一連串的子操作執(zhí)行的前后順序不可預測,攻擊者得 到的樣本之間的相互關(guān)系難以確定,使攻擊者不能正確對齊數(shù)據(jù);由于噪音顯著增加(因為 包含不相關(guān)的樣本),并且有用信號降低(因為存在較少的良好樣本),使攻擊者收集到的信 息的信噪比大大降低,增加了攻擊需要的樣本數(shù),從而增加功耗分析攻擊的難度,有效抵御 功耗分析攻擊。
[0015] 本發(fā)明執(zhí)行速度快,所占用的芯片面積小,易于實現(xiàn)。
【專利附圖】
【附圖說明】
[0016] 下面結(jié)合附圖與【具體實施方式】對本發(fā)明作進一步詳細的說明:
[0017] 附圖是所述防對稱密碼算法受攻擊的方法一實施例流程圖。
【具體實施方式】
[0018] 所述防對稱密碼算法受攻擊的方法,包括以下步驟:分析密碼算法一輪中相互獨 立的子操作;利用隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù)來確定本輪運算中子操作的執(zhí)行順序;下一 輪利用隨機數(shù)發(fā)生器產(chǎn)生的新的隨機數(shù)確定運算中子操作的執(zhí)行順序;每一輪都采用新的 隨機數(shù)確定運算中子操作的執(zhí)行順序,直到結(jié)束。
[0019] 參見附圖所不,下面以AES (高級加密標準Advanced Encryption Standard)的加 密過程為例來介紹本發(fā)明。
[0020] AES輪變換的輸入包括16個字節(jié)的數(shù)據(jù)和16個字節(jié)的密鑰,最終產(chǎn)生16個字節(jié) 的輸出。16字節(jié)的輸出數(shù)據(jù)來自于四個列混合(Mixcolumn)模塊運算的結(jié)果,將來自于同 一個列混合模塊的4個字節(jié)分為1組,一共有4組。
[0021] AES輪變換的操作包括密鑰加(Addkey)操作,由密鑰加模塊實現(xiàn);字節(jié)替換 (SubBytes)操作,由字節(jié)替換模塊實現(xiàn);行移位(ShiftRow)操作;列混合(Mixcolumn)操 作,由列混合模塊實現(xiàn)。輸出字節(jié)的分組方式將自動實現(xiàn)行移位操作的功能,因此輪變換的 操作僅剩下密鑰加操作,字節(jié)替換操作和列混合操作。
[0022] 根據(jù)輸出數(shù)據(jù)的分組方式,將產(chǎn)生這4組輸出數(shù)據(jù)的輸入數(shù)據(jù)和密鑰也相應(yīng)的分 為 4 組,這 4 組輸入數(shù)據(jù)(Data_Columnl,Data_Column2, Data_Column3, Data_Column4)和 密鑰(Key_Columnl,Key_Column2, Key_Column3, Key_Column4)參與的運算是相互獨立的。 其中,第一組輸入數(shù)據(jù)Data_Columnl為參與第一列運算的數(shù)據(jù)(4個字節(jié));第二組輸入數(shù) 據(jù)Data_Column2為參與第二列運算的數(shù)據(jù)(4個字節(jié));第三組輸入數(shù)據(jù)Data_Column3為 參與第三列運算的數(shù)據(jù)(4個字節(jié));第四組輸入數(shù)據(jù)Data_Column4為參與第四列運算的數(shù) 據(jù)(4個字節(jié));第一組密鑰Key_Columnl為參與第一列運算的密鑰(4個字節(jié));第二組密鑰 Key_Column2為參與第二列運算的密鑰(4個字節(jié));第三組密鑰Key_Column3為參與第三列 運算的密鑰(4個字節(jié));第四組密鑰Key_C 〇lUmn4為參與第四列運算的密鑰(4個字節(jié))。
[0023] 第一個四選一選擇器Muxl和第二個四選一選擇器Mux2用兩位隨機數(shù)rand_ sel [1:0]來選擇4組輸出數(shù)據(jù)的產(chǎn)生順序,也即是隨機選擇產(chǎn)生某組輸出的輸入數(shù)據(jù)和密 鑰參與運算。圖中,data為被選擇出的參與當前運算的一組輸入數(shù)據(jù)(4個字節(jié));key為被 選擇出的參與當前運算的一組密鑰(4個字節(jié))。
[0024] 每組輸出數(shù)據(jù)由寄存器(registers)進行暫存,但不能覆蓋沒有參與本輪運算的 輸入數(shù)據(jù),等待所有本輪的輸出產(chǎn)生后,該組輸出數(shù)據(jù)又作為下一輪運算的輸入數(shù)據(jù)參與 運算。
[0025] 所有輪運算結(jié)束后,將得到最終的加密結(jié)果。
[0026] 本發(fā)明通過隨機數(shù)來確定運算中子操作的執(zhí)行順序,使得一連串的子操作執(zhí)行的 前后順序不可預測,攻擊者得到的樣本之間的相互關(guān)系難以確定,因而能夠有效降低攻擊 者收集到的信息的信噪比,也就能夠有效抵御功耗分析攻擊。
[0027] 以上通過【具體實施方式】對本發(fā)明進行了詳細的說明,但這些并非構(gòu)成對本發(fā)明的 限制。在不脫離本發(fā)明原理的情況下,本領(lǐng)域的技術(shù)人員還可做出許多變形和改進,這些也 應(yīng)視為本發(fā)明的保護范圍。
【權(quán)利要求】
1. 一種防對稱密碼算法受攻擊的方法,其特征在于,包括如下步驟: 步驟一、將密碼算法一輪中相互獨立的運算分解為多個子操作,一個時鐘執(zhí)行一個子 操作; 步驟二、利用隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù)來確定第一輪運算中子操作的執(zhí)行順序,并 執(zhí)行完第一輪的所有運算; 步驟三、利用隨機數(shù)發(fā)生器產(chǎn)生的新的隨機數(shù)來確定第二輪運算中子操作的執(zhí)行順 序,并執(zhí)行完第二輪的所有運算; 步驟四、其余各輪運算,每一輪都采用隨機數(shù)發(fā)生器產(chǎn)生的新的隨機數(shù)來確定本輪運 算中子操作的執(zhí)行順序,直到所有運算結(jié)束。
2. 如權(quán)利要求1所述的方法,其特征在于:步驟一中所述子操作可大可小,根據(jù)具體實 現(xiàn)的效率來確定。
3. 如權(quán)利要求1所述的方法,其特征在于:步驟二、三、四中所述的隨機數(shù)的位數(shù)由子 操作的個數(shù)確定。
【文檔編號】H04L9/06GK104219040SQ201310221986
【公開日】2014年12月17日 申請日期:2013年6月5日 優(yōu)先權(quán)日:2013年6月5日
【發(fā)明者】徐云秀, 包斯剛, 顧海華, 柴佳晶 申請人:上海華虹集成電路有限責任公司