新四季網

數據安全讀取方法及裝置製造方法

2023-05-25 03:27:11 2

數據安全讀取方法及裝置製造方法
【專利摘要】本發明提供一種數據安全讀取方法,包括:步驟1、緩存指令運行環境;步驟2、從第一存儲位置讀取目標地址,根據目標地址獲取待調度的機器指令片段;待調度的機器指令片段的最後一條指令為第一跳轉指令;步驟3、在第一存儲位置保存第一跳轉指令的目標地址;步驟4、分析待調度的機器指令片段中的每一條指令,如果其為讀取指令,獲取讀取指令中的源地址,並且查找映射位圖,並根據映射位圖的數據修改讀取指令中的讀取地址;步驟5、將第一跳轉指令替換為第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向指令重組平臺的入口地址;和步驟6、恢復所述指令運行環境,並跳轉到第二地址繼續執行。
【專利說明】數據安全讀取方法及裝置
【技術領域】
[0001]本發明涉及計算機安全領域,尤其涉及一種數據安全讀取方法及裝置。
【背景技術】
[0002]現有的電子信息安全領域包括系統安全、數據安全和設備安全三個子領域。
[0003]在數據安全領域內,一般採用下面三種技術確保數據安全:(I)數據內容安全技術,包括數據加密解密技術和端到端數據加密技術,保障數據在存儲和傳輸過程中內容不被非法讀取;(2)數據安全轉移技術,包括防止非法拷貝、列印或其它輸出,保障數據在使用和轉移過程中的安全;(3)網絡阻斷技術,包括網絡物理阻斷和設置網絡屏障等技術。
[0004]根據相關分析,目前針對計算機的所有危害總有效偵測能力最多在50%左右;由於上述技術在應對計算機內核病毒、木馬、作業系統漏洞、系統後門以及人為洩密時能力不足,事實上任何計算設備(例如計算機、手持通信設備等)都可能存在惡意代碼。一旦惡意代碼進入終端系統,上述的加密技術、防拷貝技術以及網絡阻斷技術在這種情況下將失去作用。現有的黑客技術可以利用系統漏洞或系統後門穿透上述安全技術並植入惡意代碼,並利用惡意代碼取得用戶數據。上述技術更無法防範涉密人員的主動或被動洩密,例如,內部人員可以攜帶存儲設備,從內部網絡或終端上下載所需的資料並帶走存儲設備,導致內部洩密;又例如,內部人員可以直接將計算設備帶走。
[0005]綜上,防拷貝技術無法保證涉密信息在終端不被非法存儲。基於網絡過濾無法確保涉密信息不丟失。涉密人員可通過惡意代碼或惡意工具造成洩密,還可能因涉密設備或存儲介質失控造成洩密。

【發明內容】

[0006]本發明的目的是提供一種數據安全讀取方法及裝置,提高數據安全性。
[0007]根據本發明一個方面,提供一種數據安全讀取方法,包括:
[0008]步驟1、緩存指令運行環境;
[0009]步驟2、從第一存儲位置讀取目標地址,根據目標地址獲取待調度的機器指令片段;待調度的機器指令片段的最後一條指令為第一跳轉指令;
[0010]步驟3、在第一存儲位置保存第一跳轉指令的目標地址;
[0011]步驟4、分析待調度的機器指令片段中的每一條指令,如果其為讀取指令,獲取讀取指令中的源地址,並且查找映射位圖,並根據映射位圖的數據修改讀取指令中的讀取地址;所述映射位圖用於表示本地存儲地址的數據是否轉儲到所述安全存儲設備;
[0012]步驟5、將第一跳轉指令替換為第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向指令重組平臺的入口地址;和
[0013]步驟6、恢復所述指令運行環境,並跳轉到第二地址繼續執行;
[0014]其中,步驟3和步驟4的執行順序可以互換。
[0015]可選的,在步驟4之前,數據安全讀取方法還包括:[0016]建立計算終端系統與所述安全存儲設備的通訊;
[0017]將所述安全存儲設備上的第二映射位圖同步到所述計算終端系統,保存為映射位圖。
[0018]可選的,所述的硬體指令為硬體埠 I/O指令。
[0019]可選的,所述安全存儲設備為遠程存儲設備,所述遠程存儲設備被多個計算終端系統共享。
[0020]可選的,所述硬體指令來自硬體映射層。
[0021]可選的,步驟2中,根據目標地址獲取待調度指令片段包括:
[0022]從目標地址開始,獲取待調度的一段機器指令,將該段機器指令進行反彙編;
[0023]檢查反彙編結果中是否包含跳轉指令,如果不包含則繼續獲取後面一段待調度的機器指令,直到匹配到跳轉指令為止,該跳轉指令為第一跳轉指令;其中,第一跳轉指令以及之前的所有指令組成待調度指令片段。
[0024]可選的,在步驟5和步驟6之間,數據安全讀取方法還包括:
[0025]將生成的重組後的彙編代碼通過彙編器生成對應的機器碼。
[0026]可選的,在步驟I和步驟2之間,數據安全讀取方法還包括:
[0027]從第一存儲位置讀取目標地址,利用所述目標地址查找地址對應表;所述地址對應表用於表示待調度的機器指令片段是否具有已保存的重組指令片段;
[0028]如果找到相應的記錄,恢復所述指令運行環境,並跳轉到紀錄中的保存地址繼續執行。
[0029]可選的,如果在地址對應表中沒有找到相應的紀錄,所述數據安全讀取方法在步驟5之後還包括:
[0030]利用重組指令片段的地址與所述目標地址在地址對應表中建立一條記錄。
[0031]根據本發明另一個方面,提供一種計算機可讀介質,所述可讀介質中存儲有計算機可執行的程序代碼,所述程序代碼用於執行上述方法的步驟。
[0032]根據本發明再一個方面,提供一種數據安全讀取裝置,包括:
[0033]指令運行環境緩存和恢復單元,適於緩存和恢復指令運行環境;
[0034]第一存儲位置,適於保存目標地址;
[0035]指令獲取單元,與指令運行環境緩存和恢復單元耦接,適於從第一存儲位置讀取目標地址,並根據目標地址獲取待調度的機器指令片段;其中,待調度機器指令片段的最後一條指令為第一跳轉指令;
[0036]指令分析單元,適於分析所述待調度機器指令片段中每一條硬體指令並判斷所述硬體指令是否為讀取指令;
[0037]指令修改單元,適於查找映射位圖,並根據映射位圖的數據修改讀取指令中的讀取地址;所述映射位圖用於表示本地存儲地址的數據是否轉儲到所述安全存儲設備;和
[0038]指令重組單元,與指令運行環境緩存和恢復單元耦接,適於在第一存儲位置保存第一跳轉指令的目標地址;還適於將第一跳轉指令替換為第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向裝置的入口地址。
[0039]可選的,所述數據安全讀取裝置還包括:
[0040]同步單元,適於建立計算終端系統與所述安全存儲設備的通訊,並將映射位圖在所述計算終端系統和所述安全存儲設備之間進行同步。
[0041]可選的,所述安全存儲設備為遠程存儲設備,所述遠程存儲設備被多個計算終端系統共享。
[0042]可選的,所述數據安全讀取裝置還包括:
[0043]指令檢索單元,適於利用所述目標地址查找地址對應表;所述地址對應表用於表示待調度機器指令片段是否具有已保存的重組指令片段;
[0044]如果找到相應的記錄,指令檢索單元還適於調用指令運行環境緩存和恢復單元,恢復所述指令運行環境,並跳轉到紀錄中的保存地址繼續執行;
[0045]如果沒有找到相應的記錄,指令檢索單元還適於利用重組指令片段的地址與所述目標地址在地址對應表中建立一條記錄。
[0046]可選的,所述數據安全讀取裝置還包括:
[0047]反彙編單元,適於在指令分析單元分析所述待調度的機器指令片段之前,反彙編所述待調度的機器指令片段,生成待調度的彙編指令片段;
[0048]彙編單元,適於彙編重組後的彙編指令片段,得到機器碼表示的重組指令片段。
[0049]與現有技術相比,本發明的裝置和方法提高了數據的安全性。
【專利附圖】

【附圖說明】
[0050]圖1是現有技術中計算設備的系統層次示意圖;
[0051]圖2是本發明一個實施例中提供的運行時指令重組方法的流程圖;
[0052]圖3是本發明一個實施例中提供的重組指令片段的生成過程示意圖;
[0053]圖4是本發明另一個實施例中提供的圖2中步驟S102的流程圖;
[0054]圖5是本發明另一個實施例中提供的運行時指令重組方法的流程圖,利用地址對應表保存已經重組過的指令片段;
[0055]圖6是本發明另一個實施例中提供的運行時指令重組方法的流程圖,單獨開闢存儲位置保存第一跳轉指令的目標地址;
[0056]圖7是本發明另一個實施例中提供的運行時指令重組方法的流程圖,針對非固定長度指令集進行反彙編和彙編處理;
[0057]圖8是本發明另一個實施例中提供的運行時指令重組方法的流程圖,以壓棧指令替代或記錄第一跳轉指令;
[0058]圖9a是本發明另一個實施例中提供的運行時指令重組方法的流程圖,其中的運行時指令重組方法綜合之前多個實施例中的特徵;
[0059]圖9b-9d是圖9a中的運行時指令重組方法在X86體系處理器上運行時的操作過程不意圖;
[0060]圖10是本發明一個實施例中提供的運行時指令重組裝置結構示意圖;
[0061]圖11是本發明另一個實施例中提供的運行時指令重組裝置結構示意圖;
[0062]圖12是本發明另一個實施例中提供的指令重組單元結構示意圖;
[0063]圖13是本發明另一個實施例中提供的運行時指令重組裝置結構示意圖;
[0064]圖14是本發明另一個實施例中提供的運行時指令重組裝置結構示意圖;
[0065]圖15是本發明一個實施例中計算設備的系統層次示意圖;[0066]圖16是本發明一個實施例中提供的數據安全存取過程中的初始化過程的流程圖;
[0067]圖17是本發明一個實施例中的Bitmap示意圖;
[0068]圖18是本發明一個實施例中提供的數據安全存儲方法的流程圖;
[0069]圖19是本發明一個實施例中提供的數據安全讀取方法的流程圖;
[0070]圖20是本發明一個實施例中提供的數據安全存取方法的流程圖;
[0071]圖21是本發明一個實施例中提供的數據安全傳輸方法的流程圖;
[0072]圖22是本發明一個實施例中網絡環境示意圖;
[0073]圖23是本發明一個實施例中提供的數據安全存儲裝置的結構示意圖;
[0074]圖24是本發明一個實施例中提供的數據安全讀取裝置的結構示意圖;
[0075]圖25是本發明一個實施例中提供的數據安全存儲和讀取裝置的結構示意圖;
[0076]圖26是本發明另一個實施例中提供的數據安全存儲和讀取裝置的結構示意圖。
【具體實施方式】
[0077]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖,對本發明進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。
[0078]公近
[0079]如圖1所示為現有技術中計算設備的系統層次示意圖,從上至下,計算設備包括:用戶界面層101,應用層102,作業系統內核層103,硬體映射層104以及硬體層105。
[0080]其中,用戶界面層101是用戶與設備之間的接口,用戶通過該層與設備(即設備的其他層次,例如應用層102)進行交互。應用層102指應用軟體層。
[0081]作業系統內核層103是一種基於軟體的邏輯層,一般來講是由軟體數據和軟體代碼組成,相比於界面層101和應用層102,作業系統內核層103的代碼擁有更高的權限,可以對計算機系統中的各種軟硬體資源進行完整的操作。
[0082]硬體映射層104是一種基於軟體的邏輯層,它一般工作在作業系統內核層,擁有與內核層相同的權限。硬體映射層主要是為了解決將不同類型的硬體的操作模式映射為一種統一的上層接口,向上屏蔽硬體的特殊性。一般來說,硬體映射層主要被作業系統內核層103使用,來完成對各種硬體的操作。
[0083]硬體層105是指構成計算機系統的所有硬體部件。
[0084]用戶通過用戶界面層101 (即處於用戶界面層101的用戶界面)對該計算設備進行操作並得到圖形化或非圖形化反饋。以保存數據的操作為例,其過程包括:
[0085](I)用戶通過某應用程式提供的用戶界面101,選擇「保存」功能;
[0086](2)應用層102調用對應代碼,將上述用戶操作轉化為一個或多個作業系統提供的接口函數,即「保存」操作轉化成為對一系列作業系統內核層103提供的接口函數的調用;
[0087](3)作業系統內核層103將每一個作業系統接口函數轉化為一個或多個硬體映射層104提供的接口函數;即「保存」操作轉化成為對一系列硬體映射層104提供的接口函數的調用;[0088](4)硬體映射層104將每一個自己提供的接口函數轉化為一個或多個硬體指令調用;最後,
[0089](5)硬體層105 (例如CPU)接收上述硬體指令調用並執行硬體指令。
[0090]針對該計算設備,當其被惡意代碼侵入後,惡意代碼可以從計算設備中取得所需數據,竊取數據後其行為模式包括:
[0091](I)存儲行為:將目標數據內容保存到某個存儲位置;
[0092](2)傳輸行為:將竊取的數據直接通過網絡傳輸到指定的目標地址。
[0093]另外,使用上述計算設備或信息設備的人員進行內部洩密的行為模式包括:
[0094](I)主動洩密:涉密人員通過主動拷貝、通過惡意工具穿透安全系統、置入木馬等手段直接取得涉密數據,並進行洩密;
[0095](2)被動洩密:涉密人員使用的電腦或存儲介質因保管不善丟失或使用不當(例如將涉密裝備直接接入Internet)造成的洩密。
[0096]上述多種洩密方式使得該計算設備的數據安全無法保障。
[0097]發明人經研究發現,計算機運行過程中,CPU地址寄存器保存下一條將要運行的機器指令的地址,例如pc (program counter,程序計數器)指向的地址;獲取該寄存器中的數據,並按照該數據指向的地址,讀取下一條或者多條將要運行的機器指令,可以實現運行時捕獲機器指令的目的。
[0098]並且,通過修改所述一條或多條機器指令所組成的待調度指令片段(例如在其中插入額外的跳轉指令,本文稱為指令重組),使得在該段指令運行完畢之前重新獲得CPU執行權,並再次捕獲下一個待調度指令片段,可以實現運行時連續捕獲機器指令的目的。
[0099]並且,在獲取到待調度指令片段後,還可以對其中的機器指令進行分析以及處理,從而不僅可以實現運行時指令捕獲、重組,還可以實現對預定的目標指令的管理。
[0100]指令重組或指令追蹤
[0101]基於上述分析和發現,本發明的一個實施例中提供了一種運行時指令重組方法,該方法運行時稱為指令重組平臺。如圖2所示,該方法SlOO包括:
[0102]S101,緩存指令運行環境;所述指令運行環境包括地址寄存器,地址寄存器保存下一條將要運行的機器指令的地址,該地址為第一地址;
[0103]S102,獲取待調度的機器指令片段;其中,待調度的機器指令片段的最後一條指令為第一跳轉指令;
[0104]S103,在所述第一跳轉指令前,插入第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向指令重組平臺的入口地址,即執行該第二跳轉指令後,執行步驟 SlOl ;
[0105]S104,將所述地址寄存器中的第一地址修改為第二地址;和
[0106]S105,恢復所述指令運行環境。
[0107]在本實施例中,上述運行時指令重組方法在X86架構的CPU上執行;在本發明的其他實施例中,上述運行時指令重組方法也可以在MIPS處理器或基於ARM架構的處理器上執行。本領域普通技術人員可以理解,上述方法可以在計算設備中的任何其他類型的指令處理單元上執行。
[0108]其中,在步驟SlOl中,所述緩存指令運行環境可以包括:[0109]向緩存棧中壓入CPU機器指令運行相關的寄存器數據。
[0110]在本發明的其他實施例中,緩存或保存指令運行環境也可以在指定的、默認的其他緩存數據結構和地址中進行。
[0111]在步驟SlOl中,所述地址寄存器可以為CPU地址寄存器。
[0112]在步驟S102中,待調度的機器指令片段中最後一條指令為第一跳轉指令,待調度的機器指令片段中只有一條跳轉指令,待調度的機器指令片段包括所述第一跳轉指令以及其之前的所有待調度的機器指令。
[0113]在步驟S103中,在所述待調度的機器指令片段的最後一條指令(即第一跳轉指令JPl)前,插入第二跳轉指令JP2,所述JP2指向指令重組平臺的入口地址,生成具有第二地址A"的重組指令片段。
[0114]插入第二跳轉指令是為了在CPU運行所述待調度的機器指令片段時,在JPl運行前,重新開始運行所述指令重組平臺,這樣,指令重組平臺就可以繼續分析下一段待調度的機器指令片段,從而通過重複本方法來完成對所有運行時指令的重組。
[0115]在步驟S105中,恢復所述指令運行環境可以包括:
[0116]從緩存棧中彈出指令運行相關的寄存器數據;其中地址寄存器保存的跳轉指令的目標地址已經修改為以第二地址A"為入口地址的新的機器指令片段。
[0117]步驟S105執行後,恢復了所述指令運行環境,指令重組平臺完成一次運行,CPU執行所述重組指令片段,即CPU將執行以第二地址A"為入口地址的機器指令片段。重組指令片段執行到第二跳轉指令JP2時,所述指令重組平臺重新得到CPU控制權(即執行步驟S101),此時第一跳轉指令的目標地址已經得到,該目標地址為新的第一地址,繼而重新執行步驟SlOl?步驟S105。
[0118]下面結合圖3,進一步說明指令重組過程和重組指令片段的生成過程。
[0119]圖3中包括待調度的機器指令集合401 (例如已經載入內存中的某程序的機器指令),其中指令4012為第一跳轉指令,如果指令4012的目標地址為變量,則首先假設指令4012指向機器指令4013 ;從第一跳轉指令4012以前的包括第一跳轉指令4012的所有待調度的機器指令構成了機器指令片段4011。
[0120]當指令重組方法運行後(指令重組平臺411),首先緩存指令運行環境;然後獲取(例如拷貝)機器指令片段4011 ;指令重組平臺在第一跳轉指令4012前插入了第二跳轉指令4113,第二跳轉指令4113指向指令重組平臺411本身,從而生成了重組指令片段4111,重組指令片段的地址為A";將所述緩存的指令運行環境中的地址寄存器的值A修改為地址A";最後恢復所述指令運行環境。
[0121]指令重組平臺411結束運行後,CPU執行以A"為地址的重組指令片段,當執行到第二跳轉指令4113時,指令重組平臺411會重新獲得CPU控制權。此時,第一跳轉指令4012的目標地址4013已經生成,該目標地址為新的第一地址,指令重組平臺根據該目標地址重新開始執行步驟SlOl?步驟S105,繼續分析後續的待調度的機器指令,從而完成了運行時指令重組的方法。
[0122]根據本發明另一個實施例,如圖4所示,在步驟S102中,獲取待調度的機器指令片段可以包括:
[0123]S1021,從地址寄存器(例如CPU地址寄存器)讀取待調度的機器指令地址;[0124]S1022,以跳轉指令為檢索目標,檢索所述機器指令地址指向的機器指令及其後續指令,直到發現第一個跳轉指令(稱為第一跳轉指令);所述跳轉指令指能夠改變機器指令順序執行流程的機器指令,包括Jump指令、Call指令、Return指令等;
[0125]S1023,將所述第一跳轉指令以及其之前的所有待調度的機器指令作為一個待調度的機器指令片段;將該機器指令片段保存在指令重組平臺中,或其他指令重組平臺能夠讀取的存儲位置。
[0126]在本發明的其他實施例中,獲取待調度的機器指令片段也可以以非跳轉指令(例如寫入指令、讀取指令等)為檢索目標,進一步切分機器指令片段。由於在這樣的實施例中,也需要保證在待調度跳轉指令執行後指令重組平臺仍能夠獲取CPU控制權或執行權,所以跳轉指令需要作為第二檢索目標,從而得到粒度更小的機器指令片段。
[0127]根據本發明另一個實施例,在步驟S102和S103之間,所述運行時指令重組方法還可以包括:
[0128]利用指令集匹配所述待調度的機器指令片段,得到目標機器指令;所述指令集包括X86,MIPS和ARM指令集;和
[0129]按照預定的方式,修改所述目標機器指令。
[0130]不僅可以完成運行時指令監控,還可以進行其他處理過程,相關實施例將在後面詳細介紹。
[0131]進一步的,為了提高指令重組方法的效率,可以將固定地址跳轉指令所指向的待調度指令在步驟S102中一併獲取。
[0132]根據本發明另一個實施例,提供一種運行時指令重組方法,該方法S300包括:
[0133]S301,緩存指令運行環境;所述指令運行環境包括地址寄存器,地址寄存器保存下一條將要運行的機器指令的地址,該地址為第一地址;
[0134]S302,獲取待調度的機器指令片段;其中,待調度的機器指令片段的最後一條指令為第一跳轉指令;
[0135]S303,在所述第一跳轉指令前,插入第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向指令重組平臺的入口地址,即執行該第二跳轉指令後,執行步驟 S301 ;
[0136]S304,將所述地址寄存器中的第一地址修改為第二地址;
[0137]S305,恢復所述指令運行環境。
[0138]與之前的實施例中所提供的方法相比,區別在於:在步驟S302中,待調度的機器指令片段中可以包括多條跳轉指令;跳轉指令中只有一條參數地址跳轉指令,稱為第一跳轉指令。
[0139]需要說明的是,跳轉指令可以包括兩類,參數地址跳轉指令和常數地址跳轉指令,其中,常數地址跳轉指令的跳轉地址為常數(即立即數),而參數地址跳轉指令中的參數地址一般在跳轉指令之前的一條機器指令中計算得到。
[0140]相似地,待調度的機器指令片段的最後一條指令為第一跳轉指令;待調度的機器指令片段包括所述第一跳轉指令以及其之前的所有待調度的機器指令。
[0141]進一步的,由於程序運行過程中所生成的機器指令具有很高的重複性,為了提高指令重組方法的效率,節省計算設備的計算資源(CPU資源),可以利用少量的存儲空間來保存重組指令片段。
[0142]根據本發明另一個實施例,提供一種運行時指令重組方法。如圖5所示,該方法S200包括:
[0143]S201,緩存指令運行環境;所述指令運行環境包括地址寄存器(例如CPU地址寄存器)(一般來說,指令運行環境是指CPU的所有寄存器,包括通用寄存器,狀態寄存器,地址寄存器等),地址寄存器保存下一條將要運行的機器指令的地址,該地址為第一地址;
[0144]S202,利用所述第一地址查找地址對應表;所述地址對應表用於表不第一地址A指向的待調度指令片段是否具有已保存的重組指令片段,地址對應表的數據為地址對;
[0145]S203,如果找到相應的記錄,將所述第一地址A(即地址寄存器的值A)修改為已保存的重組指令片段的地址A』 ;
[0146]S204,如果沒有找到相應的記錄,獲取待調度的機器指令片段;其中,待調度的機器指令片段的最後一條指令為第一跳轉指令;
[0147]S205,在所述第一跳轉指令前,插入第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向指令重組平臺的入口地址,即執行該第二跳轉指令後,執行步驟 S201 ;
[0148]S206,將所述地址寄存器中的第一地址修改為第二地址;
[0149]S207,恢復所述指令運行環境。
[0150]進一步的,步驟S206還包括:利用第二地址A"與第一地址A在所述地址對應表中建立地址對(或一條記錄)。具有地址A"的重組指令片段被保存在重組指令平臺中,以
供重用。
[0151]本方法利用地址對應表,節省計算資源,提高運行時指令重組的效率。
[0152]上述重組方法一般通過在待調度指令片段之中插入所需跳轉指令完成,在本發明其他實施例中,也可以通過其他方式完成重組指令片段的生成。下面將結合實施例詳細介紹。
[0153]根據本發明另一個實施例,提供一種指令重組方法,單獨開闢存儲位置保存第一跳轉指令的目標地址。如圖6所示,該方法SllO包括:
[0154]S111,緩存指令運行環境;
[0155]S112,從第一存儲位置讀取目標地址,根據目標地址獲取待調度(即待執行)的機器指令片段;其中,待調度機器指令片段的最後一條指令為第一跳轉指令;
[0156]S113,在第一存儲位置保存第一跳轉指令的目標地址;
[0157]S114,將第一跳轉指令替換為第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向指令重組平臺的入口地址,即執行該第二跳轉指令後,執行步驟Slll ;
[0158]S115,恢復所述指令運行環境,並跳轉到第二地址繼續執行。
[0159]其中,在步驟S112中,獲取待調度的機器指令片段可以包括:
[0160]S1121、以跳轉指令為檢索目標,檢索所述機器指令地址指向的機器指令及其後續指令,直到發現第一個跳轉指令(稱為第一跳轉指令);
[0161]所述跳轉指令指能夠改變機器指令順序執行流程的機器指令,包括Jump指令、Call指令、Return指令等;[0162]S1122、將所述第一跳轉指令以及其之前的所有待調度的機器指令作為一個待調度的機器指令片段;將該機器指令片段保存在指令重組平臺中,或其他指令重組平臺能夠讀取的存儲位置。
[0163]在步驟S113中,目標地址即跳轉指令的目標地址參數,其可以是立即數或變量參數,對於立即數保存其值,對於變量參數保存其地址/引用。當處理器即將執行某跳轉指令時,其跳轉目標地址已經計算完畢。
[0164]根據本發明另一個實施例,提供一種指令重組方法,針對非固定長度指令集進行反彙編和彙編處理。如圖7所示,該方法包括:
[0165]S121,緩存指令運行環境;
[0166]S122,從第一存儲位置讀取目標地址,根據目標地址獲取待調度指令片段:
[0167]從目標地址開始,獲取待調度的一段機器指令,將該段機器指令進行反彙編,並將反彙編結果通過一個詞法分析器進行處理並匹配是否其中包含跳轉指令,如果不包含則繼續獲取下一段待調度的機器指令重複上述操作,直到匹配到跳轉指令為止,該跳轉指令為第一跳轉指令;第一跳轉指令以及之前的所有指令組成待調度指令片段;
[0168]S123,在第一存儲位置保存第一跳轉指令的目標地址;
[0169]S124,將第一跳轉指令替換為第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向指令重組平臺的入口地址;本實施例中,該第一跳轉指令和第二跳轉指令皆為彙編指令;
[0170]S125,將生成的重組後的彙編代碼通過彙編器生成對應的機器碼;和
[0171]S126,恢復所述指令運行環境,並跳轉到第二地址繼續執行。
[0172]根據本發明另一個實施例,提供一種指令重組方法,以壓棧指令替代或記錄第一跳轉指令。如圖8所示,該方法S130包括:
[0173]S131,緩存指令運行環境;
[0174]S132,獲取棧中保存的跳轉指令的地址和參數,計算下一條即將運行的指令地址,該地址為第一地址;
[0175]S133,根據第一地址獲取待調度/執行的機器指令片段;其中,待調度機器指令片段的最後一條指令為第一跳轉指令;
[0176]S134,替換第一跳轉指令為壓棧指令,在壓棧指令中記錄第一跳轉指令的地址和操作數;
[0177]S135,在壓棧指令之後加入第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向指令重組平臺的入口地址;和
[0178]S136,恢復所述指令運行環境,並跳轉到第二地址繼續執行。
[0179]本領域普通技術人員可以理解,上述各個實施例中提供的功能或特徵可以根據實際的需要疊加在同一個實施例中,這裡就不再一一組合給出,下面只舉一個例子進行示例性說明。
[0180]根據本發明另一個實施例,提供一種指令重組方法,如圖9a所示,包括:
[0181](I)緩存指令運行環境,所述指令運行環境包括全部的CPU環境和內存環境;獲取棧中保存的跳轉指令的地址和參數,計算下一條即將運行的指令地址(第零地址),將第一地址設置為第零地址;[0182](2)利用第一地址來查找地址對應表(也稱為地址查找表),如果找到記錄,恢復所緩存的指令運行環境,並跳轉到找到的對應地址(在地址對應表中的地址對內)繼續執行;
[0183](3)如果沒有找到記錄,從第一地址開始獲取待執行的機器指令片段,指令片段的結尾為跳轉指令(跳轉指令所在地址為第三地址);
[0184](4)從第一地址開始,將機器碼進行反彙編,並將反彙編結果通過一個詞法分析器進行處理,生成重組後的彙編代碼,直到第三地址為止;
[0185](5)判斷第三地址處的代碼是否可以進一步處理,即第三地址處的跳轉指令的目標地址為已知量(例如,立即數),如果可以,將第一地址設置為第三地址(或第三地址的目標地址),重新開始執行(3);
[0186](6)如果不可以,在生成的重組後的彙編代碼最後,加入壓棧指令記錄當前第三地址的原始地址位置(即第三地址的值)和操作數,並在壓棧指令之後加入跳轉至重組平臺開始的指令,即能夠使步驟(I)再次開始執行;
[0187](7)將生成的重組後的彙編代碼通過彙編器生成對應的機器碼,並存儲於重組地址空間中分配出的地址(第二地址),並將第二地址和第零地址以對應地址對的形式存儲於地址對應表中;
[0188](8)恢復環境,並跳轉到第二地址繼續執行。
[0189]為了方便理解,現以X86體系處理器運行該實施例提供的方法進行說明,參考圖9b-9d,指令重組的一個示例過程如下;
[0190](I)重組平臺開始工作後,首先緩存當前指令運行環境;獲取棧中保存的跳轉指令的地址和參數,計算下一條即將運行的指令地址,該地址為第一地址。
[0191](2)利用第一地址來查找地址對應表,如果找到記錄,恢復所緩存的指令運行環境,並跳轉到找到的對應地址繼續執行(圖%);如果沒有找到記錄,進行如下操作(圖9c)。
[0192](3)-(6)從第一地址開始,將機器碼進行反彙編,並將反彙編結果通過一個詞法分析器進行處理,生成重組代碼;
[0193]對該段彙編代碼進行檢索,檢查是否包含跳轉指令;
[0194]對第一個跳轉指令進行分析,判斷其跳轉目標地址是否為已知量,如果是已知量,則繼續尋找,直到找到第一條參數地址跳轉指令,稱為第一跳轉指令,該指令的地址為第三地址;
[0195]在生成的彙編代碼(從第一地址到第三地址的機器指令,不包括第一跳轉指令)最後加入壓棧指令記錄當前第三地址的第一跳轉的原始地址位置和操作數;
[0196]在壓棧指令之後加入跳轉至重組平臺開始的指令(第二跳轉指令)。
[0197](7)將生成的彙編代碼通過彙編器生成對應的機器碼,並存儲於重組地址空間中分配出的地址(第二地址);
[0198]將第二地址和第零地址以對應地址對的形式存儲於地址對應表中。
[0199](8)恢復環境,並跳轉到第二地址繼續執行。
[0200](圖9d)處理器開始執行第二地址的指令,之前的待重組指令片段中的跳轉指令已經替換為壓棧指令和跳轉去重組平臺的指令,壓棧指令主要的目的是向重組平臺提供輸入參數。(圖9d)當執行到第二跳轉指令時,重組平臺重新得到執行,進行上述的步驟(I),通過查看壓棧指令中保存的跳轉指令的地址和參數,計算下一條即將運行的指令地址,該地址為第一地址。
[0201 ] 之後的處理即上述過程的循環。
[0202]進一步的,為了從系統啟動後即執行運行時的指令監控,實現計算設備運行階段的運行時指令全監控,本發明另一個實施例中,修改計算機啟動時的load指令,在load指令執行前調用本發明提供的指令重組平臺,執行上述運行時指令重組方法,由於load指令跳轉地址為已知的固定地址,指令重組平臺可以事先建立好地址對應表及該第一條記錄,並建立好第一個重組指令片段。
[0203]進一步的,根據本發明另一個實施例,提供一種計算機可讀介質,其中,所述可讀介質中存儲有計算機可執行的程序代碼,所述程序代碼用於執行上述實施例中提供的運行時指令重組方法的步驟。
[0204]進一步的,根據本發明另一個實施例,提供一種電腦程式,其中,所述電腦程式包含上述實施例中提供的運行時指令重組方法的步驟。
[0205]針對數據安全的指令重組
[0206]上述的運行時指令重組方法為進一步的應用提供了基礎。下面的實施例中提供了各種針對不同機器指令進行處理的運行時指令重組方法,其中包括存儲/讀取指令,I/o指令,以及網絡傳輸指令:
[0207](I)存儲/讀取指令指計算機系統中所有對外部存儲設備(包括但不限於磁碟、移動存儲、光存儲)進行存儲/讀取的指令或指令組合。
[0208](2) I/O指令指計算機系統中所有操作外設的地址空間的指令,這些指令最終會影響外設輸入輸出狀態、數據、信號等。這裡的輸入輸出地址空間包括但不限於(I/O地址空間、內存映射I/O設備地址空間)。
[0209](3)網絡傳輸指令指計算機系統中所有影響網絡設備的指令,這些指令最終會影響計算機系統網絡設備的傳輸、狀態、數據、信號等所有相關特性。
[0210]其中,存儲/讀取指令與I/O指令之間可以存在交集。
[0211]根據本發明一個實施例,提供一種針對存儲/讀取指令的運行時指令重組方法S400,包括:
[0212]S401,緩存指令運行環境;所述指令運行環境包括地址寄存器,地址寄存器保存下一條將要運行的機器指令的地址,該地址為第一地址;
[0213]S402,利用所述第一地址查找地址對應表;
[0214]S403,如果找到相應的記錄,將所述第一地址A修改為已保存的重組指令片段的地址A』 ;
[0215]S404,如果沒有找到相應的記錄,重組指令片段的生成方法包括:
[0216]S4041,獲取待調度機器指令片段;其中,待調度的機器指令片段的最後一條指令為第一跳轉指令;與步驟S102相同;
[0217]S4042,反彙編所述待調度機器指令片段,得到彙編指令片段;
[0218]S4043,檢索目標彙編指令,所述目標彙編指令為存儲/讀取指令;
[0219]S4044,如果檢索得到所述彙編指令片段中的存儲/讀取指令,修改其中的存儲和讀取地址為安全存儲設備上的地址;修改方式可以為本地地址空間和安全存儲設備地址空間之間的直接映射;
[0220]S4045,在所述第一跳轉指令JPl前,插入第二跳轉指令JP2,所述JP2指向指令重組平臺的入口地址;
[0221]S4046,彙編修改過的彙編指令片段,生成具有地址A"的重組機器指令片段;
[0222]S4047,利用重組機器指令片段地址A"與第一地址A在所述地址對應表中建立一條記錄(或地址對),具有地址A"的重組指令片段被保存在重組指令平臺中;
[0223]S4048,將第一地址A修改為第二地址A";
[0224]S405,恢復所述指令運行環境。
[0225]本實施例是在反彙編步驟之後進行指令處理的;在其他實施例中,也可以省略反彙編和對應的彙編步驟,直接處理機器指令。
[0226]在步驟S4044中,針對存儲和讀取指令進行操作,修改其中的目標和源地址,以實現存儲重定位/重定向,確保數據安全。更具體的安全存儲/讀取的方法將在本發明提供的下面的實施例中介紹。
[0227]根據本發明一個實施例,提供一種針對I/O指令的運行時指令重組方法S500,包括:
[0228]S501,緩存指令運行環境;所述指令運行環境包括地址寄存器,地址寄存器保存下一條將要運行的機器指令的地址,該地址為第一地址;
[0229]S502,利用所述第一地址查找地址對應表;
[0230]S503,如果找到相應的記錄,將所述第一地址A修改為已保存的重組指令片段的地址A』 ;
[0231]S504,如果沒有找到相應的記錄,重組指令片段的生成方法包括:
[0232]S5041,獲取待調度機器指令片段;其中,待調度的機器指令片段的最後一條指令為第一跳轉指令;與步驟S102相同;
[0233]S5042,反彙編所述機器指令片段,得到彙編指令片段;
[0234]S5043,檢索目標彙編指令,所述目標彙編指令為I/O指令;
[0235]S5044,如果檢索得到所述彙編指令片段中的I/O指令,將所述I/O指令中的輸入指令全部阻止;
[0236]S5045,在所述第一跳轉指令JPl前,插入第二跳轉指令JP2,所述JP2指向指令重組平臺的入口地址;
[0237]S5046,彙編修改過的彙編指令片段,生成具有地址A"的重組機器指令片段;
[0238]S5047,利用重組機器指令片段地址A"與第一地址A在所述地址對應表中建立一條記錄(或地址對),具有地址A"的重組指令片段被保存在重組指令平臺中;
[0239]S5048,將第一地址A修改為第二地址A";
[0240]S505,恢復所述指令運行環境。
[0241]本實施例是在反彙編步驟之後進行指令處理的;在其他實施例中,也可以省略反彙編和對應的彙編步驟,直接處理機器指令。
[0242]在步驟S5044中,針對I/O指令進行操作,將所述I/O指令中的輸入指令全部阻止,以實現徹底阻斷對本地硬體設備的寫操作;結合上一個實施例中的存儲指令處理過程,還可以實現對除存儲指令之外的輸入指令的阻止,可以提高計算設備中的數據安全性。
[0243]根據本發明一個實施例,提供一種針對網絡傳輸指令的運行時指令重組方法S600,包括:
[0244]S601,緩存指令運行環境;所述指令運行環境包括地址寄存器,地址寄存器保存下一條將要運行的機器指令的地址,該地址為第一地址;
[0245]S602,利用所述第一地址查找地址對應表;
[0246]S603,如果找到相應的記錄,將所述第一地址A修改為已保存的重組指令片段的地址A』 ;
[0247]S604,如果沒有找到相應的記錄,重組指令片段的生成方法包括:
[0248]S6041,獲取待調度機器指令片段;其中,待調度的機器指令片段的最後一條指令為第一跳轉指令;與步驟S102相同;
[0249]S6042,反彙編所述待調度機器指令片段,得到彙編指令片段;
[0250]S6043,檢索目標彙編指令,所述目標彙編指令為網絡傳輸指令;
[0251]S6044,如果檢索得到所述彙編指令片段中的網絡傳輸指令,檢驗所述網絡傳輸指令中的目標地址對應的遠端計算設備是否為安全地址,如果不是,阻止所述網絡傳輸指令;
[0252]S6045,在所述第一跳轉指令JPl前,插入第二跳轉指令JP2,所述JP2指向指令重組平臺的入口地址;
[0253]S6046,彙編修改過的彙編指令片段,生成具有地址A"的重組機器指令片段;
[0254]S6047,利用重組機器指令片段地址A"與第一地址A在所述地址對應表中建立一條記錄(或地址對),具有地址A"的重組指令片段被保存在重組指令平臺中;
[0255]S6048,將第一地址A修改為第二地址A";
[0256]S605,恢復所述指令運行環境。
[0257]在步驟S6044中,阻止/拒絕網絡傳輸指令可以通過在重組後的代碼中插入一到多條指令來將本身的傳輸指令替換為「取消當前操作的指令」或直接替換為無效指令,要視硬體的不同而定。
[0258]本實施例是在反彙編步驟之後進行指令處理的;在其他實施例中,也可以省略反彙編和對應的彙編步驟,直接處理機器指令。
[0259]在步驟S6044中,針對網絡傳輸指令進行操作,檢驗所述網絡傳輸指令中的目標地址對應的遠端計算設備是否為安全地址;如果不是,阻止所述網絡傳輸指令,以實現數據安全傳輸。
[0260]上述多個實施例中的地址對應表是由指令重組平臺建立並維護的,可以是固定長度的數組結構,也可以是可變長度的鍊表結構,還可以是其他存儲二元數據的適當的數據結構。優選的,其長度可調節,並且其佔用空間可釋放。釋放地址對應表的操作可以隨機進行,也可以周期進行。在一些實施例中,所述的地址對應表還可以包括記錄建立時間欄位,用於在釋放空間刪除記錄時,按照建立時間的長短刪除記錄。在一些實施例中,所述的地址對應表還可以包括記錄使用次數欄位,在查找地址對應表步驟中,如果找到,將改變該欄位的值;所述記錄使用次數欄位也用於在釋放空間刪除記錄時,按照使用次數的多少刪除記錄。[0261]另外,本領域的技術人員可以理解,上述指令重組方法(即運行時指令重組方法)可使用軟體或硬體的方法實現:
[0262](I)如果以軟體實現,則上述方法對應的步驟以軟體代碼的形式存儲在計算機可讀介質上,成為軟體產品;
[0263](2)如果以硬體實現,則上述方法對應的步驟以硬體代碼(例如Verilog)描述,並固化(經過物理設計/布局布線/晶圓廠流片等過程)成為晶片產品(例如處理器產品)。下面將詳細介紹。
[0264]指令重組裝置
[0265]與上述運行時指令重組方法SlOO相對應,根據本發明一個實施例,提供一種運行時指令重組裝置。如圖10所示,指令重組裝置500包括:
[0266]指令運行環境緩存和恢復單元501,適於緩存和恢復指令運行環境;所述指令運行環境包括地址寄存器,該地址寄存器保存下一條將要運行的機器指令的地址,該地址為第一地址;
[0267]指令獲取單元502,適於在單元501緩存指令運行環境後,獲取待調度的機器指令片段;其中,待調度的機器指令片段的最後一條指令為第一跳轉指令;
[0268]指令重組單元503,適於解析、修改所述待調度的機器指令片段,包括:在第一跳轉指令前,插入第二跳轉指令,生成具有第二地址A"的重組指令片段;所述第二跳轉指令指向裝置500,即執行該第二跳轉指令後,裝置500的指令運行環境緩存和恢復單元501進行下一次處理;和
[0269]地址替換單元504,適於將所述緩存的指令運行環境中的地址寄存器的值修改為重組指令片段的地址。
[0270]所述指令運行環境緩存和恢復單元501分別與指令獲取單元502以及地址替換單元504耦接,所述指令獲取單元502,指令重組單元503和地址替換單元504依次耦接。
[0271]裝置500執行過程如下:
[0272]首先,指令運行環境緩存和恢復單元501緩存指令運行環境,例如向緩存棧中壓入指令運行相關的寄存器數據;
[0273]然後,所述指令獲取單元502從CPU地址寄存器511讀取待調度的機器指令地址,並從所述機器指令地址讀取機器指令片段,所述機器指令片段最後一條指令為跳轉指令;
[0274]例如,指令獲取單元502從CPU地址寄存器511讀取待調度的機器指令地址;以跳轉指令為檢索目標,檢索所述機器指令地址對應的機器指令,直到發現第一個跳轉指令;所述跳轉指令包括例如Jump指令和Call指令等;將所述第一個跳轉指令及其之前的所有機器指令作為一個待調度的機器指令片段;將該機器指令片段保存在裝置500中,或其他的裝置500能夠讀取的存儲位置;
[0275]然後,指令重組單元503在所述獲取的機器指令片段的最後一條指令前,插入第二跳轉指令,所述第二跳轉指令指向裝置500的入口地址,生成具有地址A"的重組指令片段;
[0276]然後,地址替換單元504將所述緩存的指令運行環境中的地址寄存器的值A修改為地址A";
[0277]最後,指令運行環境緩存和恢復單元501恢復所述指令運行環境,例如從緩存棧中彈出指令運行相關的寄存器數據。
[0278]與上述運行時指令重組方法S300相對應,所述指令獲取單元502可以將第一個非常數地址跳轉指令作為第一跳轉指令。以提高重組裝置的執行效率。
[0279]與上述運行時指令重組方法S200相對應,根據本發明另一個實施例,提供一種運行時指令重組裝置,能夠充分利用運行時指令重複性,提高效率,節省計算資源。
[0280]如圖11所示,指令重組裝置600包括:
[0281]指令運行環境緩存和恢復單元601,適於緩存和恢復指令運行環境;所述指令運行環境包括地址寄存器,地址寄存器保存下一條將要運行的機器指令的地址,該地址為第一地址;
[0282]指令獲取單元602,適於獲取待調度的機器指令片段;其中,待調度的機器指令片段的最後一條指令為第一跳轉指令;
[0283]指令重組單元603,適於解析、修改所述待調度機器指令片段,包括:在第一跳轉指令前插入第二跳轉指令,以生成具有第二地址的重組指令片段;所述第二跳轉指令指向裝置600,即執行該第二跳轉指令後,裝置600的指令運行環境緩存和恢復單元601進行下一次處理;
[0284]地址替換單元604,適於將所述緩存的指令運行環境中的地址寄存器的值修改為重組指令片段的地址;和
[0285]指令檢索單元605,適於利用所述第一地址查找地址對應表;所述地址對應表用於表示第一地址A指向的待調度指令片段是否具有已保存的重組指令片段,地址對應表的數據為地址對;
[0286]如果找到相應的記錄,指令檢索單元605適於調用地址替換單元604,將所述第一地址A(即地址寄存器的值A)修改為已保存的重組指令片段的地址A』 ;如果沒有找到相應的記錄,指令檢索單元適於利用第二地址A"與地址A在所述地址對應表中建立一條記錄。
[0287]所述指令運行環境緩存和恢復單元601分別與指令檢索單元605以及地址替換單元604耦接,所述指令檢索單元605分別與指令獲取單元602,指令重組單元603和地址替換單元604耦接,所述指令獲取單元602、指令重組單元603和地址替換單元604依次耦接。
[0288]裝置600的執行過程如下:
[0289]首先,指令運行環境緩存和恢復單元601緩存指令運行環境,例如向緩存棧中壓入指令運行相關的寄存器數據;
[0290]然後,指令檢索單元605利用所述緩存的指令運行環境中的地址寄存器的值A查找地址對應表;
[0291]如果找到相應的記錄,指令檢索單元605調用地址替換單元604,地址替換單元604將所述地址寄存器的值A修改為記錄中的值A』 ;地址替換單元604調用指令運行環境緩存和恢復單元602,以恢復所述指令運行環境,即從緩存棧中彈出指令運行相關的寄存器數據,本次重組操作結束;
[0292]如果沒有找到相應的記錄,所述指令獲取單元602從CPU地址寄存器讀取待調度的機器指令地址,並從所述機器指令地址讀取機器指令片段,所述機器指令片段最後一條指令為跳轉指令。具體的,指令獲取單元602從CPU地址寄存器讀取待調度的機器指令地址;以跳轉指令為檢索目標,檢索所述機器指令地址對應的機器指令,直到發現第一個跳轉指令;所述跳轉指令包括Jump指令和Call指令等;將所述第一個跳轉指令及其之前的所有機器指令作為一個待調度的機器指令片段;將該機器指令片段保存在裝置600中,或其他的裝置600能夠讀取的存儲位置;
[0293]然後,指令重組單元603在所述獲取的機器指令片段的最後一條指令前,插入第二跳轉指令,所述第二跳轉指令指向裝置600的入口地址,生成具有地址A"的重組指令片段;
[0294]然後,指令重組單元603將地址A"發送給指令檢索單元605,指令檢索單元605利用地址A"與地址A在其中的地址對應表中建立一條記錄;以備後續指令重用;
[0295]然後,地址替換單元604將所述緩存的指令運行環境中的地址寄存器的值A修改為地址A";
[0296]最後,指令運行環境緩存和恢復單元601恢復所述指令運行環境,即從緩存棧中彈出指令運行相關的寄存器數據。
[0297]繼續參考圖11,其中,指令重組單元603還可以包括:
[0298]指令解析單元6031,適於利用指令集匹配所述機器指令片段,得到待處理的目標機器指令(即利用目標指令檢索待調度的機器指令片段);所述指令集包括X86,MIPS和ARM指令集;
[0299]指令修改單元6032,適於按照預定的方式,修改所述目標機器指令。
[0300]例如,如果所述目標指令為存儲/讀取指令,所述指令解析單元6031將負責獲取待調度的機器指令片段中的存儲/讀取指令,所述指令修改單元6032修改其中的存儲和讀取地址為安全存儲設備上的地址。其作用和效果與上述對應的方法實施例S400相同,這裡不再贅述。
[0301]又例如,如果所述目標指令為I/O指令,所述指令解析單元6031將負責獲取待調度的機器指令片段中的I/o指令,所述指令修改單元6032將所述I/O指令中的輸入指令全部阻止。其作用和效果與上述對應的方法實施例S500相同,這裡不再贅述。
[0302]又例如,如果所述目標指令為網絡傳輸指令,所述指令解析單元6031將負責獲取待調度的機器指令片段中的網絡傳輸指令,所述指令修改單元6032檢驗所述網絡傳輸指令中的目標地址對應的遠端計算設備是否為安全地址;如果不是,所述指令修改單元適於阻止所述網絡傳輸指令。其作用和效果與上述對應的方法實施例S600相同,這裡不再贅述。
[0303]根據本發明另一個實施例,上述指令重組單元還可以包括反彙編單元和彙編單元。如圖12所示,指令重組單元703包括:依次稱接的反彙編單元7031,指令解析單元7032,指令修改單元7033和彙編單元7034。
[0304]其中,反彙編單元7031適於在解析、修改所述待調度的機器指令片段之前,反彙編所述待調度的機器指令片段,生成待調度的彙編指令片段;發送給指令解析單元7032。
[0305]彙編單元7034適於在解析、修改所述待調度的機器指令片段之後,彙編重組後的彙編指令片段,得到機器碼表示的重組指令片段;發送給指令替換單元。
[0306]在該實施例中,所述指令解析單元7032和指令修改單元7033將操作待調度的彙編指令片段。
[0307]與上述運行時指令重組方法SllO相對應,根據本發明另一個實施例,提供一種運行時指令重組裝置。如圖13所示,指令重組裝置800包括:
[0308]指令運行環境緩存和恢復單元801,適於緩存指令運行環境;
[0309]指令獲取單元802和第一存儲位置803,其中,指令獲取單元802適於從第一存儲位置803讀取目標地址,並根據目標地址獲取待調度/執行的機器指令片段;其中,待調度機器指令片段的最後一條指令為第一跳轉指令;以及
[0310]指令重組單元804,適於在第一存儲位置803保存第一跳轉指令的目標地址,將第一跳轉指令替換為第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向裝置800的入口地址。
[0311]其中,指令運行環境緩存和恢復單元801還適於在指令重組單元804替換指令之後,恢復所述指令運行環境,並跳轉到第二地址繼續執行。
[0312]裝置800的執行過程如下:
[0313]首先,指令運行環境緩存和恢復單元801緩存指令運行環境;
[0314]然後,指令獲取單元802從第一存儲位置803讀取目標地址(待調度指令地址),根據目標地址獲取待調度機器指令片段;其中,待調度機器指令片段的最後一條指令為第一跳轉指令;
[0315]然後,指令重組單元804在第一存儲位置803保存第一跳轉指令的目標地址;對於立即數保存其值,對於變量參數保存其地址/引用;
[0316]然後,指令重組單元804將第一跳轉指令替換為第二跳轉指令,生成具有第二地址的重組指令片段;
[0317]最後,指令運行環境緩存和恢復單元801恢復所述指令運行環境,並跳轉到第二地址繼續執行。
[0318]根據本發明另一個實施例,提供一種運行時指令重組裝置,與上述方法S130相對應,並且包含上述某些實施例中提供的裝置的特徵。如圖14所示,該裝置900包括:
[0319]指令運行環境緩存和恢復單元901,適於緩存和恢復指令運行環境;
[0320]指令獲取單元902,適於通過輸入參數計算的方式獲取下一條即將運行的指令地址,該地址為第一地址;還適於根據第一地址獲取待調度/執行的機器指令片段;其中,待調度機器指令片段的最後一條指令為第一跳轉指令;
[0321]指令重組單元903,適於替換第一跳轉指令為壓棧指令,在壓棧指令中記錄第一跳轉指令的地址和操作數;還適於在壓棧指令之後加入第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向裝置900的入口地址;還適於將重組指令片段的第二地址與第一地址在地址對應表中建立一條記錄;
[0322]指令檢索單元904,適於利用所述第一地址查找地址對應表;所述地址對應表用於表示第一地址指向的待調度指令片段是否具有已保存的重組指令片段,地址對應表的數據為地址對;
[0323]如果找到相應的記錄,指令檢索單元904適於調用指令運行環境緩存和恢復單元901恢復所緩存的指令運行環境,並跳轉到找到的對應地址繼續執行(重組操作完成);
[0324]如果沒有找到相應的記錄,調用指令重組單元903進行重組操作。
[0325]其中,指令重組單元903還可以包括反彙編單元9031,指令解析單元9032,指令修改單元9033,和彙編單元9034。[0326]其中,當指令重組單元902完成重組後,適於調用指令運行環境緩存和恢復單元901恢復所緩存的指令運行環境,並跳轉到重組指令片段的地址繼續執行(本次重組操作完成)。
[0327]根據本發明另一個實施例,上述反彙編單元9031可以位於指令獲取單元902之中,在獲取待調度的指令片段時由其進行反彙編操作。
[0328]本領域技術人員可以理解,上述裝置實施例的附圖中的數據流的箭頭只是為了便於解釋上述實施例中的具體操作流程,並不限定圖中各個單元之間的數據流向或者連接方向,裝置中各個單元之間為耦接關係。
[0329]上面通過一些實施例詳細的介紹了運行時指令重組方法和裝置,其與現有技術相t匕,具有以下優點:
[0330]通過指令重組方法,可以在指令運行狀態下監控計算設備的指令;
[0331]利用地址對應表,提高了指令重組效率,節省了計算資源;
[0332]針對存儲和讀取指令進行操作,修改其中的目標和源地址,以實現存儲重定位/重定向,確保數據安全;
[0333]針對I/O指令進行操作,將所述I/O指令中的輸入指令全部阻止,以實現徹底阻斷對本地硬體設備的寫操作;還可以實現對除存儲指令之外的輸入指令的阻止,可以提高計算設備中的數據安全性;
[0334]針對網絡傳輸指令進行操作,檢驗所述網絡傳輸指令中的目標地址對應的遠端計算設備是否為安全地址;如果不是,阻止所述網絡傳輸指令,以實現數據安全傳輸。
[0335]數據安全存取過程
[0336]圖15是本發明一個實施例中計算設備的系統層次示意圖。
[0337]其中,計算設備(例如計算機終端系統)200包括:用戶界面層201,應用層202,作業系統內核層203,硬體映射層204,安全層205,和硬體層206。
[0338]其中,硬體層206進一步包括CPU 2061,硬碟2062 (即本地存儲設備)以及網卡2063。
[0339]另外,計算設備200與存儲設備10 (又稱為安全存儲設備)耦接。
[0340]本實施例中,存儲設備10為遠程磁碟陣列,通過網絡連接硬體層206的網卡2063,與計算設備200交換數據。在本發明的其他實施例中,存儲設備10也可以是其他已知或未知類型的存儲設備。
[0341]其中,硬碟2062也可以替換為其他類型的本地存儲設備,例如u盤和光碟等,這裡只是舉例說明,並無限制目的。
[0342]結合上述層次結構,本實施例提供的數據安全存取過程包括:
[0343]S1000,初始化;
[0344]S2000,數據寫入;和
[0345]S3000,數據讀取。
[0346]參考圖16,上述的初始化過程S1000包括:
[0347]S1010,建立計算機終端系統200與安全存儲設備10的通訊;
[0348]S1020,從安全存儲設備10上同步映射位圖(Bitmap)至當前計算機終端系統200,例如保存在計算機終端系統200內存中;所述映射位圖用於表示本地存儲設備的數據是否已經存儲到安全存儲設備;
[0349]S1030,如果步驟S1020的同步操作失敗,在安全存儲設備10上建立Bitmap並初始化,然後同步到計算機終端系統200。
[0350]其中,為了區分計算機終端200上的Bitmap與存儲設備10上的Bitmap,下文中,除非另有說明,將計算機終端系統200上的Bitmap稱為映射位圖或第一映射位圖,將安全存儲設備10上的Bitmap稱為第二映射位圖。
[0351]在步驟S1020中,如果從存儲設備10上同步第二映射位圖至當前計算機終端系統200的操作失敗,說明存儲設備10與計算機終端系統200之間是第一次連接。
[0352]其中,步驟S1030可以包括:
[0353]將計算機終端系統200中的本地存儲空間映射到存儲設備10上,映射關係為以I扇區(或其他存儲的基本單位)為單位的一一映射,並且建立映射位圖(Bitmap)。
[0354]在本發明的其他實施例中,也可以使用其他基本容量為單位建立本地存儲空間到存儲設備100上的Bitmap。
[0355]圖17為本發明一個實施例中的Bitmap示意圖。圖中包括本地存儲設備(例如圖15中的硬碟2062)上的存儲介質3000,與本地存儲設備網絡連接的存儲設備10上的存儲介質4000。
[0356]建立Bitmap的過程描述如下。對存儲介質3000,在存儲介質4000上建立與其大小相同的存儲空間4010,作為一一映射空間。在存儲空間4010中保存Bitmap 4020, Bitmap4020為一張位圖,其中I位代表I扇區,每一位的數據(O或I)標識/指示存儲介質3000上對應的扇區是否轉儲或對應存儲在存儲介質4000上的存儲空間4010中,所以映射位圖也可以稱為轉儲表。存儲設備10上的Bitmap 4020建立完成之後同步到計算機終端系統200 中。
[0357]更新Bitmap的過程描述如下。在Bitmap 4020中,轉儲的扇區標記為1,非轉儲的扇區沒有標記(轉儲扇區和非轉儲扇區所使用的標記可以自由選擇)。當應用程式或作業系統保存一個數據(例如文件時),作業系統內部的文件系統將在本地存儲設備的存儲介質3000上開闢一定量的存儲空間,例如扇區3040和扇區3050,並分配給該文件使用,並改寫本地的文件分配表。該文件轉儲時(即寫入扇區3040和扇區3050的數據被存儲到存儲設備10上時),在存儲介質4000上相同的位置分配扇區4040和4050,並在其中保存轉儲數據,最後將Bitmap 4020中扇區3040和扇區3050對應的位數據改為I。
[0358]結合圖15,上述的數據寫入過程S2000進一步包括:
[0359]S2010,應用層202通過作業系統內核層203的文件系統發出寫文件操作請求,或作業系統內核層203直接發出寫文件操作請求;或
[0360]應用層202直接向硬體映射層204發出寫數據操作請求,或作業系統內核層203直接向硬體映射層204發出寫數據操作請求;
[0361]S2020,作業系統內核層203將寫文件請求解析成硬體埠指令(即硬體指令),下發至硬體映射層204,其中埠指令包含需要寫存儲設備的位置(例如扇區);
[0362]需要注意的是,如果步驟S2010是直接向硬體映射層204發出寫數據操作請求,則該請求已經為硬體埠指令;
[0363]S2030,安全層205接收來自硬體映射層204的硬體埠指令,並且將埠指令中的寫入位置(即扇區)改寫為位於存儲設備10上的對應存儲地址,然後更新第一映射位圖,例如將所述扇區對應的位數據修改為1,表示該扇區已經轉儲;安全層205將修改後的埠指令發送給硬體層206。
[0364]寫入過程執行完成之後,計算機終端系統200並沒有存儲寫入的數據,相應的數據已經重定位存儲在安全存儲設備10上。
[0365]在本發明的另一個實施例中,如果寫本地硬碟指令本身與寫網絡硬碟指令不同,那麼不僅需要改地址,還需要改存儲指令。
[0366]根據本發明另一個實施例,寫入過程S2000還可以包括:
[0367]S2040,將第一映射位圖同步到存儲設備10上,保存為第二映射位圖,從而確保計算機終端系統200上的第一映射位圖與存儲設備上的第二映射位圖一致。
[0368]在本發明的其他實施例中,為了節省系統資源,S2040也可以在本地的計算機終端系統200關機前統一進行一次。
[0369]結合圖15,上述的數據讀取過程S3000進一步包括:
[0370]S3010,將存儲設備10上的第二映射位圖同步到計算機終端系統200上,保存為第一映射位圖;
[0371]S3020,應用層202通過作業系統內核層203的文件系統發出讀文件操作請求,或作業系統內核層203直接發出讀文件操作請求;或
[0372]應用層202直接向硬體映射層204發出讀數據操作請求,或作業系統內核層203直接向硬體映射層204發出讀數據操作請求;
[0373]S3030,安全層205接收來自硬體映射層204的數據讀取指令,獲取其中的讀取地址(源地址),查找第一映射位圖,如果第一映射位圖中的位數據表示所述讀取地址為轉儲地址,安全層205修改埠指令的讀取地址為存儲設備10上的地址;安全層205將修改後的埠指令發送給硬體層206。
[0374]該讀取過程沒有影響用戶既有的操作模式,實現了對於安全存儲設備(即存儲設備10)上已經轉儲的數據的讀取。
[0375]在步驟S3010中,從存儲設備10同步第二映射位圖到本地的過程是為了在計算機終端系統200重新啟動了以後,保持本地數據與安全存儲設備上的數據的一致性。
[0376]本領域技術人員可以理解,對於上述的數據寫入、讀取過程以及初始化過程,根據實際需要執行所需的過程或步驟即可。
[0377]數據安全存取方法
[0378]基於上述數據寫入過程和讀取過程,下面詳細描述本發明提供的數據安全存儲和讀取方法。
[0379]本領域技術人員可以理解,上面結合圖15來說明數據的讀取和存儲過程是為了方便理解,並不是限定,在本發明其他實施例中,可以在計算設備的適合層次上執行以上描述的各個步驟。
[0380]根據本發明一個實施例,提供一種數據安全存儲方法;如圖18所示,該方法包括如下步驟:
[0381]S4010,接收硬體指令;
[0382]S4020,分析並判斷該硬體指令是否為存儲指令;[0383]S4030,如果該硬體指令是存儲指令,修改存儲指令中的目標地址為對應的存儲設備(即安全存儲設備)上的存儲地址;
[0384]S4040,將修改後的存儲指令發送到硬體層。
[0385]在步驟S4010中,所述硬體指令可以是來自硬體映射層的硬體指令。接收來自硬體映射層的硬體指令可以100%的篩查所有發送到CPU等處理器的硬體指令(接口指令)。
[0386]其中,在計算機終端系統上,可以運行Windows作業系統,Windows系統中的硬體抽象層HAL為硬體映射層。在其他實施例中,計算機終端也可以運行其他作業系統,例如Linux, Unix或嵌入式作業系統等,硬體映射層為Linux或Unix或嵌入式作業系統對應的硬體映射層。
[0387]在步驟S4010中,結合上述運行時指令重組方法,接收硬體指令的過程可以包括:採用運行時指令重組方法(例如S101-S105)獲取硬體指令。換一種說法,就是可以在運行時指令重組方法獲取到機器指令時,處理存儲和讀取指令(例如S404,S504,或S604)。通過運行時指令重組方法,可以不僅將計算最終結果重定位存儲到安全存儲設備,還能夠將計算的中間過程(包括作業系統產生的中間過程)全部重定位存儲到安全存儲設備。
[0388]在步驟S4010和S4020中,硬體指令可以為X86指令、ARM指令、MIPS指令等類型,可以在計算終端中內置分析機制,以處理不同類型的CPU指令。
[0389]根據本發明另一個實施例,在步驟S4030之後,還可以包括:
[0390]S4050、更新第一映射位圖,將目標地址(扇區)在第一映射位圖中對應的「位」設置為轉儲標記,例如「 I 」;並且,將已經更新的映射位圖同步到所述安全存儲設備,保存為第二映射位圖。
[0391]本實施例中,轉儲操作對於上層應用以及用戶完全透明,不影響現有計算機操作、應用系統的工作流程。
[0392]本實施例提供的上述方法不僅可以在計算機終端系統中使用,還可以應用在任何包含應用層、作業系統內核層、硬體層的計算設備和智能終端上,在硬體層執行指令前,實現指令級存儲重定位/重定向(即基於硬體存儲指令的存儲重定位/重定向)。
[0393]根據本發明一個實施例,提供一種數據安全讀取方法;參考圖19,該方法包括:
[0394]S5010,接收硬體指令;
[0395]S5020,分析並判斷該硬體指令是否為讀取指令;
[0396]S5030,如果是讀取指令,獲取讀取指令中的源地址,查找第一映射位圖,並根據映射位圖的數據修改讀取指令中的讀取地址;和
[0397]S5040,將修改後的硬體指令發送到硬體層。
[0398]步驟S5010之前,該方法還可以包括S5000:將存儲設備上的第二映射位圖同步到計算機終端系統200上,保存為第一映射位圖。
[0399]步驟S5010中,所述的硬體指令可以來自硬體映射層。
[0400]在步驟S5010中,結合上述運行時指令重組方法,接收硬體指令的過程可以包括:採用運行時指令重組方法(例如S101-S105)獲取硬體指令。換一種說法,就是可以在運行時指令重組方法獲取到機器指令時,處理存儲和讀取指令(例如S400)。
[0401]步驟S5020中,如果該硬體指令不是讀取指令,則可以直接將硬體指令發送給硬體層去執行。[0402]步驟S5030還可以進一步分解為兩步驟:
[0403]S5031,如果是讀取指令,獲取讀取指令中的源地址,判斷所述源地址是否為存儲設備上的地址;
[0404]S5032,如果所述源地址不是存儲設備上的地址,查找第一映射位圖,並根據映射位圖的數據修改讀取指令中的讀取地址。
[0405]步驟S5031中,如果該讀取指令的源地址已經為存儲設備上的地址,則計算設備(例如圖15中的安全層205)不用再次查找第一映射位圖中的數據,可以直接將硬體指令發送給硬體層去執行。
[0406]進一步的,為了節約網絡資源,在本發明的一些實施例中,安全存儲設備10可以作為多個終端系統的共享資源。
[0407]上面曾經提到可以將數據安全存儲和讀取方法與指令重組方法結合,為了方便理解,下面通過實施例詳細介紹。
[0408]根據本發明一個實施例,提供一種數據安全存取方法。如圖20所示,該方法S6000包括:
[0409]S6010,緩存指令運行環境;
[0410]S6011,從第一存儲位置讀取目標地址,根據目標地址獲取待調度/執行的機器指令片段;其中,待調度機器指令片段的最後一條指令為第一跳轉指令;
[0411]S6012,在第一存儲位置保存第一跳轉指令的目標地址;
[0412]S6013,分析並判斷待調度機器指令中的每一條指令是否為存取指令;
[0413]S6014,如果是存取指令:
[0414]對於存儲指令,修改存儲指令中的目標地址為對應的存儲設備(即安全存儲設備)上的存儲地址;並修改第一映射位圖;
[0415]對於讀取指令,獲取讀取指令中的源地址,查找第一映射位圖,並根據映射位圖的數據修改讀取指令中的讀取地址;
[0416]如果寫本地硬碟指令本身與寫網絡硬碟指令不同或者讀取本地硬碟指令本身與讀取網絡硬碟指令不同,那麼不僅需要修改地址,還需要相應的修改存儲指令或讀取指令;
[0417]S6015,將第一跳轉指令替換為第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向指令重組平臺的入口地址;
[0418]S6016,恢復所述指令運行環境,並跳轉到第二地址繼續執行。
[0419]本領域技術人員可以理解,該實施例只是為了說明而舉例,並不限制安全讀取方法、安全存儲方法和指令重組方法的組合方式,上述介紹的各種安全讀取方法、安全存儲方法和指令重組方法可以以各種所需的方式組合使用。
[0420]存儲和讀取一般是針對本地的存儲設備進行的數據交換;傳輸一般是指通過網絡設備進行的數據交換。
[0421 ] 進一步的,本發明一個實施例中提供一種數據安全傳輸方法。
[0422]如圖21所示,該方法包括:
[0423]S7010,接收(例如來自硬體映射層的)硬體指令;
[0424]S7020,分析並判斷該硬體指令是否為網絡傳輸指令;[0425]S7030,如果該硬體指令是傳輸指令,讀取目標地址;
[0426]S7040,判斷目標地址是否為安全地址;
[0427]S7050,如果是安全地址,將硬體指令發送到硬體層;如果不是安全地址,拒絕該指令;
[0428]S7060,硬體層發送傳輸指令和數據到目標地址的終端系統;
[0429]S7070,目標地址的終端系統接收並利用數據安全存儲方法保存數據。
[0430]在步驟S7040中,判斷目標地址是否為安全地址的方法如下。參考圖22,安全伺服器820通過網絡與終端系統800、810連接,終端系統800、810在部署本發明上述實施例中提供的數據安全傳輸方法時,都已經向安全伺服器820進行了註冊操作。安全伺服器820內部維護一個安全地址表,記錄了已經註冊的所有終端系統。
[0431]當安全地址表有更改的時候,安全伺服器820自動將更新的安全地址表發送給各個終端,終端系統800的架構包括應用層801,作業系統內核層802,安全層803以及硬體層804,安全層803負責維護該安全地址表。
[0432]安全層803將根據目標地址是否在安全地址表中,判斷目標地址是否為安全地址。即在步驟S7040中,如果目標地址列入了安全地址表,則目標地址為安全地址。
[0433]上述安全傳輸方法的實施,使木馬或惡意工具即使取得了涉密信息也無法傳輸所取得的信息。安全傳輸方法將在下面的安全互聯部分結合實施例展開介紹。
[0434]雖然本發明一些實施例中以計算機終端系統作為應用本發明提供的方法的主體,但是,任何手持設備、智能終端等能夠提供文件或數據編輯、保存或傳輸的電子設備,都可以成為應用本發明提供的數據安全存取及傳輸方法的載體。
[0435]另外,本領域的技術人員可以理解,上述的數據安全存儲方法、讀取方法及傳輸方法可使用軟體或硬體的形式來實現:
[0436](I)如果以軟體實現,則上述方法對應的步驟以軟體代碼的形式存儲在計算機可讀介質上,成為軟體產品;
[0437](2)如果以硬體實現,則上述方法對應的步驟以硬體代碼(例如Verilog)的形式描述,並固化(經過物理設計/布局布線/晶圓廠流片等過程)成為晶片產品(例如處理器產品)。
[0438]數據安全存取裝置
[0439]與上述的數據安全存儲方法相對應,根據本發明一個實施例,提供一種數據安全存儲裝置。
[0440]需要注意的是,數據安全存儲裝置在本發明中指:以硬體形式來實現數據安全存儲方法的裝置;安全存儲設備在本發明中指:用於轉儲信息或數據的存儲實體,例如磁碟
坐寸ο
[0441]參考圖23,數據安全存儲裝置7100包括:接收單元7110,指令分析單元7120,指令修改單元7130和發送單元7140。所述接收單元7110與指令分析單元7120耦接,指令分析單元7120分別與指令修改單元7130以及發送單元7140耦接,發送單元7140還與指令修改單元7130耦接。
[0442]其中,接收單元7110適於接收硬體指令,所述硬體指令可以來自硬體映射層;
[0443]指令分析單元7120適於分析所述硬體指令並判斷所述硬體指令是否為存儲指令;如果是存儲指令,指令分析單元7120還適於將其發送給指令修改單元7130,如果不是存儲指令,指令分析單元7120還適於將其發送給發送單元7140 ;
[0444]指令修改單元7130適於修改所述存儲指令中的目標地址為對應的在安全存儲設備上的存儲地址,然後將修改後的存儲指令發送給發送單元7140 ;
[0445]發送單元7150適於將接收到的指令轉發給硬體層7200。
[0446]進一步的,該數據安全存儲裝置還可以包括:更新單元7150和同步單元7160。其中,更新單元7150與指令修改單元7130耦接;同步單元7160與更新單元7150耦接。
[0447]所述更新單元7150適於在指令修改單元7130修改所述存儲指令之後,更新映射位圖中所述目標地址對應的位。本實施例中,將存儲指令目標地址包含的扇區在第一映射位圖中對應的「位」數據置「 I 」,表示已經轉儲。
[0448]所述同步單元7160適於建立計算終端系統與所述安全存儲設備的通訊,並將映射位圖在所述計算終端系統和所述安全存儲設備之間進行同步。
[0449]具體的,在計算終端系統啟動時,同步單元7160建立計算終端系統與所述安全存儲設備的通訊,並將所述安全存儲設備上的第二映射位圖同步到所述計算終端系統,保存為第一映射位圖。
[0450]如果將所述安全存儲設備上的第二映射位圖同步到所述計算終端系統失敗,表示計算終端系統與安全存儲設備是第一次通訊,同步單元7160將計算機終端系統中的本地存儲空間映射到所述安全存儲設備上,並建立映射位圖和第二映射位圖。例如在本實施例中,先在安全存儲設備上建立第二映射位圖,然後同步到本地,成為第一映射位圖。
[0451]當更新單元7150更新了第一映射位圖(即映射位圖)中所述目標地址對應的位,同步單元7160將把更新後的第一映射位圖發送給安全存儲設備,並在安全存儲設備上保存為第二映射位圖。
[0452]所述安全存儲設備可以為遠程存儲設備或本地存儲設備,所述遠程存儲設備可以為一個計算設備服務,也可以被多個計算設備共享。
[0453]所述硬體指令可以為硬體埠 I/O指令。
[0454]與上述的數據安全讀取方法相對應,根據本發明另一個實施例,提供了一種數據安全讀取裝置。
[0455]參考圖24,數據安全讀取裝置8100包括:
[0456]接收單元8110,指令分析單元8120,指令修改單元8130以及發送單元8140。其中,接收單元8110與指令分析單元8120耦接,指令分析單元8120分別與指令修改單元8130以及發送單元8140耦接,指令修改單元8130還與發送單元8140耦接。發送單元8140與硬體層8200耦接。
[0457]所述接收單元8110適於接收硬體指令,本實施例中,所述硬體指令來自硬體映射層。
[0458]所述指令分析單元8120適於分析所述硬體指令並判斷所述硬體指令是否為讀取指令,如果所述硬體指令是讀取指令,獲取讀取指令的源地址並判斷所述源地址是否為安全存儲設備上的地址。
[0459]如果所述硬體指令不是讀取指令,或者所述源地址是安全存儲設備上的地址,指令分析單元8120將所述硬體指令發送到發送單元8140。[0460] 如果所述源地址不是安全存儲設備上的地址,指令修改單元8130查找映射位圖,並根據映射位圖的數據修改所述讀取指令中的讀取地址。
[0461 ] 與上述實施例中的映射位圖相同,本實施例中所述映射位圖也用於表示本地存儲地址的數據是否轉儲到所述安全存儲設備。例如,指令修改單元8130查找源地址包含的扇區在第一映射位圖中對應的位。如果「位」數據顯示為1,表示已經發生轉儲,如果「位」數據顯示為O或NULL (空),表示沒有發生轉儲。如果已經發生轉儲,指令修改單元8130將所述源地址(讀取地址)改為對應的轉儲地址,並將修改後的硬體指令發送給發送單元8140。
[0462]進一步的,所述數據安全讀取裝置還可以包括同步單元8150。所述同步單元8150與指令修改單元8130耦接。所述同步單元8150適於建立計算終端系統與所述安全存儲設備的通訊,並將映射位圖在所述計算終端系統和所述安全存儲設備之間進行同步。具體的,同步單元8150在計算終端系統啟動時,建立計算終端系統與所述安全存儲設備的通訊,並將所述安全存儲設備上的第二映射位圖同步到所述計算終端系統,保存為第一映射位圖,提供指令修改單元8130使用。
[0463]所述安全存儲設備可以為遠程存儲設備,所述遠程存儲設備可以被多個計算終端系統共享。
[0464]在本發明的其他實施例中,所述的安全存儲設備也可以為本地存儲設備。
[0465]根據本發明另一個實施例,上述數據安全讀取裝置和數據安全存儲裝置可以合併為一個裝置,其中指令分析單元和指令修改單元既能處理存儲指令又能處理讀取指令,下面舉例介紹。
[0466]根據本發明另一個實施例,提供一種數據安全存儲和讀取裝置。如圖25,數據安全存儲和讀取裝置9100包括:
[0467]指令運行環境緩存和恢復單元9101,適於緩存和恢復指令運行環境;
[0468]指令獲取單元9102,適於獲取下一條即將運行的指令地址,該地址為第一地址;還適於根據第一地址獲取待調度/執行的機器指令片段;其中,待調度機器指令片段的最後一條指令為第一跳轉指令;獲取待調度機器指令片段的具體方式在前面的實施例中已經詳細描述,這裡不再贅述;
[0469]指令檢索單元9104,適於利用所述第一地址查找地址對應表;所述地址對應表用於表示第一地址指向的待調度指令片段是否具有已保存的重組指令片段,地址對應表的數據為地址對;
[0470]如果找到相應的記錄,指令檢索單元9104適於調用指令運行環境緩存和恢復單元9101恢復所緩存的指令運行環境,並跳轉到找到的對應地址繼續執行(本次重組完成);
[0471]如果沒有找到相應的記錄,調用指令重組單元9103進行重組操作。
[0472]其中,指令重組單元9103包括:
[0473]指令解析單元9111,是上述指令分析單元7120和指令分析單元8120的組合,適於分析所述硬體指令並判斷所述待調度/執行的機器指令片段中的每一條硬體指令是否為存儲或讀取指令;
[0474]指令修改單元9112,如果指令解析單元9111發現存儲或讀取指令:
[0475]對於存儲指令,修改所述存儲指令中的目標地址為對應的在安全存儲設備上的存儲地址;
[0476]對於讀取指令,查找映射位圖,並根據映射位圖的數據修改所述讀取指令中的讀取地址;
[0477]更新單元9113,適於在指令修改單元9112修改所述存儲指令之後,更新映射位圖中所述目標地址對應的位,以體現已經轉儲;
[0478]同步單元9114,適於建立計算終端系統與所述安全存儲設備的通訊,並將映射位圖在所述計算終端系統和所述安全存儲設備之間進行同步。
[0479]在指令解析單元9111、指令修改單元9112、更新單元9113和同步單元9114操作完成後,指令重組單元9103適於替換第一跳轉指令為壓棧指令,在壓棧指令中記錄第一跳轉指令的地址和操作數;還適於在壓棧指令之後加入第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向裝置9100的入口地址;還適於將重組指令片段的第二地址與第一地址在地址對應表中建立一條記錄。
[0480]基於上一段的描述,指令重組單元9103在其他實施例中,也可以與指令解析單元9111、指令修改單元9112、更新單元9113和同步單元9114作為同一層次的並列單元(如圖26所示)ο
[0481]指令重組單元9103獲得重組指令片段後,還適於調用指令運行環境緩存和恢復單元9101恢復所緩存的指令運行環境,並跳轉到重組指令片段的地址繼續執行(重組操作完成)。
[0482]本領域技術人員可以理解,該實施例只是為了說明而舉例,並不限制數據安全讀取裝置、數據安全存儲裝置和指令重組裝置合併方式,上述介紹的各種數據安全讀取裝置、數據安全存儲裝置和指令重組裝置可以以各種所需的方式合併。
[0483]另外,上述安全存儲方法和裝置還可以與雲技術結合,確保雲內數據的安全,從而加快雲計算(cloud computing)的應用和普及。具體實施例在下面將給予介紹。
[0484]本領域技術人員可以理解,在安全層實現的上述方法也可以在作業系統內核層至硬體層中的各個層內完成。具體功能的實現位置並不脫離本發明的精神和範圍。
[0485]上述實施例中詳細的介紹了本發明提供的安全存儲方法和裝置,與現有技術相t匕,具有如下優點:
[0486]1、數據安全存儲方法實現了指令級數據轉儲即數據全轉儲,以此為基礎,實現了計算終端系統全運行周期的數據安全存儲方法,一方面,使木馬或惡意工具即使取得了涉密信息也無法保存所取得的信息,使數據始終存在於可控的安全範圍內;另一方面,本地不再保存在涉密狀態下的任何數據,因此防止了涉密人員的主動洩密和被動洩密;
[0487]2、接收來自硬體映射層的硬體指令可以100%的篩查所有指令,進一步提高數據安全性。
[0488]上述實施例中還詳細的介紹了本發明提供的安全讀取方法和裝置,與現有技術相t匕,具有如下優點:
[0489]1、數據安全讀取方法配合數據安全存儲方法使數據始終存在於可控的安全範圍內,並且保證在安全存儲數據(轉儲)之後,可以將轉儲數據讀出;由於本地將不再保存在涉密狀態下的任何數據,因此防止了涉密人員的主動洩密和被動洩密;
[0490]2、安全存儲設備為遠程存儲設備時,可以為多個終端共享,提高安全存儲設備的空間使用效率。
[0491] 應該注意到並理解,在不脫離後附的權利要求所要求的本發明的精神和範圍的情況下,能夠對上述詳細描述的本發明做出各種修改和改進。因此,要求保護的技術方案的範圍不受所給出的任何特定示範教導的限制。
【權利要求】
1.一種數據安全讀取方法,包括: 步驟1、緩存指令運行環境; 步驟2、從第一存儲位置讀取目標地址,根據目標地址獲取待調度的機器指令片段;待調度的機器指令片段的最後一條指令為第一跳轉指令; 步驟3、在第一存儲位置保存第一跳轉指令的目標地址; 步驟4、分析待調度的機器指令片段中的每一條指令,如果其為讀取指令,獲取讀取指令中的源地址,並且查找映射位圖,並根據映射位圖的數據修改讀取指令中的讀取地址;所述映射位圖用於表示本地存儲地址的數據是否轉儲到所述安全存儲設備; 步驟5、將第一跳轉指令替換為第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向指令重組平臺的入口地址;和 步驟6、恢復所述指令運行環境,並跳轉到第二地址繼續執行; 其中,步驟3和步驟4的執行順序可以互換。
2.如權利要求1所述的數據安全讀取方法,在步驟4之前,還包括: 建立計算終端系統與所述安全存儲設備的通訊; 將所述安全存儲設備上的第二映射位圖同步到所述計算終端系統,保存為映射位圖。
3.如權利要求1所述的數據安全讀取方法,其中,所述的硬體指令為硬體埠I/O指令。
4.如權利要求1所述的數據安全讀取方法,其中,所述安全存儲設備為遠程存儲設備,所述遠程存儲設備被多個計算終端系統共享。
5.如權利要求1所述的數據安全讀取方法,其中,所述硬體指令來自硬體映射層。
6.如權利要求1所述的數據安全讀取方法,步驟2中,根據目標地址獲取待調度指令片段包括: 從目標地址開始,獲取待調度的一段機器指令,將該段機器指令進行反彙編; 檢查反彙編結果中是否包含跳轉指令,如果不包含則繼續獲取後面一段待調度的機器指令,直到匹配到跳轉指令為止,該跳轉指令為第一跳轉指令;其中,第一跳轉指令以及之前的所有指令組成待調度指令片段。
7.如權利要求6所述的數據安全讀取方法,在步驟5和步驟6之間,還包括: 將生成的重組後的彙編代碼通過彙編器生成對應的機器碼。
8.如權利要求1所述的數據安全讀取方法,在步驟I和步驟2之間,還包括: 從第一存儲位置讀取目標地址,利用所述目標地址查找地址對應表;所述地址對應表用於表示待調度的機器指令片段是否具有已保存的重組指令片段; 如果找到相應的記錄,恢復所述指令運行環境,並跳轉到紀錄中的保存地址繼續執行。
9.如權利要求8所述的數據安全讀取方法,如果在地址對應表中沒有找到相應的紀錄,在步驟5之後,還包括: 利用重組指令片段的地址與所述目標地址在地址對應表中建立一條記錄。
10.一種計算機可讀介質,所述可讀介質中存儲有計算機可執行的程序代碼,所述程序代碼用於執行權利要求1-9任一所述方法的步驟。
11.一種數據安全讀取裝置,包括: 指令運行環境緩存和恢復單元,適於緩存和恢復指令運行環境;第一存儲位置,適於保存目標地址; 指令獲取單元,與指令運行環境緩存和恢復單元耦接,適於從第一存儲位置讀取目標地址,並根據目標地址獲取待調度的機器指令片段;其中,待調度機器指令片段的最後一條指令為第一跳轉指令; 指令分析單元,適於分析所述待調度機器指令片段中每一條硬體指令並判斷所述硬體指令是否為讀取指令; 指令修改單元,適於查找映射位圖,並根據映射位圖的數據修改讀取指令中的讀取地址;所述映射位圖用於表示本地存儲地址的數據是否轉儲到所述安全存儲設備;和 指令重組單元,與指令運行環境緩存和恢復單元耦接,適於在第一存儲位置保存第一跳轉指令的目標地址;還適於將第一跳轉指令替換為第二跳轉指令,生成具有第二地址的重組指令片段;所述第二跳轉指令指向裝置的入口地址。
12.如權利要求11所述的數據安全讀取裝置,還包括: 同步單元,適於建立計算終端系統與所述安全存儲設備的通訊,並將映射位圖在所述計算終端系統和所述安全存儲設備之間進行同步。
13.如權利要求11所述的數據安全讀取裝置,其中,所述安全存儲設備為遠程存儲設備,所述遠程存儲設備被多個計算終端系統共享。
14.如權利要求11所述的數據安全讀取裝置,還包括: 指令檢索單元,適於利用所述目標地址查找地址對應表;所述地址對應表用於表示待調度機器指令片段是否具有已保 存的重組指令片段; 如果找到相應的記錄,指令檢索單元還適於調用指令運行環境緩存和恢復單元,恢復所述指令運行環境,並跳轉到紀錄中的保存地址繼續執行; 如果沒有找到相應的記錄,指令檢索單元還適於利用重組指令片段的地址與所述目標地址在地址對應表中建立一條記錄。
15.如權利要求11所述的數據安全讀取裝置,還包括: 反彙編單元,適於在指令分析單元分析所述待調度的機器指令片段之前,反彙編所述待調度的機器指令片段,生成待調度的彙編指令片段; 彙編單元,適於彙編重組後的彙編指令片段,得到機器碼表示的重組指令片段。
【文檔編號】G06F21/60GK103679040SQ201210325943
【公開日】2014年3月26日 申請日期:2012年9月6日 優先權日:2012年9月6日
【發明者】汪家祥, 楊瀟 申請人:北京中天安泰信息科技有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀