基于軟tcm和可信軟件棧的安卓系統(tǒng)及其可信認(rèn)證系統(tǒng)與方法
【專利說明】基于軟TCM和可信軟件巧的安卓系統(tǒng)及其可信認(rèn)證系統(tǒng)與 方法 所屬技術(shù)領(lǐng)域
[0001] 本發(fā)明屬于安卓系統(tǒng)及安卓軟件安全技術(shù)領(lǐng)域,特別設(shè)及一種基于軟TCM和可信 軟件找的安卓系統(tǒng)及其可信認(rèn)證系統(tǒng)與方法。
【背景技術(shù)】
[0002] 信息時代的技術(shù)發(fā)展是瞬息萬變的,移動互聯(lián)網(wǎng)技術(shù)無疑是當(dāng)今世界的大熱口, 而安卓操作系統(tǒng)的市場占有率很高,其安全問題也越來越受到人們的重視。目前安卓系統(tǒng) 面臨的安全問題主要有兩個方面:
[0003] (1)惡意攻擊:攻擊者利用安卓系統(tǒng)自身的漏桐,對安卓系統(tǒng)發(fā)起惡意的攻擊,從 而竊取用戶的隱私信息用于非法的用途,甚至直接獲得安卓系統(tǒng)的控制權(quán),可W輕松獲取 和修改用戶的數(shù)據(jù)信息,后果不堪設(shè)想。
[0004] (2)惡意軟件:惡意軟件開發(fā)者通常對應(yīng)用商店熱口的應(yīng)用進(jìn)行篡改,加入惡意的 代碼并重新打包上傳至應(yīng)用商店。還有的惡意開發(fā)者自己編寫一個看似正常的軟件,卻悄 悄加入了惡意代碼。運(yùn)兩種惡意的做法都是在用戶不知情的情況下執(zhí)行惡意的代碼,對用 戶的利益構(gòu)成了威脅。
[0005] 針對目前安卓系統(tǒng)所面臨的安全問題,研究人員將更多的注意力集中在安卓系統(tǒng) 的第=方軟件的安全檢測上,認(rèn)為只要系統(tǒng)上安裝的第=方軟件是安全的,安卓系統(tǒng)也就 不會受到任何的安全威脅。順著運(yùn)個思路,目前比較廣泛的做法是基于第=方軟件行為的 分析,即結(jié)合已知的惡意行為模式,判斷第=方軟件是否具有惡意傾向。
[0006] 但是,運(yùn)種針對第=方軟件檢測的方法非常依賴檢測前就建設(shè)好的惡意代碼庫, 也就是有著惡意行為的代碼庫,建設(shè)運(yùn)種代碼庫的過程十分困難,必須有足夠的人力和財(cái) 力的支持,并經(jīng)過長時間的積累才可W完成。不過就算能夠完成惡意行為代碼庫的建設(shè),由 于安卓系統(tǒng)下的惡意軟件編寫口檻低,參與其中的人有很多,惡意軟件更新速度很快,所W 對于大量的新出現(xiàn)的惡意軟件是不可能防范的。與此同時,基于第=方軟件行為的分析忽 略了安卓系統(tǒng)終端的完整性,即沒有考慮到安卓系統(tǒng)底層受到篡改的情況,位于安卓系統(tǒng) 應(yīng)用層的檢測對于安卓系統(tǒng)的底層安全防范鞭長莫及,如果安卓系統(tǒng)本身在用戶不知道的 情況下遭到某種方式的攻擊和篡改,對第=方軟件的檢測也便失去了意義。
[0007] 可見,相比于更新速度極快的惡意軟件,目前安卓系統(tǒng)安全防范的方案相對滯后、 被動,并且忽視了安卓系統(tǒng)終端的完整性檢驗(yàn),對于安卓系統(tǒng)的底層安全顯得無能為力。
【發(fā)明內(nèi)容】
[000引針對現(xiàn)有技術(shù)存在的不足,本發(fā)明提出一種基于軟TCM和可信軟件找的安卓系統(tǒng) 及其可信認(rèn)證系統(tǒng)與方法。
[0009] 本發(fā)明所采用的技術(shù)方案是運(yùn)樣實(shí)現(xiàn)的:
[0010] -種基于軟TCM和可信軟件找的安卓系統(tǒng),包括建立在現(xiàn)有安卓系統(tǒng)的安卓內(nèi)核 上的軟TCM、可信軟件找和軟TCM驅(qū)動模塊;所述軟TCM與所述可信軟件找嵌入現(xiàn)有安卓系統(tǒng) 的系統(tǒng)庫,為安卓系統(tǒng)的應(yīng)用程序提供調(diào)用環(huán)境;其中所述可信軟件找在所述軟TCM之上, 作為外部訪問與管理軟TCM的接口;所述軟TCM驅(qū)動模塊,位于現(xiàn)有安卓系統(tǒng)的Linux內(nèi)核 層,根據(jù)Linux系統(tǒng)特性編寫,用于為所述軟TCM提供安卓系統(tǒng)的底層調(diào)用接口;
[001 U 所述軟TCM,包括:
[0012] 設(shè)備驅(qū)動模塊:為可信軟件找與軟TCM提供通信接口;從可信軟件找接收對軟TCM 的控制與查詢命令、需要軟TCM對其進(jìn)行存儲或加解密的數(shù)據(jù);
[0013] 命令解釋和收發(fā)模塊:對設(shè)備驅(qū)動模塊傳入的命令進(jìn)行解析,轉(zhuǎn)換為軟TCM內(nèi)部的 命令后,發(fā)送至命令執(zhí)行模塊;對設(shè)備驅(qū)動模塊傳入的需要軟TCM對其進(jìn)行存儲或加解密的 數(shù)據(jù)進(jìn)行解析后,發(fā)送給加解密模塊;
[0014] 加解密模塊:利用中國國家密碼管理局發(fā)布的SM2楠圓曲線公鑰密碼算法、SM3密 碼雜湊算法和SM4分組密碼算法對解析后的需要軟TCM對其進(jìn)行加解密的數(shù)據(jù)進(jìn)行加解密 處理;
[0015] 命令執(zhí)行模塊:執(zhí)行軟TCM的內(nèi)部命令;
[0016] 內(nèi)部密鑰和數(shù)據(jù)存儲模塊:含有模擬PCR寄存器;用于維護(hù)軟TCM內(nèi)部密鑰、數(shù)據(jù), 實(shí)現(xiàn)軟TCM內(nèi)部狀態(tài)和部分?jǐn)?shù)據(jù)的永久存儲;
[0017] 一種基于軟TCM和可信軟件找的安卓系統(tǒng)的可信認(rèn)證系統(tǒng),包括:該安卓系統(tǒng)啟動 的可信認(rèn)證系統(tǒng)和安卓軟件安裝的可信認(rèn)證系統(tǒng);
[0018] 所述該安卓系統(tǒng)啟動的可信認(rèn)證系統(tǒng),包括:
[0019] 度量模塊:在安卓系統(tǒng)的啟動執(zhí)行模塊Linux KerneUInit P;rocess、Se;rvices、 Zygote/Vm、System ServeiNServer Manager中均加入度量模塊;從啟動執(zhí)行模塊Linux Kernel的度量模塊開始,依次由當(dāng)前啟動執(zhí)行模塊的度量模塊對下一個啟動執(zhí)行模塊進(jìn)行 度量,每個度量模塊使用軟TCM中的SM3密碼雜湊算法計(jì)算下一個啟動執(zhí)行模塊的哈希值即 度量值并發(fā)送給該度量模塊所在的啟動執(zhí)行模塊的擴(kuò)展PCR操作模塊;
[0020] 擴(kuò)展PCR操作模塊:在安卓系統(tǒng)的啟動執(zhí)行模塊Linux KerneKInit Process、 Services、Zygote/Vm、System ServeiNServer Manager中均加入擴(kuò)展PCR操作模塊;從啟動 執(zhí)行模塊Linux Kernel的擴(kuò)展PCR操作模塊開始,依次由當(dāng)前啟動執(zhí)行模塊的擴(kuò)展PCR操作 模塊將模擬PCR寄存器中的當(dāng)前值與對應(yīng)的度量模塊發(fā)送的度量值進(jìn)行合并;使用軟TCM中 的SM3密碼雜湊算法計(jì)算合并結(jié)果的哈希值,并用該哈希值更新模擬PCR寄存器中的當(dāng)前 值,并將模擬PCR寄存器中的當(dāng)前值寫入日志;
[0021] 完整性認(rèn)證模塊:在安卓系統(tǒng)的啟動執(zhí)行模塊化me Launcher中加入完整性認(rèn)證 模塊;所述完整性認(rèn)證模塊用于將模擬PCR寄存器中的當(dāng)前值與預(yù)設(shè)值進(jìn)行比較,若模擬 PCR寄存器中的當(dāng)前值不等于預(yù)設(shè)值,則將日志中記錄的模擬PCR寄存器中的當(dāng)前值逐一與 預(yù)先獲取的未經(jīng)篡改的模擬PCR寄存器中的當(dāng)前值記錄進(jìn)行對比,定位被篡改的啟動執(zhí)行 模塊后,輸出安卓系統(tǒng)啟動認(rèn)證失敗及被篡改的啟動執(zhí)行模塊的提示信息;
[0022] 所述安卓軟件安裝的可信認(rèn)證系統(tǒng),包括:
[0023] CA:接收軟件開發(fā)者的公鑰及身份信息;核實(shí)軟件開發(fā)者身份;向可信的軟件開發(fā) 者頒發(fā)代碼簽名證書,并提供安卓軟件簽名與打包工具;
[0024] 安卓軟件簽名模塊:從軟件開發(fā)者處獲取可信的未簽名安卓軟件和代碼簽名證 書;使用軟TCM中的SM3密碼雜湊算法計(jì)算該可信的未簽名安卓軟件的哈希值;使用軟件開 發(fā)者的私鑰和軟TCM中的SM2楠圓曲線公鑰密碼算法對該可信的未簽名安卓軟件的哈希值 進(jìn)行加密,得到數(shù)字簽名;將數(shù)字簽名和該可信的未簽名安卓軟件W及代碼簽名證書進(jìn)行 打包,形成簽名后的安卓軟件;
[0025] 代碼簽名證書驗(yàn)證模塊:用于驗(yàn)證代碼簽名證書的有效性,若無效,則停止安卓軟 件安裝過程,若有效,則將該代碼簽名證書的有效驗(yàn)證結(jié)果發(fā)送給安卓軟件完整性認(rèn)證模 塊;數(shù)字簽名驗(yàn)證模塊:使用軟件開發(fā)者的公鑰對數(shù)字簽名進(jìn)行解密,得到可信的未簽名安 卓軟件的哈希值化sh_l;使用軟TCM中的SM3密碼雜湊算法,對未知來源的不可信的未簽名 安卓軟件計(jì)算哈希值化sh_2 ;判斷化sh_l與化sh_2是否相等,否,則停止安卓軟件安裝過 程,是,則將該數(shù)字簽名有效驗(yàn)證結(jié)果發(fā)送給安卓軟件完整性認(rèn)證模塊;
[0026] 安卓軟件完整性認(rèn)證模塊:如果代碼簽名證書的有效驗(yàn)證結(jié)果和數(shù)字簽名有效驗(yàn) 證結(jié)果均收到,則繼續(xù)進(jìn)行安卓軟件安裝過程,否則停止安卓軟件安裝過程;
[0027] 所述基于軟TCM和可信軟件找的安卓系統(tǒng)的可信認(rèn)證方法,包括:該安卓系統(tǒng)的啟 動可信認(rèn)證過程和安卓軟件安裝的可信認(rèn)證過程;
[00%]所述該安卓系統(tǒng)的啟動可信認(rèn)證過程,包括如下步驟:
[0029] 步驟1:開機(jī)啟動安卓系統(tǒng);
[0030] 步驟2:首先將安卓系統(tǒng)的啟動執(zhí)行模塊Linux Kernel作為控制節(jié)點(diǎn),使用軟TCM 中的SM3密碼雜湊算法計(jì)算下一個啟動執(zhí)行模塊Init Process的哈希值即度量值;
[0031] 步驟3:將模擬PCR寄存器中的當(dāng)前值與Init Process的度量值進(jìn)行合并;
[0032] 步驟4:使用軟TCM中的SM3密碼雜湊算法計(jì)算合并結(jié)果的哈希值,并用該哈希值更 新模擬PCR寄存器中的當(dāng)前值,并將模擬PCR寄存器中的當(dāng)前值寫入日志;
[0033] 步驟5 :依次將安卓系統(tǒng)的啟動執(zhí)行模塊Init Process ,Services、Zygote/Vm、 System Server和Server Manager分別作為控制節(jié)點(diǎn),按照步驟2至4的方法,分別計(jì)算出 Services的度量值及對應(yīng)的模擬PCR寄存器中的當(dāng)前值、ZygoteAm的度量值及對應(yīng)的模擬 PCR寄存器中的當(dāng)前值、System Server度量值及對應(yīng)的模擬PCR寄存器中的當(dāng)前值、Server Manager度量值及對應(yīng)的模擬PCR寄存器中的當(dāng)前值、Home Launcher度量值及對應(yīng)的模擬 PCR寄存器中的當(dāng)前值;
[0034] 步驟6:將模擬PCR寄存器中的當(dāng)前值與預(yù)設(shè)值進(jìn)行比較,若模擬PCR寄存器中的當(dāng) 前值不等于預(yù)設(shè)值,則將日志中記錄的模擬PCR寄存器中的當(dāng)前值逐一與預(yù)先獲取的未經(jīng) 篡改的模擬PCR寄存器中的當(dāng)前值記錄進(jìn)行對比,定位被