系統(tǒng)中的計算機程序代碼128的完整性。對于同步驗證,內(nèi)存完整性檢查裝置102可以在加載器126中實現(xiàn)安全特征130,以評估計算機程序代碼128的完整性。對于異步驗證,內(nèi)存完整性檢查裝置102可以使用媒介控制器120和/或媒介控制器122來評估計算機程序代碼128的完整性。
[0015]如本文描述的,裝置102的特定元件可以通過使用存儲在非暫時性計算機可讀介質(zhì)上的機器可讀指令來實現(xiàn)。此外或可選地,裝置102的特定元件可以通過使用硬件或機器可讀指令和硬件的結(jié)合來實現(xiàn)。
[0016]參照圖1,對于內(nèi)存完整性檢查裝置102的環(huán)境100,與計算機程序代碼128對應的單個物理內(nèi)存頁面實質(zhì)上可以被分割成分離的物理內(nèi)存頁面。例如,當在多個內(nèi)存通道之間交錯內(nèi)存以改善性能時,單個物理內(nèi)存頁面可以實質(zhì)上被分割成分離的物理內(nèi)存頁面。對于圖1的示例,如果內(nèi)存108以64B的粒度(例如,緩存線)交錯,那么通道(O)媒介控制器
(0)(S卩,媒介控制器120)可以擁有內(nèi)存范圍[0:63]、[128:191]等。此外,通道(I)媒介控制器(I)(即,媒介控制器122)可以擁有內(nèi)存范圍[64:127]、[192:255]等。
[0017]—般地,內(nèi)存完整性檢查裝置102可以使用基于內(nèi)存頁面的哈希運算來評估計算機程序代碼128的完整性。由于圖1的示例中圖示的媒介控制器120和媒介控制器122中的每個可能看不到連續(xù)的物理范圍,內(nèi)存完整性檢查裝置102可以獨立地對內(nèi)存范圍進行哈希,并且合并這些范圍。由于連續(xù)地址塊可能不存儲在內(nèi)存108上的連續(xù)區(qū)域中,所以內(nèi)存完整性檢查裝置102可以使用關聯(lián)哈希函數(shù)(H),該函數(shù)包括以下特性:
[0018]H(H(cl,c2),H(c3))=H(cl,H(c2,c3))等式(I)
[0019]H(cl,H(c2,c3))=H(cl,c2,c3)等式(2)
[0020]對于等式(I)和等式(2),cl、c2和c3可以表示例如與圖1的示例中的內(nèi)存頁面0-3和內(nèi)存頁面4-7關聯(lián)的內(nèi)存108的塊(S卩,范圍)。
[0021]如本文公開的,內(nèi)存完整性檢查裝置102可以基于同步驗證和/或基于異步驗證,評估包括環(huán)境(如具有活躍內(nèi)存能力的環(huán)境100)的系統(tǒng)中的計算機程序代碼128的完整性。同步驗證一般地可以包括前攝性的內(nèi)存完整性檢查,并且異步驗證一般可以包括反應性的內(nèi)存完整性檢查。對于同步驗證,內(nèi)存完整性檢查裝置102可以信任加載器126,而不信任OS124。對于同步驗證,內(nèi)存完整性檢查裝置102可以包括包含安全特征130的加載器126,以評估計算機程序代碼128的完整性。
[0022]根據(jù)安全特征130的安全特征,加載器126可以評估所加載的計算機程序代碼128的每個要素。例如,加載器126可以檢查與計算機程序代碼128關聯(lián)的簽名。例如,加載器126可以計算哈希,并且將該哈希與授權的簽名列表132(例如,白名單)作比較。
[0023]根據(jù)安全特征130的另一安全特征,加載器126可以計算并更新計算機程序代碼128被加載到其中的物理塊(例如,內(nèi)存頁面)的哈希。物理塊的哈希的計算和更新可以被實施作為加載過程的一部分。例如,物理塊的哈希的計算和更新可以與加載過程同步地實施。例如,物理塊的哈希的計算和更新可以在地址被固定(即,被重新安置)時實施。
[0024]根據(jù)安全特征130的另一安全特征,一旦確定計算機程序代碼128是安全的,加載器126就可以向覆蓋被更新的物理范圍的所涉及的內(nèi)存子系統(tǒng)116和/或內(nèi)存子系統(tǒng)118的所有內(nèi)存控制器發(fā)送多個對(即,{哈希,范圍})。加載器126還可以指示內(nèi)存控制器112和/或內(nèi)存控制器114持續(xù)地檢查內(nèi)存頁面哈希仍未改變。因此,可執(zhí)行的程序的加載器126可以指示活躍內(nèi)存元件(例如,內(nèi)存控制器112和/或內(nèi)存控制器114,并且因此媒介控制器120和/或媒介控制器122)實施針對安全哈希(例如,安全程序的白名單)的哈希檢查。
[0025]根據(jù)安全特征130的另一安全特征,當OS124(例如,為了循環(huán)目的)替換“安全”的內(nèi)存頁面之一時,OS 124可以向媒介控制器120和/或媒介控制器122發(fā)送命令,以不再檢查特定頁面范圍并且去除之前的哈希。如果加載器126再次看到相同的程序(S卩,計算機程序代碼128),那么加載器126可以將該頁面范圍加載到不同的物理內(nèi)存頁面中,因此產(chǎn)生分離的安全哈希。
[0026]對于包括加載器126 (包括安全特征130)的同步驗證,同步驗證可以識別從未授權的OS代碼或其它未知源產(chǎn)生的對計算機程序代碼128的改變。對于安裝在未被檢查和未被哈希的內(nèi)存頁面中的任何信息,由于這樣的信息的識別可能需要保護所有其它內(nèi)存頁面,所以同步驗證可能不識別這樣的信息,因此信任OS 124。對于同步驗證,OS 124可以拒絕對未由加載器126加載的并因此不信任的計算機程序代碼設置執(zhí)行權。因此,加載器126可以對加載的內(nèi)存頁面署名,以證明這些內(nèi)存頁面已由合法許可機構(gòu)(如加載器126)加載。OS124或分離的可信單元可以掃描這些內(nèi)存頁面,以識別已經(jīng)違反該不變量的內(nèi)存頁面(SP,未由加載器126署名)。
[0027]對于頻繁地調(diào)用并短暫運行的程序(例如,“Is”),由于這樣的程序可能駐留得不足以進行完整性掃描那么久,所以這樣的程序也不可能駐留得足以被覆寫那么久。加載器126可以在加載這樣的程序時驗證這樣的程序完整性。由加載器126進行的初始完整性檢查可以防止加載這樣的程序的未授權的(例如,有木馬的)版本去執(zhí)行。
[0028]對于異步驗證,內(nèi)存完整性檢查裝置102可能不信任加載器126或OS124。一般地,內(nèi)存完整性檢查裝置102可以使用活躍內(nèi)存元件(例如,內(nèi)存控制器112和/或內(nèi)存控制器114,并且因此使用媒介控制器120和/或媒介控制器122),其中活躍內(nèi)存108可以包括用于自主地檢查內(nèi)存范圍以避免安全問題的程序。內(nèi)存完整性檢查裝置102可以異步地并持續(xù)地評估在內(nèi)存108內(nèi)設置的計算機程序代碼128的每段代碼(或數(shù)據(jù))。對于異步驗證,媒介控制器120和/或媒介控制器122可以用于檢查未授權的(例如,壞的)簽名,例如每當可執(zhí)行的內(nèi)存頁面被寫至內(nèi)存108時檢查未授權的簽名。檢查未授權的簽名可以包括:解釋(account for)多個交錯的內(nèi)存芯片和不連續(xù)的物理內(nèi)存頁面。例如,連續(xù)的物理內(nèi)存可以在多個內(nèi)存庫之間交錯,并且可以使用關聯(lián)的哈希(如上面結(jié)合等式(I)和等式(2)討論的),使得(單獨的內(nèi)存子系統(tǒng)116、118中每個內(nèi)存子系統(tǒng)中)每個單獨的媒介控制器可以實施其控制的不連續(xù)內(nèi)存范圍的獨立哈希。異步驗證可以用于識別任何未授權的代碼。此外,異步驗證可以作為與加載器126和/或OS 124相比的分離的操作來實施和管理。
[0029]對于異步驗證,內(nèi)存完整性檢查裝置102可以使用媒介控制器120和/或媒介控制器122來實施哈希檢查,并且進一步識別與該哈希檢查關聯(lián)的所有未授權的簽名。例如,媒介控制器120和/或媒介控制器122可以確保被寫至內(nèi)存108的任何信息與加載器126已確定安全的計算機程序代碼的哈希相匹配。與計算機程序代碼128關聯(lián)的程序,可以在沒有來自與異步驗證有關的媒介控制器120和/或媒介控制器122的操作的任何干擾的情況下運行??梢耘c內(nèi)存控制器110共享未授權的簽名列表134,或可以用內(nèi)存控制器110復制未授權的簽名列表134。此外,可以以預定的間隔更新未授權的簽名列表134?;钴S的媒介控制器120和/或媒介控制器122可以自動地(例如,沒有人工干預)并且持續(xù)地針對(例如病毒或惡意軟件的)未授權的簽名列表134中一組已知的未授權的關聯(lián)哈希檢查每個被寫的內(nèi)存范圍。
[0030]—般地,內(nèi)存完整性檢查裝置102可以使用媒介控制器120和/或媒介控制器122來識別