本發明涉及存儲器數據處理技術領域,具體涉及一種存儲器的數據寫入、讀出方法及裝置。
背景技術:
目前,智能卡內總線數據的存儲及傳輸過程容易受到干擾或攻擊。為了提高智能卡的抗干擾或抗攻擊能力,通常在向智能卡的存儲器寫入的數據中增加校驗數據,進而可以通過所述校驗數據來檢查相應數據的存儲及傳輸是否發生錯誤。
然而,上述抗干擾攻擊方法中,通過所述校驗數據僅能檢查寫入至存儲器中的數據本身是否發生錯誤,而無法檢查所讀出的數據是否為用戶輸入的目標地址的數據,導致所述存儲器的安全性較低。
技術實現要素:
本發明解決的技術問題是如何進一步提高存儲器的安全性。
為解決上述技術問題,本發明實施例提供一種存儲器的數據寫入方法,所述方法包括:
當接收到待寫入的數據D及所述待寫入的數據D的目標地址數據A時,對所述待寫入的數據D進行加密處理,獲得加密數據T;
分別對所述加密數據T及所述目標地址數據A進行壓縮處理,獲得壓縮后的加密數據T1及目標地址數據A1,并根據壓縮后的加密數據T1及目標地址數據A1獲得校驗數據S;
將所述加密數據T及校驗數據S作為碼字寫入至所述存儲器。
可選地,所述分別對所述加密數據T及所述目標地址數據A進行壓縮處理,獲得壓縮后的加密數據T1及目標地址數據A1,并根據壓縮后的T1及目標地址A1數據獲得校驗數據S,包括:
調用所述第一壓縮函數按照預設位長對所述加密數據T進行壓縮處理,獲得壓縮后的加密數據T1;
調用第二壓縮函數按照所述預設位長對所述目標地址數據A進行壓縮處理,獲得壓縮后的目標地址數據A1;
對所述壓縮后的加密數據T1及目標地址數據A1執行第一運算,獲得校驗數據S。
可選地,所述預設位長與所述存儲器的校驗能力、所述待寫入的數據D的位長、所述目標地址數據A的位長及所述第一壓縮函數和第二壓縮函數相關。
可選地,所述第一運算為異或運算。
本發明實施例還提供了一種存儲器的數據讀出方法,所述方法包括:
接收待讀取數據D的目標地址數據A;
根據所述目標地址數據A讀取所述存儲器中相應位置處的碼字;
按照預設位長將所述碼字拆分為加密數據T及校驗數據S;
分別對所述加密數據T及所述目標地址數據A進行壓縮處理,獲得壓縮后的加密數據T1及目標地址數據A1;
根據所述壓縮后的加密數據T1、目標地址數據A1及校驗數據S,對所述加密數據T進行校驗,并根據校驗結果確定所述存儲器的輸出。
可選地,所述分別對所述加密數據T及所述目標地址數據A進行壓縮處理,獲得壓縮后的加密數據T1及目標地址數據A1,包括:
調用第一壓縮函數按照預設位長對所述加密數據T進行壓縮處理,獲得壓縮后的加密數據T1;
調用第二壓縮函數按照所述預設位長對所述目標地址數據A進行壓縮處理,獲得壓縮后的目標地址數據A1。
可選地,所述根據所述壓縮后的加密數據T1、目標地址數據A1及校驗數據S,對所述加密數據T進行校驗,并根據校驗結果確定所述存儲器的輸 出,包括:
對所述壓縮后的加密數據T1與校驗數據S執行第一運算;
判斷所述第一運算后的結果與所述壓縮后的目標地址數據A1是否相等;
當所述第一運算后的結果與所述壓縮后的目標地址數據A1相等時,判定所述加密數據T為正確數據,對所述加密數據T進行解密后輸出。
可選地,所述根據所述壓縮后的加密數據T1、目標地址數據A1及校驗數據S,對所述加密后的數據T進行校驗,并根據校驗結果確定所述存儲器的輸出,還包括:
當所述第一運算后的結果與所述壓縮后的目標地址數據A1不相等時,判定所述加密數據T為錯誤數據,輸出相應的提示信號,以調用相應的防護策略。
可選地,所述第一運算為異或運算。
可選地,所述預設位長與所述存儲器的校驗能力、所述待讀取數據D的位長、所述目標地址數據A的位長及所述第一壓縮函數和第二壓縮函數相關。
本發明實施例還提供了一種存儲器的數據寫入裝置,所述裝置包括:
加密單元,適于當接收到待寫入的數據D及所述待寫入的數據D的目標地址數據A時,對所述待寫入的數據D進行加密處理,獲得加密數據T;
第一處理單元,適于分別對所述加密數據T及所述目標地址數據A進行壓縮處理,獲得壓縮后的加密數據T1及目標地址數據A1,并根據壓縮后的加密數據T1及目標地址數據A1獲得校驗數據S;
寫入單元,適于將所述加密數據T及校驗數據S作為碼字寫入至所述存儲器。
可選地,所述第一處理單元包括:
第一處理子單元,適于調用所述第一壓縮函數按照預設位長對所述加密數據T進行壓縮處理,獲得壓縮后的加密數據T1;
第二處理子單元,適于調用第二壓縮函數按照所述預設位長對所述目標 地址數據A進行壓縮處理,獲得壓縮后的目標地址數據A1;
第一運算子單元,適于對所述壓縮后的加密數據T1及目標地址數據A1執行第一運算,獲得校驗數據S。
可選地,所述預設位長與所述存儲器的校驗能力、所述待寫入的數據D的位長、所述目標地址數據A的位長及所述第一壓縮函數和第二壓縮函數相關。
可選地,所述第一運算子單元適于對所述壓縮后的加密數據T1及目標地址數據A1執行異或運算,獲得校驗數據S。
本發明實施例還提供了一種存儲器的數據讀出裝置,所述裝置包括:
接收單元,適于接收待讀取數據D的目標地址數據A;
讀取單元,適于根據所述目標地址數據A讀取所述存儲器中相應位置處的碼字;
拆分單元,適于按照預設位長將所述碼字拆分為加密數據T及校驗數據S;
第二處理單元,適于分別對所述加密數據T及所述目標地址數據A進行壓縮處理,獲得壓縮后的加密數據T1及目標地址數據A1;
第三處理單元,適于根據所述壓縮后的加密數據T1、目標地址數據A1及校驗數據S,對所述加密后的數據T進行校驗,并根據校驗結果確定所述存儲器的輸出。
可選地,所述第二處理單元包括:
第三處理子單元,適于調用第一壓縮函數按照預設位長對所述加密數據T進行壓縮處理,獲得壓縮后的加密數據T1;
第四處理子單元,適于調用第二壓縮函數按照所述預設位長對所述目標地址數據A進行壓縮處理,獲得壓縮后的目標地址數據A1。
可選地,所述第三處理單元包括:
第二運算子單元,適于對所述壓縮后的加密數據T1與校驗數據S執行第 一運算;
判斷子單元,適于判斷所述第一運算后的結果與所述壓縮后的目標地址數據A1是否相等;
解密子單元,適于當所述第一運算后的結果與所述壓縮后的目標地址數據A1相等時,判定所述加密數據T通過校驗,對所述加密數據T進行解密后輸出。
可選地,所述第三處理單元還包括:
提示子單元,適于當所述第一運算后的結果與所述壓縮后的目標地址數據A1不相等時,判定所述加密數據T未通過校驗,輸出相應的提示信號,以調用相應的防護策略。
可選地,所述第二運算子單元適于對所述壓縮后的加密數據T1及校驗數據S執行異或運算。
可選地,所述預設位長與所述存儲器的校驗能力、所述待讀取數據D的位長、所述目標地址數據A的位長及所述第一壓縮函數和第二壓縮函數相關。
與現有技術相比,本發明實施例的技術方案具有以下有益效果:
在向存儲器中寫入數據時,通過對加密數據T及所述目標地址數據A進行壓縮處理,進而可以根據壓縮后的數據獲得校驗數據S。由于所述校驗數據中S與加密數據T相關,還與目標地址數據A相關,因此可以在從存儲器中讀出數據時,無論是所述加密數據T本身受到干擾或攻擊,還是所述加密數據T非所述目標地址數據A對應的加密數據,均可以通過校驗數據S的驗證而發現數據異常,從而可以進一步提高存儲器的安全性。
附圖說明
圖1是本發明實施例中一種存儲器的數據寫入方法流程圖;
圖2是本發明實施例中一種存儲器的數據寫入裝置結構示意圖;
圖3是本發明實施例中一種存儲器的數據讀出方法流程圖;
圖4是本發明實施例中一種存儲器的數據讀出裝置結構示意圖。
具體實施方式
目前,在向存儲器中寫入數據時,通常僅根據所寫入的數據生成校驗數據,進而在從存儲器中讀取數據時,根據所述校驗數據來驗證所述存儲器是否受到干擾或攻擊。然而,在上述方法中,通過所述校驗數據,僅能在寫入存儲器中的數據本身發生錯誤時,檢測出所述存儲器受到干擾或攻擊,而無法在所讀出的數據非用戶輸入的目標地址的數據時,檢測出所述存儲器受到干擾或攻擊,導致所述存儲器的安全性較低。
針對上述問題,本發明實施例提供了一種存儲器的寫入方法,應用所述方法,在向存儲器中寫入數據時,通過對加密數據T及所述目標地址數據A進行壓縮處理,進而可以根據壓縮后的數據獲得校驗數據S。由于所述校驗數據中S不僅與加密數據T相關,還與目標地址數據A相關,因此可以在從存儲器中讀出數據時,無論是所述加密數據T本身受到干擾或攻擊,還是所述加密數據T非所述目標地址數據A對應的加密數據,均可以通過校驗數據S的驗證而發現數據異常,進一步提高存儲器的安全性。
為使本發明的上述目的、特征和有益效果能夠更為明顯易懂,下面結合附圖對本發明的具體實施例做詳細的說明。
如圖1所示,本發明實施例提供了一種存儲器的數據寫入方法,所述方法可以包括如下步驟:
步驟11,當接收到待寫入的數據D及所述待寫入的數據D的目標地址數據A時,對所述待寫入的數據D進行加密處理,獲得加密數據T。
在具體實施中,向存儲器中寫入數據D時,可以采用對稱加密算法對所述待寫入的數據D進行加密處理,也可以采用非對稱加密算法對所述待寫入的數據D進行加密處理。其中,所述對稱加密算法可以包括DES算法、RC2算法、RC4算法、RC5算法和Blowfish算法等。所述非對稱加密算法可以包括RSA算法、ECC算法和Knapsack算法等。具體無論采用何種加密算法對所述待寫入的數據D進行加密處理,均不構成對本發明的限制,且均在本發明的保護范圍之內。
采用加密算法對所述待寫入的數據D進行加密處理,獲得加密數據T后, 接著執行步驟12。
步驟12,分別對所述加密數據T及所述目標地址數據A進行壓縮處理,獲得壓縮后的加密數據T1及目標地址數據A1,并根據壓縮后的加密數據T1及目標地址數據A1獲得校驗數據S。
在具體實施中,獲得加密數據T后,可以調用第一壓縮函數按照預設位長對所述加密數據T進行壓縮處理,獲得壓縮后的加密數據T1。接收到所述待寫入的數據D的目標地址數據A時,調用第二壓縮函數按照預設位長對所述目標地址數據A進行壓縮處理,獲得壓縮后的目標地址數據A1。接著,根據所述壓縮后的加密數據T1及目標地址數據A1執行第一運算,獲得校驗數據S。
其中,所述第一壓縮函數和第二壓縮函數可以相同,也可以不同,例如,所述第一壓縮函數和第二壓縮函數可以為CRC(循環冗余碼校驗)算法。當然,所述第一壓縮函數和第二壓縮函數還可以為其他算法,具體不作限制,但無論第一壓縮函數和第二壓縮函數具體為何算法,均在本發明的保護范圍之內。
在具體實施中,所述第一運算可以為異或運算,也可以為其他運算。
具體地,以所述加密數據T的位長為m比特,所述目標地址數據A的位長為n比特,所述預設位長為r比特,所述第一運算為異或運算為例,調用所述第一壓縮函數將m比特的加密數據T壓縮為r比特的加密數據T1,調用所述第二壓縮函數將n比特目標地址數據A壓縮為r比特的目標地址數據A1。對所述壓縮后的加密數據T1及目標地址數據A1執行異或運算,獲得校驗數據S。
需要說明的是,所述預設位長與校驗數據S的位長相同,具體可以根據所述存儲器的校驗能力、所述待寫入的數據D位長、所述目標地址數據A位長及所選取的第一壓縮函數和第二壓縮函數進行設置。可以理解的是,所述預設位長越長,所述存儲器的檢錯能力也就越強,相應的成本也就越大。例如,當所述第一壓縮函數和第二壓縮函數均為CRC算法時,若m≤11,r=4,對于所述加密數據T中任意2比特出現錯誤時,所述存儲器的檢錯能力為 100%。
步驟13,將所述加密數據T及校驗數據S作為碼字寫入至所述存儲器。
在具體實施中,獲得校驗數據S后,將所述加密數據T與所述校驗數據S進行拼接形成碼字,并將所述碼字存入所述存儲器。
為了使本領域技術人員更好地理解和實現本發明,以下對上述存儲器的數據寫入方法對應的裝置進行詳細描述。
如圖2所示,本發明實施例提供了一種存儲器的寫入裝置。所述寫入裝置可以包括:加密單元21,第一處理單元22以及寫入單元23。其中:
所述加密單元21適于當接收到待寫入的數據D及所述待寫入的數據D的目標地址數據A時,對所述待寫入的數據D進行加密處理,獲得加密數據T。所述第一處理單元22適于分別對所述加密數據T及所述目標地址數據A進行壓縮處理,獲得壓縮后的加密數據T1及目標地址數據A1,并根據壓縮后的加密數據T1及目標地址數據A1獲得校驗數據S。所述寫入單元23適于將所述加密數據T及校驗數據S作為碼字寫入至所述存儲器。
在具體實施中,所述第一處理單元22包括:第一處理子單元220,第二處理子單元221以及第一運算子單元222。其中,所述第一處理子單元220適于調用所述第一壓縮函數按照預設位長對所述加密數據T進行壓縮處理,獲得壓縮后的加密數據T1。所述第二處理子單元221適于調用第二壓縮函數按照所述預設位長對所述目標地址數據進行壓縮處理,獲得壓縮后的目標地址數據A1。所述第一運算子單元222適于對所述壓縮后的加密數據T1及目標地址數據A1執行第一運算,獲得校驗數據S。
在具體實施中,所述預設位長與所述存儲器的校驗能力、所述待寫入的數據D的位長、所述目標地址數據A的位長及所述第一壓縮函數和第二壓縮函數相關。
在具體實施中,所述第一運算子單元222適于對所述壓縮后的加密數據T1及目標地址數據A1執行異或運算,獲得校驗數據S。
如圖3所示,本發明實施例還提供了一種存儲器的數據讀出方法,所述 方法包括如下步驟:
步驟31,接收待讀取數據D的目標地址數據A。
步驟32,根據所述目標地址數據A讀取所述存儲器中相應位置處的碼字。
步驟33,按照預設位長將所述碼字拆分為加密數據T及校驗數據S。
在具體實施步驟31-33時,根據所述目標地址數據A,在存儲器中搜索相應的碼字。讀取所述碼字后,由于所述預設位長即所述校驗數據的位長,因此可以按照所述預設位長將所讀取的碼字拆分為加密數據T及校驗數據S。例如,當所述預設位長為r比特,所述碼字的位長為m+r比特時,讀取所述碼字后,將所述碼字的后r比特作為校驗數據S,剩余m比特為加密后的數據T。
其中,所述預設位長與所述存儲器的校驗能力、所述待讀取數據D的位長、所述目標地址數據A的位長及所述第一壓縮函數和第二壓縮函數相關。
步驟34,分別對所述加密數據T及所述目標地址數據A進行壓縮處理,獲得壓縮后的加密數據T1及目標地址數據A1。
在具體實施中,獲得加密數據T后,可以調用第一壓縮函數按照預設位長對所述加密數據T進行壓縮處理,獲得壓縮后的加密數據T1。接收到所述目標地址數據A時,調用第二壓縮函數按照預設位長對所述目標地址數據A進行壓縮處理,獲得壓縮后的目標地址數據A1。
其中,所述第一壓縮函數和第二壓縮函數可以相同,也可以不同,例如,所述第一壓縮函數和第二壓縮函數可以為CRC算法,也可以為其他算法。所述第一運算可以為異或運算,也可以為其他運算。
具體地,以所述加密數據T的位長為m比特,所述目標地址數據A的位長為n比特,所述預設位長為r比特,所述第一運算為異或運算為例,調用所述第一壓縮函數將m比特的加密數據T壓縮為r比特的加密數據T1,調用所述第二壓縮函數將n比特目標地址數據A壓縮為r比特的目標地址數據A1。
步驟35,根據所述壓縮后的加密數據T1、目標地址數據A1及校驗數據S,對所述加密數據T進行校驗,并根據校驗結果確定所述存儲器的輸出。
在具體實施中,可以先對所述壓縮后的加密數據T1與校驗數據S執行第一運算,再通過判斷第一運算的結果與所述壓縮后的目標地址數據A1是否相等,來對所述加密數據T進行校驗。其中,所述第一運算可以為異或運算。
當第一運算的結果與所述壓縮后的目標地址數據A1相等時,所述加密數據T為正確的數據。所謂加密數據T為正確的數據,即所述加密數據T本身沒有受到干擾或攻擊,且所述加密數據為所述存儲器中與所述目標地址數據A對應的數據。當所述加密數據T為正確的數據時,對所述加密數據T進行解密,獲得解密后的數據D,輸出所述解密后的數據D。
當第一運算的結果與所述壓縮后的目標地址數據A1不相等時,所述加密數據T為錯誤的數據。所謂加密數據T為錯誤的數據,即所述加密數據T本身受到干擾或攻擊,或者述加密數據非所述存儲器中與所述目標地址數據A對應的數據,或者所述加密數據T本身受到干擾或攻擊且非所述存儲器中與所述目標地址數據A對應的數據。當所述加密數據T為錯誤的數據時,可以輸出相應的提示信號,比如產生相應的報警信號,以通知用戶所述存儲器受到干擾或攻擊,方便用戶調用相應的防護策略,比如,輸出預設的數據。
由上述內容可知,應用本發明實施例中所述存儲器的數據寫入方法,在向存儲器中寫入數據時,通過對加密數據T及所述目標地址數據A進行壓縮處理,進而可以根據壓縮后的數據獲得校驗數據S。由于所述校驗數據中S不僅與加密數據T相關,還與目標地址數據A相關,因此可以在從存儲器中讀出數據時,無論是所述加密數據T本身受到干擾或攻擊,還是所述加密數據T非所述目標地址數據A對應的加密數據,均可以通過校驗數據S的驗證而發現數據異常,從而可以進一步提高存儲器的安全性。
為了使本領域技術人員更好地理解和實現本發明,以下對上述存儲器的數據讀出方法對應的裝置進行詳細描述。
如圖4所示,本發明實施例提供了一種存儲器的數據讀出裝置。所述裝置可以包括:接收單元41,讀取單元42,拆分單元43,第二處理單元44以及第三處理單元45。其中:
所述接收單元41適于接收待讀取數據D的目標地址數據A。所述讀取單 元42適于根據所述目標地址數據A讀取所述存儲器中相應位置處的碼字。所述拆分單元43適于按照預設位長將所述碼字拆分為加密數據T及校驗數據S。所述第二處理單元44適于分別對所述加密數據T及所述目標地址數據A進行壓縮處理,獲得壓縮后的加密數據T1及目標地址數據A1。所述第三處理單元45適于根據所述壓縮后的加密數據T1、目標地址數據A1及校驗數據S,對所述加密后的數據T進行校驗,并根據校驗結果確定所述存儲器的輸出。
進一步地,所述第二處理單元44可以包括:第三處理子單元441及第四處理子單元442。其中,所述第三處理子單元441,適于調用第一壓縮函數按照預設位長對所述加密數據T進行壓縮處理,獲得壓縮后的加密數據T1。第四處理子單元442,適于調用第二壓縮函數按照所述預設位長對所述目標地址數據進行壓縮處理,獲得壓縮后的目標地址數據A1。
在具體實施中,所述第三處理單元45可以包括:第二運算子單元、判斷子單元及解密子單元(未示出)。所述第二運算子單元,適于對所述壓縮后的加密數據T1與校驗數據S執行第一運算。所述判斷子單元,適于判斷所述第一運算后的結果與所述壓縮后的目標地址數據A1是否相等。所述解密子單元,適于當所述第一運算后的結果與所述壓縮后的目標地址數據A1相等時,判定所述加密數據T通過校驗,對所述加密數據T進行解密后輸出。
其中,所述第一運算可以為異或運算。所述預設位長與所述存儲器的校驗能力、所述待讀取數據D的位長、所述目標地址數據A的位長及所述第一壓縮函數和第二壓縮函數相關。
進一步地,所述第三處理單元45還可以包括:提示子單元(未示出)。所述提示子單元適于當所述第一運算后的結果與所述壓縮后的目標地址數據A1不相等時,判定所述加密數據T未通過校驗,輸出相應的提示信號,以調用相應的防護策略。
由上述內容可知,在向存儲器中寫入數據時,通過對加密數據T及所述目標地址數據A進行壓縮處理,進而可以根據壓縮后的數據獲得校驗數據S。由于所述校驗數據中S不僅與加密數據T相關,還與目標地址數據A相關,因此可以在從存儲器中讀出數據時,無論是所述加密數據T本身受到干擾或 攻擊,還是所述加密數據T非所述目標地址數據A對應的加密數據,均可以通過校驗數據S來驗證。
本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,該程序可以存儲于一計算機可讀存儲介質中,存儲介質可以包括:ROM、RAM、EEPROM、FLASH、磁盤或光盤等。
雖然本發明披露如上,但本發明并非限定于此。任何本領域技術人員,在不脫離本發明的精神和范圍內,均可作各種更動與修改,因此本發明的保護范圍應當以權利要求所限定的范圍為準。