一種應用程序完整性驗證方法
【技術領域】
[0001]本發明涉及計算機安全技術。
【背景技術】
[0002]隨著物聯網、移動互聯網和云計算等新型技術的快速發展,信息技術已深刻影響到人們的生活方式,無處不在的信息已經成為國家、企業和個人的重要資產。隨著網絡安全威脅種類日益多樣化,這些重要的信息資產將暴露在越來越多的威脅中。比如惡意軟件的非法篡改:惡意軟件常常通過篡改正常程序的代碼和數據,并植入惡意代碼來完成自身想要到達的目的。一旦被篡改程序被執行,從而威脅到系統的安全,可能給用戶帶來巨大的損失和災難性的打擊。因此,只要能在惡意軟件或代碼執行前發現并阻止其運行,就可以保證應用程序的安全。
[0003]現有的軟件完整性驗證與保護技術通常需要額外的硬件支持。一方面增加了硬件成本開銷;另一方面,由于引入了硬件處理,增加了與硬件的交互,帶來了額外的性能開銷。
【發明內容】
[0004]本發明所要解決的技術問題是,提供一種不需要硬件開銷的應用程序完整性驗證方法。
[0005]本發明為解決上述技術問題所采用的技術方案是,一種應用程序完整性驗證方法,包括以下步驟:
[0006]I)設置步驟:
[0007]1-1)應用層接收對應用程序完整性驗證進行設置的請求,觸發應用層中的標識設置模塊;
[0008]1-2)標識設置模塊判斷請求類型,當請求類型為添加完整性驗證時,則計算該應用程序的完整性校驗值,在該應用程序的擴展屬性中添加完整性擴展屬性,并將完整性校驗值作為該完整性擴展屬性的值;當請求類型為取消完整性驗證時,則刪除該應用程序的完整性擴展屬性值;
[0009]2)驗證步驟:
[0010]2-1)內核層捕獲打開文件系統調用后,觸發內核層中的驗證代理模塊;
[0011]2-2)驗證代理模塊獲取當前應用程序的文件描述符,通過該文件描述符查看應用程序,判斷應用程序是否有完整性擴展屬性值,如是,進入步驟2-3),如否,進入步驟2-5);
[0012]2-3)驗證代理模塊獲取應用程序為完整性驗證所添加的擴展屬性值,計算當前打開應用程序的完整性校驗值,再與獲取的擴展屬性值進行比較,當比較結果相同則進入步驟2-5),否則進入步驟2-4);
[0013]2-4)驗證代理模塊返回打開文件系統調用一個無用的文件描述符,同時提示應用程序被破壞;
[0014]2-5)驗證代理模塊返回打開文件系統調用正確的文件描述符。
[0015]本發明的有益效果是,本發明屬于加載期的驗證方法,與文件系統完整性驗證方法相比減少了驗證開銷;通過使用文件系統自帶的擴展屬性存完整性擴展屬性值,不需要輔助硬件的存儲支持,降低了成本、提高了性能、增加了靈活性。
【附圖說明】
[0016]圖1應用程序完整性驗證框架圖;
[0017]圖2應用程序完整性驗證流程圖;
[0018]圖3內核驗證代理執行過程圖;
[0019]圖4標識設置程序執行過程圖。
【具體實施方式】
[0020]接下來依次結合附圖1、附圖2、附圖3以及附圖4對本發明申請的技術方案的主要實現原理、【具體實施方式】及其對應能夠達到的有益效果進行詳細地闡述。
[0021]圖1為具有應用程序完整性驗證功能的操作系統100,在原有操作系統上修改兩個部分,分別是應用層101中添加標識設置程序103以及在內核102中添加驗證代理104。標識設置程序103為方便用戶對有權限的應用程序設置是否需要完整性驗證,驗證代理104用于對需要完整性驗證的應用程序進行驗證。
[0022]其中標識設置程序103所包含的構成元素有:
[0023]Hash計算模塊105,根據可信計算中完整性驗證的方法,優選使用Hash算法對應用程序進行完整性驗證。該模塊用于計算應用程序預期的完整性度量值。其中的Hash函數包括 MD4、MD5、SHAl、SHA2 等。
[0024]擴展屬性添加模塊107,該模塊用于標記需要完整性驗證的應用程序,通過添加擴展屬性的方法,擴展屬性的值為Hash計算模塊105的計算結果。
[0025]擴展屬性刪除模塊109,該模塊用于取消應用程序的完整性驗證標記,通過刪除為完整性驗證所添加的擴展屬性。
[0026]其中驗證代理104所包含的構成元素有:
[0027]Hash計算模塊106:該模塊是和Hash計算模塊105相同,只是該模塊位于內核層,完成對需要完整性驗證的應用程序進行Hash計算。
[0028]文件擴展屬性獲取模塊108:該模塊用于獲取應用程序的擴展屬性值,此擴展屬性值是為完整性驗證而添加的擴展屬性值。
[0029]比較模塊110:該模塊用于比較Hash計算模塊106和文件擴展屬性獲取模塊108所獲得的兩值。
[0030]打開文件系統調用111:有對文件的重要操作,如讀、寫、執行等,都需要先打開文件。應用層101通過打開文件系統調用111對文件進行各種操作,內核中驗證代理104通過在打開文件系統調用111中完成對需要完整性驗證的程序的驗證。
[0031]參考圖2為本發明實施案例所使用的應用程序完整性驗證流程圖。
[0032]其具體步驟是:
[0033]開始步驟200,啟動系統,為應用程序的執行提供環境。
[0034]步驟201:用戶根據當前對應用程序安全級別的要求,發出對應用程序完整性驗證請求。
[0035]步驟202:判斷用戶請求類型。用戶的請求可以是為應用程序添加完整性驗證,也可以是取消完整性驗證功能。
[0036]步驟203:當用戶請求201是刪除完整性驗證功能時,刪除為完整性驗證而添加的擴展屬性。
[0037]步驟204:當用戶請求是添加完整性驗證功能時,需要計算應用程序的Hash值。
[0038]步驟205:為完整性驗證添加擴展屬性,其擴展屬性的值是步驟204計算所得的Hash 值。
[0039]步驟206:內核層捕獲打開文件系統調用,獲取文件描述符。
[0040]步驟207:據步驟206獲取的文件描述符查找該應用程序,判斷應用程序是否有為完整性驗證而設置的擴展屬性。
[0041]步驟208:當步驟208中判斷結果是有完整性擴展屬性時,獲取該文件的完整性擴展屬性的值。
[0042]步驟209:Hash值計算。此處計算的Hash值是內核中驗證完整性時,對應圖1中的106模塊,而步驟204是執行在應用層,為內核驗證提供比較參考值,對應圖1中的105模塊。
[0043]步驟210:判斷步驟208和步驟209所得的兩值是否相等。如果兩值不相等,則可證明該應用程序的完整性遭到破壞;如果兩值相等,則可說明該應用程序是完整的,未遭篡改。
[0044]步驟211:當步驟210返回結果為不相等時,給步驟206的系統調用返回無用的文件描述符,使對應用程序后續的操作失效,同時提示用戶該應用程序的完整性遭到破壞。
[0045]步驟212:當步驟207中應用程序沒有完整性擴展屬性或是步驟210返回結果為相等,給打開文