本發(fā)明涉及電子電路技術(shù)領(lǐng)域,具體涉及一種加/解密電路。
背景技術(shù):
密碼算法在相應(yīng)的密碼模塊中運(yùn)行時(shí),如果受到干擾或者攻擊,比如,電源抖動(dòng)、時(shí)鐘抖動(dòng)、激光注入或者電磁注入等,所述密碼模塊的輸出可能會(huì)被攻擊者操控,或者直接輸出一個(gè)錯(cuò)誤的值。
目前,在應(yīng)用分組對稱密碼算法的密碼模塊的加/解密電路中,為了提高抗干擾或攻擊能力,采用N個(gè)輪變換單元對輸入數(shù)據(jù)進(jìn)行加密或解密處理,并在所述密碼模塊輸出加密或解密后的數(shù)據(jù)前,采用回旋校驗(yàn)的方法來驗(yàn)證加密或解密后的數(shù)據(jù)是否正確。其中,N為對輸入數(shù)據(jù)進(jìn)行加密或解密處理時(shí),執(zhí)行輪變換加密/解密運(yùn)算的總次數(shù)。例如,對輸入數(shù)據(jù)進(jìn)行加密后,將所述加密后的數(shù)據(jù)通過密碼解密運(yùn)算,通過將解密后的數(shù)據(jù)與所述密碼模塊的輸入數(shù)據(jù)或者對所述輸入數(shù)據(jù)進(jìn)行加密運(yùn)算的中間結(jié)果進(jìn)行比較,最終根據(jù)比較結(jié)果驗(yàn)證所述密碼模塊是否受到干擾或攻擊。
然而,上述加/解密電路結(jié)構(gòu)復(fù)雜,導(dǎo)致所述電路占用的面積較大。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明解決的技術(shù)問題是在保證防攻擊性能的情況下,如何減小加/解密電路的面積。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供一種加/解密電路,所述加/解密電路包括:第一選擇器、加/解密運(yùn)算器、分配器、比較器及控制器,其中,
所述第一選擇器的輸入端分別與數(shù)據(jù)輸入端及所述分配器的第一輸出端連接,適于在所述控制器的控制下,選擇相應(yīng)的輸入進(jìn)行輸出;
所述加/解密運(yùn)算器的輸入端與所述第一選擇器的輸出端連接,適于在所述控制器的控制下,對輸入的數(shù)據(jù)執(zhí)行加密運(yùn)算或解密運(yùn)算;所述加/解密運(yùn)算器包括n個(gè)輪變換單元,適于在所述控制器的控制下,對所述第一選擇器 的輸出執(zhí)行N輪的輪變換加密/解密運(yùn)算,n為自然數(shù),且1≤n<N,N為所述加/解密運(yùn)算器對所述第一選擇器的輸出執(zhí)行輪變換加密/解密運(yùn)算的總次數(shù);
所述分配器的輸入端與所述加/解密運(yùn)算器的輸出端連接,適于在所述控制器的控制下,將所述加/解密運(yùn)算器最終運(yùn)算結(jié)果或中間運(yùn)算結(jié)果通過對應(yīng)的輸出端進(jìn)行輸出,其中,所述分配器的第一輸出端及第二輸出端分別用于輸出執(zhí)行回旋校驗(yàn)所需的運(yùn)算結(jié)果;
所述比較器的輸入端分別與所述分配器的第一輸出端及第二輸出端連接,適于對所述第一輸出端輸出的數(shù)據(jù)與第二輸出端輸出的數(shù)據(jù)進(jìn)行比較,并輸出比較結(jié)果;
所述控制器適于控制所述第一選擇器的輸出,控制加/解密運(yùn)算器對所述第一選擇器的輸出執(zhí)行加密運(yùn)算或解密運(yùn)算,以及控制所述分配器將所述加/解密運(yùn)算器的最終運(yùn)算結(jié)果或中間運(yùn)算結(jié)果通過對應(yīng)的輸出端進(jìn)行輸出。
可選地,所述加/解密運(yùn)算器由一個(gè)輪變換單元組成,所述輪變換單元適于在所述控制器的控制下,對所述第一選擇器的輸出執(zhí)行N輪的輪變換加密及解密運(yùn)算。
可選地,所述加/解密運(yùn)算單元由兩個(gè)輪變換單元組成,所述兩個(gè)輪變換單元適于在所述控制器的控制下,分別對所述第一選擇器的輸出執(zhí)行N輪的輪變換加密或解密運(yùn)算。
可選地,在2≤n<N時(shí),所述加/解密電路還包括:第二選擇器,所述第二選擇器的輸入端分別與各個(gè)輪變換單元的輸出端連接,適于在所述控制器的控制下,選擇相應(yīng)輪變換單元的運(yùn)算結(jié)果進(jìn)行輸出。
可選地,當(dāng)所述第一選擇器輸出為所述加/解密運(yùn)算器第j輪輪變換運(yùn)算結(jié)果時(shí),所述加/解密運(yùn)算器適于在所述控制器的控制下,對所述第j輪輪變換運(yùn)算結(jié)果執(zhí)行j-i輪的輪變換逆運(yùn)算,其中,1≤i<j≤N;
所述分配器適于在所述控制器的控制下,將所述第i輪輪變換運(yùn)算的結(jié)果及對所述第j輪輪變換運(yùn)算結(jié)果執(zhí)行j-i輪的輪變換逆運(yùn)算后的結(jié)果,通過對應(yīng)的輸出端輸入至所述比較器進(jìn)行比較。
可選地,所述加/解密電路還包括:第三選擇器,所述第三選擇器的輸入端分別與預(yù)設(shè)數(shù)據(jù)輸出端及所述分配器的第三輸出端連接,適于根據(jù)所述比較器的比較結(jié)果選擇相應(yīng)的輸入進(jìn)行輸出,所述分配器的第三輸出端適于輸出第N輪輪變換加密運(yùn)算或解密運(yùn)算的結(jié)果,所述預(yù)設(shè)數(shù)據(jù)與所述分配器的第三輸出端輸出的數(shù)據(jù)不同。
與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例的技術(shù)方案具有以下有益效果:
通過在加/解密電路中設(shè)置控制器,進(jìn)而可以由所述控制器來控制加/解密運(yùn)算器對輸入數(shù)據(jù)進(jìn)行加/解密運(yùn)算。此時(shí),所述加/解密運(yùn)算器僅采用n個(gè)輪變換單元即可完成加/解密運(yùn)算功能,而無須采用N個(gè)輪變換單元才能完成加/解密運(yùn)算功能。由于n<N,因此可以在保證防攻擊性能的情況下,減少輪變換單元的數(shù)量,也就可以減小加/解密電路的面積。
通過控制所述加/解密運(yùn)算器對所述第j輪輪變換運(yùn)算結(jié)果執(zhí)行j-i輪的輪變換逆運(yùn)算,以及控制所述分配器將所述第i輪輪變換運(yùn)算的結(jié)果,及對所述第j輪輪變換運(yùn)算結(jié)果執(zhí)行j-i輪的輪變換逆運(yùn)算后的結(jié)果,通過對應(yīng)的輸出端輸入至所述比較器進(jìn)行比較,從而可以縮短所述加/解密電路進(jìn)行回旋校驗(yàn)的時(shí)間,提高所述加/解密電路的運(yùn)算效率。
附圖說明
圖1是本發(fā)明實(shí)施例中一種加/解密電路的結(jié)構(gòu)示意圖;
圖2是本發(fā)明實(shí)施例中另一種加/解密電路的結(jié)構(gòu)示意圖;
圖3是本發(fā)明實(shí)施例中又一種加/解密電路的結(jié)構(gòu)示意圖。
具體實(shí)施方式
目前,加/解密電路中通常采用N個(gè)輪變換單元對輸入數(shù)據(jù)進(jìn)行加/解密運(yùn)算,導(dǎo)致所述加/解密電路的結(jié)構(gòu)復(fù)雜,電路面積較大。
針對上述問題,本發(fā)明實(shí)施例提供了一種加/解密電路,所述電路中設(shè)置有控制器,及加/解密運(yùn)算器。通過所述控制器可以控制所述加/解密運(yùn)算器執(zhí)行加密運(yùn)算或解密運(yùn)算,因此,所述加/解密運(yùn)算器無須保護(hù)N個(gè)輪變換單元,僅需n個(gè)輪變換單元即可完成執(zhí)行加密運(yùn)算或解密運(yùn)算,由于n<N,故可以 簡化所述加/解密電路的結(jié)構(gòu),減小所述加/解密電路的電路面積。
為使本發(fā)明的上述目的、特征和有益效果能夠更為明顯易懂,下面結(jié)合附圖對本發(fā)明的具體實(shí)施例做詳細(xì)地說明。
如圖1所示,本發(fā)明實(shí)施例提供了一種加/解密電路。所述電路可以包括:第一選擇器1、加/解密運(yùn)算器2、分配器3、比較器4及控制器5。其中:
所述第一選擇器1的輸入端分別與數(shù)據(jù)輸入端In1及所述分配器3的第一輸出端U1連接,適于在所述控制器5的控制下,選擇相應(yīng)的輸入進(jìn)行輸出。
所述加/解密運(yùn)算器2的輸入端與所述第一選擇器1的輸出端連接,適于在所述控制器5的控制下,對輸入的數(shù)據(jù)執(zhí)行加密運(yùn)算或解密運(yùn)算。
所述分配器3的輸入端與所述加/解密運(yùn)算器2的輸出端連接,適于在所述控制器5的控制下,將所述加/解密運(yùn)算器2最終運(yùn)算結(jié)果或中間運(yùn)算結(jié)果通過對應(yīng)的輸出端進(jìn)行輸出。其中,所述分配器3的第一輸出端U1及第二輸出端U2分別用于輸出執(zhí)行回旋校驗(yàn)所需的運(yùn)算結(jié)果。
所述比較器4的輸入端分別與所述分配器3的第一輸出端及U1第二輸出端U2連接,適于對所述第一輸出端U1輸出的數(shù)據(jù)與第二輸出端U2輸出的數(shù)據(jù)進(jìn)行比較,并輸出比較結(jié)果;
所述控制器5適于控制所述第一選擇器1的輸出,控制加/解密運(yùn)算器2對所述第一選擇器1的輸出執(zhí)行加密運(yùn)算或解密運(yùn)算,以及控制所述分配器3將所述加/解密運(yùn)算器2的最終運(yùn)算結(jié)果或中間運(yùn)算結(jié)果通過對應(yīng)的輸出端進(jìn)行輸出。
在具體實(shí)施中,所述加/解密運(yùn)算器2可以包括n個(gè)輪變換單元。所述n個(gè)輪變換單元適于在所述控制器5的控制下,對所述第一選擇器1的輸出執(zhí)行N輪的輪變換加密/解密運(yùn)算。其中,n為自然數(shù),且1≤n<N,N為所述加/解密運(yùn)算器2對所述第一選擇器1的輸出執(zhí)行輪變換加密/解密運(yùn)算的總次數(shù)。
在本發(fā)明的一實(shí)施例中,如圖1所示,所述加/解密運(yùn)算器2可以僅包括1個(gè)輪變換單元21。所述輪變換單元21可以在所述控制器5的控制下,對輸 入數(shù)據(jù)執(zhí)行N輪的加密運(yùn)算或解密運(yùn)算。
在本發(fā)明的另一實(shí)施例中,如圖2所示,所述加/解密運(yùn)算器2可以包括2個(gè)輪變換單元,分別為輪變換單元22及23。其中所述輪變換單元22可以在所述控制器5的控制下,對輸入數(shù)據(jù)執(zhí)行N輪的加密運(yùn)算。所述輪變換單元23可以在所述控制器5的控制下,對輸入數(shù)據(jù)執(zhí)行N輪的解密運(yùn)算。
在本發(fā)明的其他實(shí)施例中,如圖3所示,所述加/解密運(yùn)算器2可以包括n個(gè)輪變換單元,分別為輪變換單元24至2(n+3)。所述控制器5可以控制輪變換單元24至22(n+3)執(zhí)行相應(yīng)的加密或解密運(yùn)算。
在具體實(shí)施中,當(dāng)2≤n<N時(shí),如圖2及圖3所示,所述加/解密電路還包括:第二選擇器6。所述第二選擇器6的輸入端分別與各個(gè)輪變換單元的輸出端連接,適于在所述控制器5的控制下,選擇相應(yīng)輪變換單元的運(yùn)算結(jié)果進(jìn)行輸出。其中,當(dāng)n=2時(shí),所述第二選擇器6為二選一的選擇器。當(dāng)2<n時(shí),所述第二選擇器6為多選一的選擇器。
下面對所述加/解密電路的工作原理進(jìn)行詳細(xì)介紹:
由于所述第一選擇器1不僅與數(shù)據(jù)輸入端In1連接,還與所述分配器3的第一輸出端U1連接,因此,在控制器5的控制下,所述第一選擇器1可以選擇輸出所輸入的數(shù)據(jù),也可以選擇輸出所述加/解密運(yùn)算器2對輸出的數(shù)據(jù)執(zhí)行加密運(yùn)算或解密運(yùn)算的中間運(yùn)算結(jié)果或最終運(yùn)算結(jié)果??梢岳斫獾氖?,當(dāng)所述加/解密電路需要對輸入數(shù)據(jù)進(jìn)行加/解密處理時(shí),所述控制器5控制所述第一選擇器1輸出所輸入的數(shù)據(jù),進(jìn)而由加/解密運(yùn)算器2對輸入數(shù)據(jù)進(jìn)行加/解密處理,再由所述分配器3輸出相應(yīng)的處理結(jié)果。當(dāng)所述加/解密電路需要對輸入數(shù)據(jù)的加/解密處理結(jié)果進(jìn)行回旋校驗(yàn)時(shí),所述控制器5控制所述第一選擇器1輸出加/解密處理過程中產(chǎn)生的中間運(yùn)算結(jié)果或最終運(yùn)算結(jié)果,所述控制器5控制所述加/解密運(yùn)算器2對所述中間運(yùn)算結(jié)果或最終運(yùn)算結(jié)果進(jìn)行加/解密處理,再由所述分配器3將相應(yīng)的處理結(jié)果輸出至比較器4進(jìn)行比較。其中,Out1為加/解密處理的最終運(yùn)算結(jié)果的輸出端,Out2為回旋校驗(yàn)結(jié)果輸出端。
具體地,所述加/解密電路依次按照如下步驟進(jìn)行數(shù)據(jù)處理:
步驟1、輸入數(shù)據(jù)通過數(shù)據(jù)輸入端In1輸入至所述第一選擇器1。
步驟2、所述控制器5控制所述第一選擇器1將輸入數(shù)據(jù)輸出至所述加/解密運(yùn)算器2。
步驟3、所述控制器5控制所述加/解密運(yùn)算器2對所述第一選擇器1輸出的數(shù)據(jù)執(zhí)行加密運(yùn)算或解密運(yùn)算。
當(dāng)所述加/解密運(yùn)算器2僅包括1個(gè)輪變換單元21時(shí),所述控制器5控制所述輪變換單元21對輸入數(shù)據(jù)執(zhí)行加密運(yùn)算或解密運(yùn)算。當(dāng)所述加/解密運(yùn)算器2包括2個(gè)輪變換單元時(shí),所述控制器5分別控制所述輪變換單元對輸入數(shù)據(jù)執(zhí)行加密運(yùn)算或解密運(yùn)算。當(dāng)所述加/解密運(yùn)算器2包括多個(gè)輪變換單元時(shí),所述控制器5分別控制所述多個(gè)輪變換單元對輸入數(shù)據(jù)執(zhí)行加密運(yùn)算或解密運(yùn)算。
需要說明的是,當(dāng)所述加/解密運(yùn)算器2中輪變換單元的個(gè)數(shù)大于等于2個(gè)時(shí),在執(zhí)行步驟4之前,還包括步驟6:所述控制器5控制所述第二選擇器6選擇相應(yīng)輪變換單元的運(yùn)算結(jié)果輸出至所述分配器3。
步驟4、所述控制器5控制所述分配器3將所述加/解密運(yùn)算器2的最終運(yùn)算結(jié)果或中間運(yùn)算結(jié)果通過對應(yīng)的輸出端進(jìn)行輸出。
具體地,所述控制器5可以控制所述分配器3將加/解密處理的最終運(yùn)算結(jié)果通過第三輸出端U3輸出,將加/解密處理的最終運(yùn)算結(jié)果或中間運(yùn)算結(jié)果通過第一輸出端U1及第二輸出端U2輸出至比較器4,由所述比較器4對加/解密處理的最終運(yùn)算結(jié)果進(jìn)行回旋校驗(yàn)。
在本發(fā)明的一實(shí)施例中,所述加/解密電路可以按照如下方法對加/解密處理的最終運(yùn)算結(jié)果進(jìn)行回旋校驗(yàn):
在控制器5的控制下,所述加/解密運(yùn)算器2對輸入數(shù)據(jù)進(jìn)行N輪的輪變換加密運(yùn)算或解密運(yùn)算。運(yùn)算結(jié)束后,所述控制器5可以控制所述加/解密運(yùn)算器2對第j輪輪變換運(yùn)算結(jié)果執(zhí)行j-i輪的輪變換逆運(yùn)算,以及控制所述分配器3分別將所述逆運(yùn)算后的結(jié)果以及第i輪輪變換運(yùn)算的結(jié)果通過第一輸出端U1或第二輸出端U2輸出至比較器4。所述比較器5對所述第一輸出端U1輸出的數(shù)據(jù)與第二輸出端U2輸出的數(shù)據(jù)進(jìn)行比較,并輸出比較結(jié)果。其中, 1≤i<j≤N
例如,當(dāng)所述加/解密運(yùn)算器2對輸入數(shù)據(jù)進(jìn)行N輪的輪變換加密運(yùn)算時(shí),所述第j輪及第i輪輪變換運(yùn)算結(jié)果分別為第j輪及第i輪輪變換加密運(yùn)算結(jié)果,所述對第j輪輪變換運(yùn)算結(jié)果執(zhí)行j-i輪的輪變換逆運(yùn)算,即對第j輪輪變換加密運(yùn)算結(jié)果執(zhí)行j-i輪的輪變換解密運(yùn)算。
當(dāng)所述加/解密運(yùn)算器2對輸入數(shù)據(jù)進(jìn)行N輪的輪變換解密運(yùn)算時(shí),所述第j輪及第i輪輪變換運(yùn)算結(jié)果分別為第j輪及第i輪輪變換解密運(yùn)算結(jié)果,所述對第j輪輪變換運(yùn)算結(jié)果執(zhí)行j-i輪的輪變換逆運(yùn)算,即對第j輪輪變換解密運(yùn)算結(jié)果執(zhí)行j-i輪的輪變換加密運(yùn)算。
在具體實(shí)施中,本領(lǐng)域技術(shù)人員可以根據(jù)自身需求設(shè)置i及j的值。例如,j=i+1,此時(shí)第j輪及第i輪輪變換運(yùn)算結(jié)果為相鄰兩輪輪變換的運(yùn)算結(jié)果。又如,在所述加/解密運(yùn)算器2的密碼算法為DES算法時(shí),N=16,此時(shí)i的值可以為15,j的值可以為16。
采用上述回旋校驗(yàn)方法進(jìn)行回旋校驗(yàn),由于僅執(zhí)行j-i輪的輪變換逆運(yùn)算即可對加/解密處理的最終運(yùn)算結(jié)果進(jìn)行回旋校驗(yàn),因此可以縮短所述加/解密電路進(jìn)行回旋校驗(yàn)的時(shí)間,提高所述加/解密電路的運(yùn)算效率。
在具體實(shí)施中,為了進(jìn)一步提高所述加/解密電路的安全性,如圖1所示,所述加/解密電路還可以包括:第三選擇器7,所述第三選擇器7的輸入端分別與所述分配器3的第三輸出端U3及預(yù)設(shè)數(shù)據(jù)輸出端In2連接,適于根據(jù)比較器4的比較結(jié)果選擇相應(yīng)的數(shù)據(jù)輸出。
其中,所述預(yù)設(shè)數(shù)據(jù)與所述分配器3的第三輸出端U3輸出的數(shù)據(jù)不同,例如,所述預(yù)設(shè)數(shù)據(jù)可以為“0”,也可以為隨機(jī)數(shù)。這樣,當(dāng)所述分配器3輸入至所述比較器4的兩個(gè)數(shù)據(jù)不同時(shí),加/解密處理的最終運(yùn)算結(jié)果雖然是錯(cuò)誤結(jié)果,但與加/解密處理過程中泄露的信息仍存在一定聯(lián)系。若所述第三選擇器7將所述預(yù)設(shè)數(shù)據(jù)輸出,可以使得攻擊者無法獲得該錯(cuò)誤結(jié)果,進(jìn)一步提高所述加/解密電路的安全性。
在具體實(shí)施中,所述加/解密運(yùn)算器2可以采用對稱算法對輸入數(shù)據(jù)進(jìn)行加/解密處理,也可以采用非對稱算法對輸入數(shù)據(jù)進(jìn)行加/解密處理。其中,所 述對稱加密算法可以包括DES算法、RC2算法、RC4算法、RC5算法和Blowfish算法等。所述非對稱加密算法可以包括RSA算法、ECC算法和Knapsack算法等。具體無論采用何種加密算法對輸入數(shù)據(jù)進(jìn)行加/解密處理,均不構(gòu)成對本發(fā)明的限制,且均在本發(fā)明的保護(hù)范圍之內(nèi)。
需要說明的是,在具體實(shí)施中,所述加/解密電路的整個(gè)控制過程可以是由所述控制器通過程序來指令相關(guān)的硬件完成的。該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括:ROM、RAM、EEPROM、FLASH、磁盤或光盤等。
由上述內(nèi)容可知,本發(fā)明實(shí)施例中,所述加/解密電路通過控制器5控制加/解密運(yùn)算器2執(zhí)行相應(yīng)的加密運(yùn)算或解密運(yùn)算,可以使得所述加/解密運(yùn)算器2僅包括n個(gè)輪變換單元即可實(shí)現(xiàn)相應(yīng)的運(yùn)算功能,減小了輪變換單元的數(shù)量,也就減小了所述加/解密電路的面積和功耗。并且,由于各個(gè)輪變換單元均由所述控制器5進(jìn)行控制,可以使得運(yùn)行過程中發(fā)生的錯(cuò)誤不易復(fù)現(xiàn),增加攻擊難度。另外,由于所述控制器5可以控制每個(gè)輪變換單元進(jìn)行加密運(yùn)算或解密運(yùn)算,因此所述控制器5可以控制所述n個(gè)輪變換單元可以實(shí)現(xiàn)任意輪次的加/解運(yùn)算。
雖然本發(fā)明披露如上,但本發(fā)明并非限定于此。任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動(dòng)與修改,因此本發(fā)明的保護(hù)范圍應(yīng)當(dāng)以權(quán)利要求所限定的范圍為準(zhǔn)。