寄存器輸入輸出互換的抗故障注入攻擊方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及集成電路安全技術(shù)領(lǐng)域,特別涉及一種寄存器輸入輸出互換的抗故障注入攻擊方法和一種寄存器輸入輸出互換的抗故障注入攻擊裝置。
【背景技術(shù)】
[0002]當(dāng)今社會(huì)科技迅猛發(fā)展,生活日趨信息化、數(shù)字化以及網(wǎng)絡(luò)化。人們對(duì)信息的安全性也越來(lái)越重視,這也促使密碼處理器不斷改進(jìn)。為了更好的保證信息的安全,密碼處理器不僅需要安全性更高的加密算法,同時(shí)也需要在硬件層面對(duì)密碼處理器本身進(jìn)行保護(hù)。
[0003]就加密算法來(lái)說(shuō),以在全球范圍廣泛使用的高級(jí)加密標(biāo)準(zhǔn)(AES)為例,AES被認(rèn)為具有很高的安全性,如果通過(guò)數(shù)學(xué)方式想要完全破解AES,花費(fèi)的時(shí)間要以數(shù)十億年計(jì),因此可以認(rèn)為現(xiàn)行的加密算法在數(shù)學(xué)層面上是安全的。而在密碼處理的硬件層面,仍然面對(duì)很大的安全威脅,其中故障注入攻擊就是一種實(shí)施在硬件層面的攻擊方式,其特點(diǎn)在于能夠瞬時(shí)改變加密處理器加密電路上的邏輯值,造成電路的瞬時(shí)故障,最終導(dǎo)致加密處理器產(chǎn)生錯(cuò)誤的輸出密文,利用某些錯(cuò)誤輸出密文,攻擊者就有可能破譯密鑰或者對(duì)密鑰破譯提供幫助。
[0004]攻擊者在執(zhí)行故障注入攻擊時(shí),首先需要對(duì)電路進(jìn)行試注入,也就是對(duì)電路各個(gè)部分都進(jìn)行一定次數(shù)的注入,目的是為了確定電路中哪些部分的故障能夠反映到輸出端,產(chǎn)生指定形式的錯(cuò)誤輸出密文,這個(gè)過(guò)程稱作搜索階段。在攻擊者找到電路中能對(duì)輸出密文產(chǎn)生特定影響(此種影響導(dǎo)致輸出密文可被攻擊者利用以解析密鑰)的部分之后,需要對(duì)該部分電路進(jìn)行持續(xù)的注入,以獲得攻擊者需要的足夠多數(shù)量的錯(cuò)誤輸出密文,當(dāng)獲得足夠需要的錯(cuò)誤密文之后,故障注入攻擊完成,這個(gè)過(guò)程稱作持續(xù)注入階段。
[0005]為了降低故障注入攻擊的威脅,密碼處理器需要采取抗故障注入攻擊措施。傳統(tǒng)的抗故障注入攻擊措施利用冗余和比較的方式,在電路中加入檢測(cè)機(jī)制,檢測(cè)加密過(guò)程是否出現(xiàn)異常。大致可分為:信息冗余,時(shí)間冗余和硬件冗余。信息冗余指的是在硬件中增加一部分實(shí)現(xiàn)故障校驗(yàn)碼等線性或非線性函數(shù)的電路以在一定范圍內(nèi)檢測(cè)錯(cuò)誤。時(shí)間冗余指的是在時(shí)間上對(duì)整個(gè)或部分加密過(guò)程重復(fù)執(zhí)行,兩次結(jié)果相同才輸出,用執(zhí)行時(shí)間上的開(kāi)銷換來(lái)安全性的提升。硬件冗余是指將原有電路的全部或者部分進(jìn)行復(fù)制,并比較二者的結(jié)果以此提高輸出密文的安全性。
[0006]由上面?zhèn)鹘y(tǒng)冗余抗攻擊措施可以知道,冗余抗攻擊措施對(duì)電路中已有的故障起作用,但并不增加攻擊者故障注入的難度,為了能夠更好的抵抗故障注入攻擊,可以在故障注入階段增加故障注入的難度,使攻擊者難以成功的注入故障。故障注入攻擊的攻擊對(duì)象一般為計(jì)算陣列上的算術(shù)邏輯單元(ALU)以及寄存器。而相關(guān)的研宄表明,寄存器比ALU更容易實(shí)施注入,因此,在故障注入階段對(duì)寄存器中數(shù)據(jù)進(jìn)行保護(hù)就顯得很有必要。
【發(fā)明內(nèi)容】
[0007]本發(fā)明旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問(wèn)題之一。為此,本發(fā)明的一個(gè)目的在于提出一種能夠減少攻擊者通過(guò)寄存器對(duì)電路進(jìn)行成功注入的幾率的寄存器輸入輸出互換的抗故障注入攻擊方法。
[0008]本發(fā)明的另一個(gè)目的在于提出一種寄存器輸入輸出互換的抗故障注入攻擊裝置。
[0009]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明實(shí)施例的寄存器輸入輸出互換的抗故障注入攻擊方法,包括以下步驟:S1,根據(jù)目標(biāo)集成電路的計(jì)算陣列規(guī)模和所述計(jì)算陣列的互聯(lián)模式,獲取所述目標(biāo)集成電路上能運(yùn)行的第一最大數(shù)據(jù)寬度,其中,所述計(jì)算陣列包括多個(gè)基本計(jì)算單元(PE),所述PE包括與ALU相連的多個(gè)多路選擇器(MUX)和與所述ALU相連的寄存器;S2,根據(jù)所述第一最大數(shù)據(jù)寬度,獲取所述目標(biāo)集成電路上運(yùn)行加密算法時(shí)需要的第二最大數(shù)據(jù)寬度;S3,根據(jù)所述第二最大數(shù)據(jù)寬度對(duì)需要進(jìn)行輸入輸出互換的多個(gè)寄存器進(jìn)行分組;S4,對(duì)每組的多個(gè)寄存器處電路進(jìn)行改造,其中,改造后的電路中每個(gè)所述寄存器的輸入端和輸出端分別與輸入多路選擇器IN_MUX和輸出多路選擇器OUT_MUX相連;S5,確定每組的多個(gè)寄存器處電路對(duì)應(yīng)的多個(gè)所述IN_MUX和多個(gè)所述OUT_MUX進(jìn)行數(shù)據(jù)選擇的控制數(shù);以及S6,根據(jù)所述控制數(shù)確定每組的多個(gè)寄存器處電路對(duì)應(yīng)的多個(gè)所述IN_MUX和多個(gè)所述OUT_MUX的數(shù)據(jù)選擇規(guī)則。
[0010]根據(jù)本發(fā)明實(shí)施例的寄存器輸入輸出互換的抗故障注入攻擊方法的有益效果是:能夠使得存儲(chǔ)加密算法數(shù)據(jù)的寄存器不再固定,降低了故障成功注入到電路中的幾率,提尚了電路的安全性。
[0011]進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,改造后的電路中,每個(gè)所述IN_MUX分別與每組的多個(gè)寄存器對(duì)應(yīng)的多個(gè)ALU相連,每個(gè)所述OUT_MUX分別還與每組的其它寄存器的輸出端相連。
[0012]進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,所述控制數(shù)由隨機(jī)數(shù)發(fā)生器RNG來(lái)產(chǎn)生。
[0013]進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,所述根據(jù)所述控制數(shù)確定每組的多個(gè)寄存器處電路對(duì)應(yīng)的多個(gè)所述IN_MUX和多個(gè)所述OUT_MUX的數(shù)據(jù)選擇規(guī)則具體為:根據(jù)所述控制數(shù)確定每組的多個(gè)寄存器處電路對(duì)應(yīng)的多個(gè)所述IN_MUX的數(shù)據(jù)選擇規(guī)則;以及根據(jù)多個(gè)所述IN_MUX的數(shù)據(jù)選擇規(guī)則確定對(duì)應(yīng)的多個(gè)所述OUT_MUX的數(shù)據(jù)選擇規(guī)則。
[0014]進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,每組的多個(gè)寄存器處電路對(duì)應(yīng)的多個(gè)所述OUT_MUX的數(shù)據(jù)選擇規(guī)則與多個(gè)所述IN_MUX的數(shù)據(jù)選擇規(guī)則保持同步變化。
[0015]進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,根據(jù)所述計(jì)算陣列的互聯(lián)模式來(lái)確定對(duì)需要進(jìn)行輸入輸出互換的所述多個(gè)寄存器是按行分組還是按列分組。
[0016]進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,所述需要進(jìn)行輸入輸出互換的多個(gè)寄存器為存儲(chǔ)所述ALU計(jì)算結(jié)果的寄存器。
[0017]為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明實(shí)施例的寄存器輸入輸出互換的抗故障注入攻擊裝置,包括:第一最大數(shù)據(jù)寬度獲取模塊,用于根據(jù)目標(biāo)集成電路的計(jì)算陣列規(guī)模和所述計(jì)算陣列的互聯(lián)模式,獲取所述目標(biāo)集成電路上能運(yùn)行的第一最大數(shù)據(jù)寬度,其中,所述計(jì)算陣列包括多個(gè)PE,所述PE包括與ALU相連的多個(gè)MUX和與所述ALU相連的寄存器;第二最大數(shù)據(jù)寬度獲取模塊,用于根據(jù)所述第一最大數(shù)據(jù)寬度,獲取所述目標(biāo)集成電路上運(yùn)行加密算法時(shí)需要的第二最大數(shù)據(jù)寬度;分組模塊,用于根據(jù)所述第二最大數(shù)據(jù)寬度對(duì)需要進(jìn)行輸入輸出互換的多個(gè)寄存器進(jìn)行分組;電路改造模塊,用于對(duì)每組的多個(gè)寄存器處電路進(jìn)行改造,其中,改造后的電路中每個(gè)所述寄存器的輸入端和輸出端分別與輸入多路選擇器IN_MUX和輸出多路選擇器OUT_MUX相連;控制數(shù)確定模塊,用于確定每組的多個(gè)寄存器處電路對(duì)應(yīng)的多個(gè)所述IN_MUX和多個(gè)所述OUT_MUX進(jìn)行數(shù)據(jù)選擇的控制數(shù);以及數(shù)據(jù)選擇規(guī)則確定模塊,用于根據(jù)所述控制數(shù)確定每組的多個(gè)寄存器處電路對(duì)應(yīng)的多個(gè)所述IN_MUX和多個(gè)所述OUT_MUX的數(shù)據(jù)選擇規(guī)則。
[0018]進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,改造后的電路中,每個(gè)所述IN_MUX分別與每組的多個(gè)寄存器對(duì)應(yīng)的多個(gè)ALU相連,每個(gè)所述OUT_MUX分別還與每組的其它寄存器的輸出端相連。
[0019]進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,所述控制數(shù)由隨機(jī)數(shù)發(fā)生器RNG來(lái)產(chǎn)生。
[0020]進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,所述數(shù)據(jù)選擇規(guī)則確定模塊具體用于:根據(jù)所述控制數(shù)確定每組的多個(gè)寄存器處電路對(duì)應(yīng)的多個(gè)所述IN_MUX的數(shù)據(jù)選擇規(guī)則;以及根據(jù)多個(gè)所述IN_MUX的數(shù)據(jù)選擇規(guī)則確定對(duì)應(yīng)的多個(gè)所述OUT_MUX的數(shù)據(jù)選擇規(guī)則。
[0021]進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,每組的多個(gè)寄存器處電路對(duì)應(yīng)的多個(gè)所述OUT_MUX的數(shù)據(jù)選擇規(guī)則與多個(gè)所述IN_MUX的數(shù)據(jù)選擇規(guī)則保持同步變化。
[0022]進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,所述分組模塊具體用于:根據(jù)所述計(jì)算陣列的互聯(lián)模式來(lái)確定對(duì)需要進(jìn)行輸入輸出互換的所述多個(gè)寄存器是按行分組還是按列分組。
[0023]進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,所述需要進(jìn)行輸入輸出互換的多個(gè)寄存器為存儲(chǔ)所述ALU計(jì)算結(jié)果的寄存器。
[0024]根據(jù)本發(fā)明實(shí)施例的寄存器輸入輸出互換的抗故障注入攻擊裝置的有益效果是:能夠使得存儲(chǔ)加密算法數(shù)據(jù)的寄存器不再固定,降低了故障成功注入到電路中的幾率,提高了電路的安全性。
【附圖說(shuō)明】
[0025]圖1是根據(jù)本發(fā)明實(shí)施例的寄存器輸入輸出互換的抗故障注入攻擊方法的流程圖;
[0026]圖2是根據(jù)本發(fā)明一個(gè)具體實(shí)施例的寄存器輸入輸出互換的抗故障注入攻擊方法中計(jì)算陣列示意圖;
[0027]圖3是根據(jù)本發(fā)明一個(gè)具體實(shí)施例的寄存器輸入輸出互換的抗故障注入攻擊方法中寄存器分組示意圖;
[0028]圖4是根據(jù)本發(fā)明一個(gè)具體實(shí)施例的寄存器輸入輸出互換的抗故障注入攻擊方法中IN_MUX和OUT_MUX的數(shù)據(jù)選擇規(guī)則示意圖;
[0029]圖5是根據(jù)本發(fā)明一個(gè)具體實(shí)施例的寄存器輸入輸出互換的抗故障注入攻擊方法中改造后PE的工作示意圖;以及
[0030]圖6是根據(jù)本發(fā)明實(shí)施例的寄存器輸入輸出互換的抗故障注入攻擊裝置的方框示意圖。
【具體實(shí)施方式】
[0031]下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制。
[0032]下面參考附圖描述本發(fā)明實(shí)施例的寄存器輸入輸出互換的抗故障注入攻擊方法及寄存器輸入輸出互換的抗故障注