防禦旁路攻擊的CRC運算電路裝置和方法與流程
2023-06-21 18:18:41
本發明涉及計算機安全領域,具體而言是一種可防禦旁路攻擊的計算循環冗餘校驗(cyclicredundancycheck,crc)的電路裝置。
背景技術:
在密碼系統中,硬體電路對不同數據進行運算時,會產生不同的功耗和電磁輻射等旁路信息。
密碼系統的攻擊者可採集這些信息對運算數據進行推測,從而實現系統的攻擊及破解,該種攻擊方式即旁路攻擊。
循環冗餘校驗(cyclicredundancycheck,crc)是一種根據不定長度的數據產生簡短固定位數校驗碼的散列函數,主要用於數據傳輸後的錯誤偵測。
如圖1所示,無旁路攻擊防護的crc電路在計算不同數據時,會產生不同的旁路信息,從而洩漏被計算的數據。
技術實現要素:
本發明目的在於解決上述問題而提供的一種防禦旁路攻擊的crc運算電路裝置和方法,針對無旁路攻擊防護的crc運算在計算不同明文輸入時,會產生不同的旁路信息,從而洩漏明文的問題。其可對帶有掩碼保護的輸入數據進行計算,因計算過程中明文不會出現,故防止了明文的旁路信息的洩漏。
為實現本發明目的還提供一種防禦旁路攻擊的crc運算裝置,包括第一異或單元,第一crc運算單元,第二crc運算單元,第二異或單元;其中:
所述第一異或單元,用於將明文和掩碼進行異或,並將異或後的第一計算值輸入到第一crc運算單元;
所述第一crc運算單元,用於對第一計算值進行運算,得到第一crc運算值;
所述第二crc運算單元,用於將所述掩碼進行運算,得到第二crc運算值;
所述第二異或單元,用於將第一crc運算值與第二crc運算值進行異或,得到明文的運算值。
所述的第一crc運算單元與第二crc運算單元為相同的crc運算單元。
更優地,所述的安全晶片,還包括掩碼生成單元,用於生成一個安全碼作為掩碼。
更優地,所述安全碼為隨機數;
所述隨機數通過隨機數函數random或真隨機數發生器生成。
crc運算電路裝置的隨機數可以由真隨機發生器生成,真隨機數發生器是硬體電路,通過採集熱噪聲等方法生成隨機數。
更優地,所述的crc運算電路裝置,還包括掩碼生成單元,用於生成一個安全碼作為掩碼。
為實現本發明目的還提供一種防禦旁路攻擊的crc運算方法,包括下列步驟:
設置兩個crc運算單元,第一crc運算單元輸入數據為明文異或掩碼的第一計算值;第二crc運算單元輸入數據為掩碼;
啟動第一crc運算單元的計算,故其結果為明文異或掩碼的crc運算值,得到第一crc運算值;
啟動crc運算單元的計算,其結果為掩碼的第二crc運算值;
將第一crc運算單元的結果即第一crc運算值和第二crc運算單元的結果即第二crc運算值異或,得出明文的crc運算值。
更優地,所述的crc運算方法,在設置兩個crc運算單元之前,還包括如下步驟:
生成一個安全碼作為掩碼。
更優地,所述安全碼為隨機數;
所述隨機數通過隨機數函數random生成。
本發明一種防禦旁路攻擊的安全晶片及crc運算電路裝置和方法,具有如下優點:
其可對有掩碼保護的明文數據進行計算,因計算過程中明文不會出現,故防止了明文旁路信息的洩漏。
附圖說明
為了更清楚地說明本發明具體實施方式或現有技術中的技術方案,下面將對具體實施方式或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施方式,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1現有的crc運算結構;
圖2為本發明實施例防禦旁路攻擊的crc運算電路裝置示意圖;
圖3為本發明實施例防禦旁路攻擊的crc運算方法流程圖。
具體實施方式
如圖2、3所示,為了使本發明的目的、技術方案和優點更加清楚明了。結合具體的實施方式,對本發明進行詳細說明。此過程中,省略了對公知結構和技術的描述,用以避免對不必要地混淆本發明的概念。對於這些描述,只是示例性的。並不是限制本發明的範圍。
本實施例的一種防禦旁路攻擊的crc運算電路裝置,如圖2所示,包括掩碼生成單元10,第一異或單元20,第一crc運算單元30,第二crc運算單元40,第二異或單元50;其中:
所述掩碼生成單元10,用於利用隨機數函數random,生成一個隨機數作為掩碼;
所述第一異或單元20,用於將明文和所述掩碼進行異或,並將異或後的第一計算值輸入到第一crc運算單元;
所述第一crc運算單元30,用於對第一計算值進行運算,得到第一crc運算值;
所述第二crc運算單元40,用於將所述掩碼進行crc運算,得到第二crc運算值;
所述第二異或單元50,用於將第一crc運算值與第二crc運算值進行異或,得到明文的crc運算值。
本發明實施例中,利用隨機數函數random或者真隨機數器生成掩碼,並將掩碼與明文進行異或,使得明文在進行crc運算時不可見,利用異或後的第一計算值進行crc運算,得到第一crc運算值。同時,將掩碼進行單獨的crc運算,得到掩碼的第二crc運算值,根據crc運算為線性運算的特點,再利用第一crc運算值和第二crc運算值進行異或,從而得到明文的crc運算值。
crc運算電路裝置的隨機數可以由真隨機發生器生成,真隨機數發生器是硬體電路,通過採集熱噪聲等方法生成隨機數。
本發明實施例還提供一種防禦旁路攻擊的crc運算方法,如圖3所示,包括下列步驟:
步驟s100,利用隨機數函數random,生成一個隨機數作為掩碼;
步驟s200,設置兩個crc運算單元,第一crc運算單元輸入數據為明文異或掩碼的第一計算值;第二crc運算單元輸入數據為掩碼;
如圖3所示,用硬體電路或軟體設置兩個相同的crc運算單元,分別為第一crc運算單元和第二crc運算單元,所述crc運算單元與現有技術中的crc運算單元電路結構相同,只是現有技術中輸入的是明文,而本發明實施例中第一crc運算單元輸入的是明文異或掩碼的第一計算值,而第二crc運算單元輸入的是掩碼。
將明文與該掩碼進行異或,將異或結果即第一計算值輸入第一crc運算單元,並將該掩碼單獨輸入第二crc運算單元。
步驟s300,啟動第一crc運算單元的計算,故其結果為明文異或掩碼的crc運算值,得到第一crc運算值;
步驟s400,啟動crc運算單元的計算,其結果為掩碼的第二crc運算值;
步驟s500,因crc運算為線性運算,將第一crc運算單元的結果即第一crc運算值和第二crc運算單元的結果即第二crc運算值異或,得出明文的crc運算值。
本實施例的防禦旁路攻擊的crc運算結構,針對無旁路攻擊防護的crc運算在計算不同明文輸入時,會產生不同的旁路信息,從而洩漏明文的問題。其可對帶有掩碼保護的輸入數據進行計算,因計算過程中明文不會出現,故防止了明文的旁路信息的洩漏。
本領域普通技術人員應該還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬體、計算機軟體或者二者的結合來實現,為了清楚地說明硬體和軟體的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬體還是軟體方式來執行,取決於技術方案的特定應用和設計約束條件。本領域普通技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的範圍。
結合本文中所公開的實施例描述的方法或算法的步驟可以用硬體、處理器執軌道的軟體模塊,或者二者的結合來實施。軟體模塊可以置於隨機存儲器
(ram)、內存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬碟、可移動磁碟、cd-rom、或技術領域內所公知的任意其它形式的存儲介質中。
以上所述實施例僅表達了本發明的優選的實施方式,其描述較為具體和詳細,但並不能因此而理解為對本發明專利範圍的限制。應當指出的是,對於本領域的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若干變形和改進,這些都屬於本發明的保護範圍。因此,本發明專利的保護範圍應以所附權利要求為準。