安占磊
(江蘇東大集成電路系統(tǒng)工程技術(shù)有限公司 江蘇 南京 211500)
Android操作系統(tǒng)相較于其他的操作系統(tǒng),更加開放,隨著功能的日益完善,致使人們的日常生活變得更加豐富多彩。教育Android操作系統(tǒng),可以在設(shè)備上實現(xiàn)智能化操作,并將設(shè)備的相關(guān)數(shù)據(jù)上傳到服務(wù)器,滿足用戶訪問互聯(lián)網(wǎng)的需求。所以,Android操作系統(tǒng)在穩(wěn)定運(yùn)行前提下,如何保護(hù)數(shù)據(jù)信息安全和程序穩(wěn)定運(yùn)行,則需要創(chuàng)造一個安全的運(yùn)行環(huán)境,完善配套的安全機(jī)制,及時發(fā)現(xiàn)和排出安全隱患,最大程度上維護(hù)應(yīng)用程序運(yùn)行安全。因此,加強(qiáng)對其研究,可以為后續(xù)的程序開發(fā)提供一定參考,推動Android操作系統(tǒng)更加優(yōu)化完善。
完善Android操作系統(tǒng)安全機(jī)制,其目的在于保障移動設(shè)備正常使用,內(nèi)部的軟件和硬件資源不受損,具體涵蓋了內(nèi)存、CPU、文件系統(tǒng)、外部設(shè)備以及網(wǎng)絡(luò)等[1]。提升Android操作系統(tǒng)的安全性,需要具備較為嚴(yán)謹(jǐn)、細(xì)致的分層結(jié)構(gòu)、安全進(jìn)程通信和應(yīng)用沙盒,同時又相應(yīng)的授權(quán)和協(xié)議簽名等。由于Android操作系統(tǒng)開放性特點,可以直接把握設(shè)計細(xì)節(jié),對于Android操作系統(tǒng)安全設(shè)計提出了更高要求。而實現(xiàn)這一目標(biāo),一個首要前提則是分析平臺結(jié)構(gòu)設(shè)計問題,推行多層結(jié)構(gòu),在保障用戶使用安全同時,最大程度上賦予平臺靈活性。
就Android操作系統(tǒng)的構(gòu)成來看,主要包含應(yīng)用層、應(yīng)用框架層、運(yùn)行時、類庫層與Linux內(nèi)核等部分構(gòu)成。應(yīng)用層是系統(tǒng)上應(yīng)用程序的構(gòu)成,涵蓋系統(tǒng)預(yù)裝應(yīng)用和第三方應(yīng)用,而多數(shù)應(yīng)用程序是基于Java計算機(jī)語言編寫,并在Dalvik虛擬機(jī)中運(yùn)行,還有部分應(yīng)用是基于C/C++語言編寫的應(yīng)用。但無論選擇哪一種計算機(jī)編程語言,運(yùn)行環(huán)境的安全要求是相同的,均是在沙箱中運(yùn)行。應(yīng)用框架層是系統(tǒng)組件設(shè)計思想的具體表現(xiàn),涵蓋諸多系統(tǒng)服務(wù)以及多個組件,各組件之間通信主要是基于框架層實現(xiàn),并非是組件之間通信[2]。類庫層是諸多二進(jìn)制動態(tài)庫構(gòu)成,少部分是來源于系統(tǒng)原生類庫,但多數(shù)來源于第三方類庫,依據(jù)實際情況選擇合適的計算機(jī)編程語言開發(fā)設(shè)計。Android操作系統(tǒng)運(yùn)行時,基本構(gòu)成是Java核心類庫、虛擬機(jī)Dalvik,對Java核心類庫進(jìn)一步細(xì)化,包括應(yīng)用層與框架層用到基本Java庫。就Dalvik虛擬機(jī)來看,屬于結(jié)合Android操作系統(tǒng)特點針對性打造的,主要特點在于基于寄存器設(shè)計的虛擬機(jī),HVM卻是基于數(shù)據(jù)棧實現(xiàn),前者可以實現(xiàn)較大應(yīng)用程序編譯需要,在有限內(nèi)存中可以實現(xiàn)多個虛擬機(jī)同時運(yùn)行,各個Dalvik可以基于獨(dú)立Linux進(jìn)程執(zhí)行,避免虛擬機(jī)崩潰時,將所有應(yīng)用程序全部關(guān)閉。Linux內(nèi)核層,可以為Android操作系統(tǒng)服務(wù)提供安全保障,以及內(nèi)存、網(wǎng)絡(luò)、進(jìn)程和設(shè)備驅(qū)動等功能[3]。
操作系統(tǒng)層,可以充分發(fā)揮Linux內(nèi)核安全機(jī)制,進(jìn)一步優(yōu)化改進(jìn)沙盒與安全I(xiàn)PC,控制本地代碼程序在沙盒中安全運(yùn)行。Linux安全性較為突出,Linux系統(tǒng)多年實踐和優(yōu)化下,已經(jīng)成為備受信任的可靠平臺,也是移動平臺基礎(chǔ)所在?;贚inux內(nèi)核,具有進(jìn)程隔離、用戶授權(quán)模式、可擴(kuò)展安全I(xiàn)PC等功能。其中,隔離功能,可以最大程度上保障用戶資源安全,避免其他用戶使用該用戶的內(nèi)存和文件。
Android操作系統(tǒng)可以為不同用戶分配不同的ID,并始終在設(shè)備上維持這一數(shù)值,設(shè)備運(yùn)行期間可以將UID用戶作為單獨(dú)進(jìn)程運(yùn)作。有別于其他操作系統(tǒng),其他操作系統(tǒng)中UID有多個進(jìn)程,而Android操作系統(tǒng)選擇此種方式充當(dāng)內(nèi)核層應(yīng)用沙盒。基于分配UID給各個應(yīng)用程序的方式,可以顯著增強(qiáng)系統(tǒng)運(yùn)行安全性和穩(wěn)定性,依據(jù)系統(tǒng)標(biāo)準(zhǔn)各應(yīng)用程序之間不允許相互操作控制,應(yīng)用程序訪問系統(tǒng)功能也會受到不同程度的限制[4]。
在Android操作系統(tǒng)中,選擇Java和C/C++語言編寫應(yīng)用程序安全性相同,始終在沙盒中運(yùn)行,可以有效降低系統(tǒng)的錯誤幾率,提升系統(tǒng)整體安全性。但是,Android操作系統(tǒng)的應(yīng)用程序運(yùn)行產(chǎn)生的數(shù)據(jù)信息,均是在沙盒中存儲,如果內(nèi)存錯誤,只會影響當(dāng)前運(yùn)行的應(yīng)用程序,對其他應(yīng)用程序并不會產(chǎn)生不良影響。
Linux運(yùn)行環(huán)境中,基于文件系統(tǒng)許可賦予用戶相應(yīng)權(quán)利,不允許修改其他用戶文件資料,系統(tǒng)分配給不同應(yīng)用不同的ID,應(yīng)用充當(dāng)獨(dú)立用戶存在運(yùn)行[5]。除非特殊情況下,開發(fā)者明確部分文件支持其他應(yīng)用程序訪問,否則其他應(yīng)用是不可讀取該應(yīng)用的文件資料。文件系統(tǒng)加密功能,對系統(tǒng)的文件系統(tǒng)加密處理,避免外部攻擊,保障數(shù)據(jù)信息安全,維護(hù)Android操作系統(tǒng)穩(wěn)定運(yùn)行。
綜上所述,Android操作系統(tǒng)的開放性特點,導(dǎo)致系統(tǒng)運(yùn)行中存在一定安全隱患,應(yīng)積極完善配套安全機(jī)制,選擇有效安全措施來維護(hù)系統(tǒng)數(shù)據(jù)信息安全,支持應(yīng)用程序安全運(yùn)行,提升系統(tǒng)整體運(yùn)行效率。