數(shù)據(jù)的防攻擊方法及裝置、rsa模冪運算方法、裝置和電路的制作方法
【技術領域】
[0001]本發(fā)明涉及數(shù)據(jù)安全的技術領域,具體涉及一種數(shù)據(jù)的防攻擊方法及裝置、RSA模冪運算的方法、裝置和電路。
【背景技術】
[0002]RSA算法是目前最具有影響力的公鑰加密算法,在智能卡等領域應用較為廣泛。
[0003]在RSA算法的實現(xiàn)過程中,需要為每個用戶產生一對密鑰:一個用于加密的公鑰和一個用于解密的私鑰。利用所述公鑰,可以對被處理的數(shù)據(jù)進行加密,生成密文。利用所述私鑰,可以對所述密文進行解密,獲得被處理的數(shù)據(jù)。
[0004]在目前的應用RSA算法的運算電路中,由于對所述數(shù)據(jù)的不同的位進行加密和解密時所消耗的能量和時間是不同的,因此,攻擊者往往可以通過監(jiān)測和分析這些變化,來破解RSA算法的關鍵信息,故采用目前的應用RSA算法的運算電路具有安全隱患。
【發(fā)明內容】
[0005]本發(fā)明實施例解決的問題是現(xiàn)有的RSA算法的運算電路的安全性問題。
[0006]為解決上述問題,本發(fā)明實施例提供一種數(shù)據(jù)的防攻擊方法,所述數(shù)據(jù)的防攻擊方法包括:
[0007]將數(shù)據(jù)中所要判斷的數(shù)據(jù)位的值寫入第一寄存器,所述數(shù)據(jù)位的值為第一值或第二值,并將所述第一寄存器的其他數(shù)據(jù)位的值置為第一值;
[0008]判斷所述第一寄存器中數(shù)據(jù)位的值為第二值的個數(shù)是否為奇數(shù);
[0009]當所述數(shù)據(jù)位的值為第二值的個數(shù)為奇數(shù)時,向第二寄存器中寫入第二值;當所述數(shù)據(jù)位的值為第二值的個數(shù)為偶數(shù)時,向所述第二寄存器中寫入第一值;
[0010]讀取所述第二寄存器的值,將所述第二寄存器的值作為所述要判斷的數(shù)據(jù)位的值。
[0011 ] 可選地,所述第一值為0,所述第二值為I ;或者,所述第一值為I,所述第二值為O。
[0012]可選地,所述第一寄存器為ACC寄存器,所述第二寄存器為P寄存器。
[0013]本發(fā)明實施例還提供了一種RSA模冪運算方法,所述RSA模冪運算方法包括:
[0014]將數(shù)據(jù)中所要判斷的數(shù)據(jù)位的值寫入第一寄存器,所述數(shù)據(jù)位的值為第一值或第二值,并將所述第一寄存器的其他數(shù)據(jù)位的值置為第一值;
[0015]判斷所述第一寄存器中數(shù)據(jù)位的值為第二值的個數(shù)是否為奇數(shù);
[0016]當所述數(shù)據(jù)位的值為第二值的個數(shù)為奇數(shù)時,向第二寄存器中寫入第二值;當所述數(shù)據(jù)位的值為第二值的個數(shù)為偶數(shù)時,向所述第二寄存器中寫入第一值;
[0017]讀取所述第二寄存器的值,將所述第二寄存器的值作為所述要判斷的數(shù)據(jù)位的值;
[0018]當所述要判斷的數(shù)據(jù)位的值等于第二值時,對所述數(shù)據(jù)位的值作平方運算,再對平方運算的結果作乘法運算;當所述要判斷的數(shù)據(jù)位的值等于第一值時,對所述要判斷的數(shù)據(jù)位的值作平方運算。
[0019]可選地,所述第一值為0,所述第二值為I ;或者,所述第一值為I,所述第二值為O。
[0020]可選地,所述第一寄存器為ACC寄存器,所述第二寄存器為P寄存器。
[0021]本發(fā)明實施例還提供了一種數(shù)據(jù)的防攻擊裝置,所述數(shù)據(jù)的防攻擊裝置包括:
[0022]第一寫入單元,用于將數(shù)據(jù)中所要判斷的數(shù)據(jù)位的值寫入第一寄存器,所述數(shù)據(jù)位的值為第一值或第二值,并將所述第一寄存器的其他數(shù)據(jù)位的值置為第一值;
[0023]判斷單元,用于判斷所述第一寄存器中數(shù)據(jù)位的值為第二值的個數(shù)是否為奇數(shù);
[0024]第二寫入單元,用于在所述數(shù)據(jù)位的值為第二值的個數(shù)為奇數(shù)時,向第二寄存器中寫入第二值,在所述數(shù)據(jù)位為第二值的個數(shù)為偶數(shù)時,向所述第二寄存器中寫入第一值;
[0025]讀取單元,用于讀取所述第二寄存器的值,將所述第二寄存器的值作為所述要判斷的數(shù)據(jù)位的值。
[0026]可選地,所述第一寄存器為ACC寄存器,所述第二寄存器為P寄存器。
[0027]本發(fā)明實施例還提供了一種RSA模冪運算裝置,所述RSA模冪運算裝置包括:
[0028]第一寫入單元,用于將數(shù)據(jù)中所要判斷的數(shù)據(jù)位的值寫入第一寄存器,所述數(shù)據(jù)位的值為第一值或第二值,并將所述第一寄存器的其他數(shù)據(jù)位的值置為第一值;
[0029]判斷單元,用于判斷所述第一寄存器中數(shù)據(jù)位的值為第二值的個數(shù)是否為奇數(shù);
[0030]第二寫入單元,用于在所述數(shù)據(jù)位的值為第二值的個數(shù)為奇數(shù)時,向第二寄存器中寫入第二值,在所述數(shù)據(jù)位為第二值的個數(shù)為偶數(shù)時,向所述第二寄存器中寫入第一值;
[0031]讀取單元,用于讀取所述第二寄存器的值,將所述第二寄存器的值作為所述要判斷的數(shù)據(jù)位的值;
[0032]第一運算單元,用于在所述要判斷的數(shù)據(jù)位的值等于第二值時,對所述要判斷的數(shù)據(jù)位的值作平方運算,再對平方運算的結果作乘法運算;
[0033]第二運算單元,用于在所述要判斷的數(shù)據(jù)位的值等于第一值時,對所述要判斷的數(shù)據(jù)位的值作平方運算。
[0034]本發(fā)明實施例還提供了一種RSA模冪運算電路,所述RSA模冪運算電路包括:處理器、與所述處理器連接的第一寄存器、與所述處理器連接的第二寄存器,以及與所述處理器連接的乘法器,所述處理器包括:
[0035]第一寫入單元,與所述第一寄存器連接,用于將所要判斷的數(shù)據(jù)位的值寫入所述第一寄存器,所述數(shù)據(jù)位的值為第一值或第二值,并將所述第一寄存器的其他數(shù)據(jù)位的值置為第一值;
[0036]判斷單元,與所述第一寄存器連接,用于判斷所述第一寄存器中數(shù)據(jù)位的值為第二值的個數(shù)是否為奇數(shù);
[0037]第二寫入單元,與所述判斷單元及所述第二寄存器連接,用于在所述數(shù)據(jù)位的值為第二值的個數(shù)為奇數(shù)時,向所述第二寄存器中寫入第二值,在所述數(shù)據(jù)位的值為第二值的個數(shù)為偶數(shù)時,向所述第二寄存器中寫入第一值;
[0038]讀取單元,與所述第二寄存器及所述乘法器連接,用于讀取所述第二寄存器的值,將所述第二寄存器的值作為所述要判斷的數(shù)據(jù)位的值輸入至所述乘法器;
[0039]所述乘法器,用于當所述要判斷的數(shù)據(jù)位的值等于第二值時,先對所述要判斷的數(shù)據(jù)位的值作平方運算,再對平方運算的結果作乘法運算;當所述要判斷的數(shù)據(jù)位的值等于第一值時,對所述要判斷的數(shù)據(jù)位的值作平方運算。
[0040]可選地,所述第一寄存器為ACC寄存器,所述第二寄存器為P寄存器。
[0041]與現(xiàn)有技術相比,本發(fā)明實施例的技術方案具有以下優(yōu)點:
[0042]通過將數(shù)據(jù)中所要判斷的數(shù)據(jù)位的值寫入第一寄存器,從而無須通過移位的方式來選擇要判斷的數(shù)據(jù)位的操作,因此可以避免因移位選擇要判斷的數(shù)據(jù)位的操作時所引起的功耗差異,故可以減小執(zhí)行不同的數(shù)據(jù)位的值所引起的功耗差異。并且,將所述要判斷的數(shù)據(jù)位的值寫入第一寄存器后,根據(jù)所述第一寄存器中數(shù)據(jù)位的值為第二值的個數(shù)是否為奇數(shù),向第二寄存器中寫入相關數(shù)據(jù),直接將所述第二寄存器中所述相關數(shù)據(jù)的值作為所要判斷的數(shù)據(jù)位的值,而無須進行數(shù)據(jù)位的值是否為第二值的判斷操作,避免因進行數(shù)據(jù)位的值是否為第二值的判斷操作而引起的執(zhí)行不同數(shù)據(jù)位的值時的功耗差異。這樣,應用本發(fā)明實施例中的數(shù)據(jù)防攻擊方法,可以有效地減小執(zhí)行不同的數(shù)據(jù)位的值而引起的功耗差異,降低攻擊者通過分析功耗的變化獲得RSA算法的關鍵信息的可能,提高應用RSA算法的運算電路的安全性。
【附圖說明】
[0043]圖1是現(xiàn)有的RSA模幕運算方法的一種實施例流程圖;
[0044]圖2是現(xiàn)有的RSA模冪運算方法的另一種實施例流程圖;
[0045]圖3是本發(fā)明實施例中RSA模冪運算方法的實施例流程;
[0046]圖4是本發(fā)明實施例中數(shù)據(jù)的防攻擊裝置的結構示意圖;
[0047]圖5是本發(fā)明實施例中RSA模冪運算裝置的結構示意圖。
【具體實施方式】
[0048]目前,通常采用如圖1或圖2中所示的方法實現(xiàn)RSA模冪運算。下面結合圖1及圖2對現(xiàn)有的RSA模冪運算方法進行描述。
[0049]參考圖1所示的一種現(xiàn)有的RSA模冪運算的方法,包括如下步驟:
[0050]步驟100,獲取數(shù)據(jù);
[0051]步驟102:獲取所述數(shù)據(jù)后,選擇所述數(shù)據(jù)中的某一數(shù)據(jù)位,判斷所選擇的數(shù)據(jù)位的值是否為1,當所選擇的數(shù)據(jù)位的值為I時,執(zhí)行步驟104 ;當所選擇的數(shù)據(jù)位的值為O時,執(zhí)行步驟108 ;
[0052]步驟104:對所選擇的數(shù)據(jù)位的值進行平方運算;
[0053]步驟106:對步驟104中平方運算的結果進行乘法運算;
[0054]步驟108:對所選擇的數(shù)據(jù)位的