混淆由軟件應用對數據存儲裝置的訪問的制作方法
【技術領域】
[0001]本發明涉及混淆(obfuscate)由軟件應用對數據存儲裝置的訪問。
【背景技術】
[0002]軟件應用(或程序)可以例如本地執行(在客戶端設備上)或經由web瀏覽器通過網絡來執行。瀏覽器應用還可以以離線模式(在本地)運行在瀏覽器中,表現得像本地運行的原生應用一樣。
[0003]當軟件應用由處理器執行時,其中履行執行的環境是所謂的“白盒”環境,如果用戶(或第三方)能夠訪問處理使得用戶可以觀察并且變更軟件應用的執行的話(例如通過運行合適的調試器)一一這樣的變更可以是對過程流的改變或對正處理的數據的改變。軟件應用的執行的該觀察和/或變更可以稱作篡改。用戶可以觀察或變更(或換言之篡改)軟件應用的執行以便滿足他們自己的目的或目標,所述目的或目標在如果軟件應用將正常運行而沒有被篡改的情況下可能是不可能得以滿足的。這樣篡改以實現特定的目的或目標可以稱作目標導向的篡改。目標導向的篡改可以涉及例如觀察和/或變更在白盒環境中運行的軟件應用的執行以便獲得或推斷由軟件應用用于處理數字數據的密碼學密鑰(例如用于解密數據的解密密鑰)。
[0004]已知各種技術用于保護在白盒環境中運行的數據處理軟件應用(或程序或系統)的完整性。可以在 Stanley Chow, Philip Eisen, Harold Johnson,和 Paul C.VanOorschot 的 “White-Box Cryptography and an AES Implementat1n”(在密碼學方面的所選領域中:第九屆年度國際研討會,SAC 2002,加拿大紐芬蘭圣約翰,2002年8月15-16)中找到一種示例性的技術,所述文獻的全部公開內容通過引用被并入本文中。這樣的技術一般目的在于通過在軟件應用的控制和/或數據路徑中引入附加的復雜性和/或隨機性而隱藏應用的嵌入式知識。該附加的復雜性和/或隨機性具有使軟件應用的信息(或數據)或執行路徑模糊或混淆的效應。作為該混淆的結果,變得更難以通過代碼檢查而從應用中提取信息并且更難以找到和/或修改與軟件應用的特定功能性相關聯的代碼。因此,對于攻擊者而言進行以下是困難得多的:能夠訪問在白盒環境中運行的軟件應用以檢索敏感數據或變更軟件應用的操作以便通過篡改軟件應用的執行而滿足其自己的目標。因而,降低了攻擊者實施目標導向的篡改的能力。目的在于降低攻擊者實施目標導向的篡改的能力的這些技術可以被認為改進軟件的抗篡改性。如果對于攻擊者而言實施目標導向的篡改是充分困難的,那么對于任何實際的目的,軟件應用可以被認為是抗篡改的,即使在理論上篡改仍是可能的。
[0005]當軟件應用由處理器執行時,軟件應用一般要求對數據存儲裝置或數據庫或存儲器的訪問。在數據存儲裝置中存儲的數據可以被加密或變換以便提供用于潛在攻擊者的另外的屏障。這樣的數據存儲裝置可以被視為“受保護的”數據存儲裝置。
[0006]以上描述的現有技術在圖1中被示意性地圖示。特別地,圖1示出包括“受保護的”(或抗篡改的)部分12的軟件應用10、以及“受保護的”數據存儲裝置14。然而,在應用10的受保護的部分12以及受保護的數據存儲裝置14之間的任何交互16對于攻擊者而言仍然可見。換言之,由軟件應用10對數據存儲裝置14的訪問16對于攻擊者而言是可見的。
[0007]本發明設法混淆由軟件應用對數據存儲裝置的訪問。
【發明內容】
[0008]如以上參照圖1所提及的,在應用10的受保護的部分12以及受保護的數據存儲裝置14之間的任何交互對于攻擊者而言是可見的。數據存儲裝置訪問的簡單追蹤(例如,在定時、位置、模式、大小和頻率方面)可以為潛在攻擊者提供關于應用10為什么、如何或何時在使用該數據的足夠信息,從而給予攻擊者在對它進行分析中的起始點。示例是使用表單來選擇偏好或輸入數據一一攻擊者可以將這些動作與數據存儲裝置訪問相互關聯,理解到該類信息在本地存儲。一旦攻擊者開始以此方式分析軟件應用10的執行,應用10就可能最終被侵入(hack)。本發明目的在于使得在應用10和數據存儲裝置14之間存在可見/可追蹤的對接16的情況下對于攻擊者而言難以分析數據存儲裝置訪問。
[0009]根據本發明的第一方面,提供了一種混淆由軟件應用對數據存儲裝置的訪問的方法。所述方法包括通過使用訪問操作而訪問數據存儲裝置。訪問操作包括真實的訪問操作和虛設(du_y)的訪問操作。每個真實的訪問操作可操作以作為軟件應用的執行的部分而訪問數據存儲裝置。
[0010]在一些實施例中,訪問操作被布置以在軟件應用的至少一部分的執行期間周期性地訪問數據存儲裝置。
[0011]在一些實施例中,對于真實的訪問操作中的至少一個,在所述至少一個真實的訪問操作的時間附近發生一個或多個虛設的訪問操作。
[0012]在一些實施例中,虛設的訪問操作被布置以與數據存儲裝置中的其它虛設存儲位置相比更頻繁地訪問數據存儲裝置中的至少一個指定的虛設存儲位置。
[0013]在一些實施例中,訪問操作被布置以至少跨數據存儲裝置中的存儲位置的子集而基本上均勻地訪問數據存儲裝置。
[0014]在一些實施例中,訪問操作包括讀取操作。每個讀取操作可操作以從數據存儲裝置的相應存儲位置中讀取值。真實的訪問操作包括一個或多個真實的讀取操作并且虛設的訪問操作包括一個或多個虛設的讀取操作。
[0015]在一些實施例中,訪問操作包括寫入操作。每個寫入操作可操作以將值寫入到數據存儲裝置的相應存儲位置。真實的訪問操作包括一個或多個真實的寫入操作并且虛設的訪問操作包括一個或多個虛設的寫入操作。
[0016]在一些實施例中,訪問操作包括讀取/寫入對。每個讀取/寫入對可操作以從數據存儲裝置的相應存儲位置讀取值并且隨后將值寫入到所述相應的存儲位置。真實的訪問操作包括一個或多個真實的讀取/寫入對并且虛設的訪問操作包括一個或多個虛設的讀取/寫入對。
[0017]真實的讀取/寫入對中的至少一個可以包括軟件應用的真實寫入操作,其可操作以在軟件應用的執行期間將指定的值寫入到數據存儲裝置的指定的存儲位置。在該情況下,真實讀取/寫入對中的所述至少一個可操作以從指定的存儲位置讀取值并且隨后將指定的值寫入到指定的存儲位置。
[0018]真實的讀取/寫入對中的至少一個可以包括軟件應用的真實的讀取操作,其可操作以在軟件應用的執行期間從數據存儲裝置的指定存儲位置讀取經編碼的值X。在該情況下,真實的讀取/寫入對中的所述至少一個可操作以從指定的存儲位置讀取經編碼的值X并且隨后將經修改的編碼值X’寫入到指定的存儲位置。X’被選擇使得X’的經解碼的版本與X的經解碼的版本相同。可選地,可以通過使用誤差校正碼ECC來對X和X’進行解碼,其中 ECC(X) =ECC (X,) O
[0019]在一個實施例中,所述方法此外包括通過在軟件應用的真實訪問操作當中分布虛設的訪問操作來執行虛設的訪問操作。
[0020]在一個實施例中,訪問操作包括在真實的訪問操作當中的虛設訪問操作的時變分布。
[0021]在一個實施例中,提供了一種混淆由軟件應用對客戶端設備上的本地存儲裝置的訪問的方法。所述方法包括以下步驟:(a)生成虛設的本地存儲裝置訪問操作,每個虛設的本地存儲裝置訪問操作可操作以訪問本地存儲裝置;(b)生成本地存儲裝置訪問操作的調度,所述調度包括軟件應用的所生成的虛設的本地存儲裝置訪問操作以及真實的本地存儲裝置訪問操作,每個真實的本地存儲裝置訪問操作可操作以作為軟件應用的執行的部分來訪問本地存儲裝置;以及(C)根據所生成的調度而訪問本地存儲裝置。有利地,調度包括在真實的本地存儲裝置訪問操作當中分布的虛設的本地存儲裝置訪問操作。
[0022]根據本發明的第二方面,提供了一種計算機程序,所述計算機程序在被處理器執行時使得處理器實施根據第一方面的方法。
[0023]根據本發明的第三方面,提供了一種計算機可讀介質,其存儲了根據第二方面的計算機程序。
[0024]根據本發明的第四方面,提供了一種系統,其被配置成實施根據第一方面的方法。
[0025]在隨附的權利要求中闡明本發明的其它優選的特征。
【附圖說明】
[0026]現在將通過示例、參照附圖來描述本發明的實施例,在所述附圖中:
圖1是根據現有技術的由軟件應用對數據存儲裝置的訪問的示意性圖示;
圖2是根據本發明的一個實施例的由軟件應用對數據存儲裝置的訪問的示意性圖示;圖