国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Android操作系統(tǒng)安全機制研究

2014-09-10 07:41:59李俠
電腦知識與技術(shù) 2014年6期

李俠

摘要:Android系統(tǒng)已經(jīng)廣泛應用于手機和平板電腦等移動設(shè)備中。由于Android是一個開源系統(tǒng),因此面臨的安全性問題更加嚴重。系統(tǒng)從設(shè)計到實現(xiàn)整個過程都把安全性作為關(guān)鍵問題。系統(tǒng)設(shè)計采用嚴格的分層結(jié)構(gòu)。在內(nèi)核方面,在Linux內(nèi)核提供的安全措施基礎(chǔ)上進行增強,措施包括采用應用沙盒、內(nèi)存安全管理、文件系統(tǒng)許可與加密等。在應用開發(fā)方面,系統(tǒng)包括安全的進程通信、應用程序安裝包簽名和采用權(quán)限模式等。文中闡述了以上安全措施,為開發(fā)安全的應用提供重要參考。

關(guān)鍵詞:Android;安全;應用沙盒;權(quán)限;簽名

中圖分類號:TP311.11 文獻標識碼:A 文章編號:1009-3044(2014)06-1186-03

Study of Android Operate System Security Mechanisms

LI Xia

(Institute of Computer Software, Anhui Vocational College of Electronical Information Technology, Bengbu 233000, China)

Abstract: Android system has been widely used in mobile phones, tablet computers and other devices. Android is an open source system, so security problem is more serious. The security is taken as a key issue in the whole process from designing to realizing. The strict hierarchical structure is used in the system design process. The enhanced measures including the application of sandbox, memory secure management, file system permissions and encryption, etc, are taken based on the Linux kernel security methods. The measures that include secure inter-process communication, the application installation package signature, the model of permissions, etc, are adopted in the development of application. The above security measures are discussed in the paper, which can provide important reference for the development of secure application.

Key words: Android; security; application sandbox; permission; signature

Android是一個開放的移動設(shè)備操作系統(tǒng)。根據(jù) IDC 2013年11月份的數(shù)據(jù)統(tǒng)計[1],Android 手機的市場份額為80%。豐富的Android應用程序(簡稱應用)極大方便了我們的生活,同時系統(tǒng)的安全性也越來越引起用戶的關(guān)注。Android應用可以操作設(shè)備上的各種硬件、軟件以及本地數(shù)據(jù)和服務器數(shù)據(jù),并能夠訪問網(wǎng)絡(luò)。因此,Android操作系統(tǒng)為了保護數(shù)據(jù)、程序、設(shè)備和網(wǎng)絡(luò)等資源,必須為程序提供一個安全的運行環(huán)境 。該文首先介紹Android安全體系結(jié)構(gòu),然后重點介紹系統(tǒng)內(nèi)核層的采用的安全技術(shù)和應用框架層為開發(fā)者開發(fā)安全的應用程序提供的各種安全措施。該文為程序開發(fā)人員了解系統(tǒng)安全及開發(fā)安全應用提供有用的參考。

1 Android安全體系結(jié)構(gòu)

操作系統(tǒng)的安全性目的就是為了保護移動設(shè)備軟件、硬件資源,包括CPU、內(nèi)存、外部設(shè)備、文件系統(tǒng)和網(wǎng)絡(luò)等。Android系統(tǒng)為了安全性,提供如下主要安全特征:操作系統(tǒng)嚴格的分層結(jié)構(gòu)、應用沙盒、安全進程通信、授權(quán)和簽名等。Android作為開放平臺,它的設(shè)計和實現(xiàn)細節(jié)完全暴露,因此對安全性要求更加嚴格,設(shè)計時首先要重點考慮的就是平臺結(jié)構(gòu)設(shè)計問題, Android系統(tǒng)的體系結(jié)構(gòu)設(shè)計為多層結(jié)構(gòu)[2],如圖1所示。這種結(jié)構(gòu)在給用戶提供安全保護的同時還保持了開放平臺的靈活性。

圖1 Android操作系統(tǒng)分層的安全體系結(jié)構(gòu)

Android系統(tǒng)結(jié)構(gòu)由4層組成,從上到下分別是: 應用層(Applications)、應用框架層(Application Framework)、運行時(Android Runtime)、類庫層(Libraries)和Linux內(nèi)核(Linux Kernel)組成。應用層由運行在Android設(shè)備上的所有應用構(gòu)成,包括預裝的系統(tǒng)應用和用戶自己安裝的第三方應用。大部分應用是由Java語言編寫并運行在Dalvik虛擬機中;另一部分應用是通過C/C++語言編寫的本地應用。不論采用何種編程語言,兩類應用運行的安全環(huán)境相同,都在應用沙箱中運行。應用框架層集中體現(xiàn)Android系統(tǒng)的組件設(shè)計思想。框架層由多個系統(tǒng)服務(System Service)組成。Android應用由若干個組件構(gòu)成,組件和組件之間的通信是通過框架層提供的服務集中調(diào)度和傳遞消息實現(xiàn)的,而不是組件之間直接進行的。框架層協(xié)調(diào)應用層的應用工作提升了系統(tǒng)的整體安全性。類庫層主要由類庫和Android運行時兩部分組成。其中類庫由一系列的二進制動態(tài)庫構(gòu)成,大部分來源于優(yōu)秀的第三方類庫,另一部分是系統(tǒng)原生類庫;通常使用C/C++語言開發(fā)。Android運行時由Java核心類庫和Android虛擬機Dalvik共同構(gòu)成。Java核心類庫包括框架層和應用層所用到基本Java庫。Dalvik是為Android量身打造的Java虛擬機,它與標準 Java 虛擬機(JVM)主要差別在于Dalvik是基于寄存器設(shè)計的,而JVM是基于數(shù)據(jù)棧的,前者能夠更快的編譯較大的應用程序。Dalvik允許在有限的內(nèi)存中同時運行多個虛擬機的實例,每一個 Dalvik 應用作為一個獨立的 Linux 進程執(zhí)行,可防止在某一虛擬機崩潰時所有應用都被關(guān)閉。最后一層是Linux內(nèi)核層,該層提供核心系統(tǒng)服務包括安全、內(nèi)存、進程、網(wǎng)絡(luò)和設(shè)備驅(qū)動等功能。

2 系統(tǒng)內(nèi)核安全

在操作系統(tǒng)層Android充分利用已有的Linux內(nèi)核安全機制,并在此基礎(chǔ)上進行改進如應用沙盒和安全IPC(inter-process communication,進程通信),這些安全機制可以保證即使本地代碼程序也被限制在應用沙盒中安全運行。

2.1 Linux安全性

Android平臺的基礎(chǔ)是Linux內(nèi)核。Linux操作系統(tǒng)經(jīng)過多年的發(fā)展,已經(jīng)成為一個穩(wěn)定的安全的被許多公司和安全專家信任的安全平臺[3]。作為移動平臺的基礎(chǔ),Linux內(nèi)核為Android提供了如下安全功能:基于用戶授權(quán)的模式、進程隔離、可擴展的安全IPC和移除不必要的不安全的內(nèi)核代碼。作為多用戶操作系統(tǒng),Linux內(nèi)核提供了相互隔離用戶資源的功能。通過隔離功能,一個用戶不能使用另一個用戶的文件、內(nèi)存、CPU和設(shè)備等。

2.2 應用沙盒

Android平臺把Linux基于用戶的授權(quán)模式作為標識和隔離應用程序資源的方式。系統(tǒng)為每個應用分配一個用戶ID(UID), 并在該設(shè)備上一直保持這個數(shù)值;運行時,把應用當作編號為UID的用戶在一個單獨的進程運行。簡而言之,Android系統(tǒng)中一個UID對應一個進程。這一點與其它操作系統(tǒng)不同,在其它操作系統(tǒng)中,一個UID可以擁有多個進程。Android采用這種方式作為內(nèi)核層的應用沙盒(Application Sandbox)。通過分配UID給應用程序這種方式,增強了系統(tǒng)的安全性。默認情況下,應用之間不能相互操作,應用訪問操作系統(tǒng)的功能也受到限制。例如,在沒有授權(quán)的情況下應用A想要讀取應用B的數(shù)據(jù)或想要使用電話功能都會被操作系統(tǒng)拒絕。由于應用沙盒位于內(nèi)核層,所以這種安全模式可以作用到圖1所示的Linux內(nèi)核之上的所有層。在有的平臺上,為了增強安全性,開發(fā)者被限制在指定的開發(fā)框架、API集或開發(fā)語言上。但在Android平臺中,采用C/C++與采用Java編寫的應用其安全性都一樣,因為最終都運行在沙盒中。在有的操作系統(tǒng)中內(nèi)存錯誤會導致系統(tǒng)安全性降低。但在Android中由于應用及其數(shù)據(jù)存在于沙盒中,內(nèi)存錯誤至多影響當前應用而不會影響其它應用。

2.3 文件系統(tǒng)許可/加密

在Linux環(huán)境中,文件系統(tǒng)許可(permission )可以保證一個用戶不能修改或讀取另一個用戶的文件。Android系統(tǒng)中每個應用都分配一個用戶ID,應用作為一個用戶存在,因此除非開發(fā)者明確指定某文件可以供其它應用訪問,否則一個應用創(chuàng)建的文件其它應用不能讀取或修改。 文件系統(tǒng)加密功能可以對整個文件系統(tǒng)進行加密。內(nèi)核利用dm-crypt技術(shù)創(chuàng)建加密文件系統(tǒng) 。dm-crypt技術(shù)是建立在Linux 內(nèi)核2.6版本的device-mapper特性之上的。 device-mapper是在實際的塊設(shè)備之上虛擬層可以方便開發(fā)人員實現(xiàn)鏡像、快照、級聯(lián)和加密等處理。為了防止系統(tǒng)口令攻擊(例如通過彩虹表或暴力破解等方法),口令采用SHA1加密算法進行保存。為了防止口令字典攻擊,系統(tǒng)提供口令復雜性規(guī)則,規(guī)則由設(shè)備管理員制定,由操作系統(tǒng)實施。

2.4 其它

內(nèi)核安全措施還包括豐富的數(shù)據(jù)加密函數(shù)、內(nèi)存安全管理增強、刷機時保護用戶數(shù)據(jù)等。Android系統(tǒng)為應用開發(fā)提供了一組實現(xiàn)加密功能的API函數(shù),包括標準的加密算法[4]如AES, RSA, DSA, 和 SHA等;及更高層的安全網(wǎng)絡(luò)協(xié)議如SSL 和 HTTPS。據(jù)統(tǒng)計,操作系統(tǒng)中超過50%的安全漏洞都是由內(nèi)存溢出引起的。為此,Android系統(tǒng)提供的SDK、編譯器和工具可以增強保護內(nèi)存的力度,更大程度防止內(nèi)存溢出。隨著更高版本的Android系統(tǒng)推出,內(nèi)存管理的功能也不斷增強,包括ProPolice 、safe_iop 、增強的dlmalloc 、Address Space Layout Randomization (ASLR) 、PIE (Position Independent Executable)、dmesg_restrict 等。其中ASLR是一種針對緩沖區(qū)溢出的安全保護技術(shù),通過對堆、棧、共享庫映射等線性區(qū)布局的隨機化增加攻擊者預測目的地址的難度,防止攻擊者直接定位攻擊代碼位置,達到阻止溢出攻擊的目的。ASLR可以有效的降低緩沖區(qū)溢出攻擊的成功率。

3 Android應用安全

Android系統(tǒng)為移動設(shè)備提供了一個開源的平臺和應用程序開發(fā)環(huán)境。通常程序開發(fā)語言采用Java,并運行在Dalvik虛擬機中,對于游戲等性能要求較高的程序也可以采用C/C++編寫。程序安裝包以.apk為擴展名。一個應用程序通常由配置文件(AndroidManifest.xml)、活動(Activity)、服務(Service)和廣播接收器(Broadcast Receiver)組成等組成。

3.1 Android權(quán)限模式

所有的應用程序都運行在應用沙盒中,默認情況下,應用只能存取受限的系統(tǒng)資源。這種受限機制的實現(xiàn)方式有多種,包括不提供獲取敏感功能的API函數(shù)、采用角色分離技術(shù)和采用權(quán)限模式。權(quán)限模式最常用,通過這種方式把用于存取敏感資源的API函數(shù)只授權(quán)給值得信任的應用程序,這些函數(shù)主要涉及的功能包括攝像頭、GPS、藍牙、電話、短信和網(wǎng)絡(luò)等。應用程序為了能夠存取這些敏感資源,必須在它的配置文件中聲明存取所需資源的能力。當用戶安裝這種程序時,系統(tǒng)會顯示對話框提示程序需要的權(quán)限并詢問用戶是否需要繼續(xù)安裝。如果用戶繼續(xù)安裝,系統(tǒng)就把這些權(quán)限授予對應的程序。安裝過程中,針對用戶只想授權(quán)其中的某些權(quán)限的情況系統(tǒng)是不支持的。 安裝完畢后,用戶可以通過“系統(tǒng)設(shè)置”功能允許或拒絕某些權(quán)限。對于系統(tǒng)自帶的應用程序,系統(tǒng)不會提示請求用戶授權(quán)。如果程序的配置文件中沒有指定受保護資源的授權(quán),但程序中調(diào)用了資源對應的API函數(shù),則系統(tǒng)拋出安全異常。程序的配置文件中還可以定義安全級別(protectionLevel )屬性,這個屬性告訴系統(tǒng)其它哪些應用可以訪問此應用。

3.2 安全進程通信

盡管Linux內(nèi)核提供了多種進程通信(IPC)機制,包括管道、信號、報文、信號量、共享內(nèi)存和套接字等。但出于安全性考慮Android增加了新的安全IPC機制,主要包括Binder、Service,Intent和ContentProvider。Binder是一個輕量級的遠程過程調(diào)用機制,它可以高效安全地實現(xiàn)進程內(nèi)和進程間調(diào)用[5]。Service運行在后臺并通過Binder向外提供接口服務,通常不具有可見的用戶界面。Intent是一個簡單的消息對象,此對象表示想要做某事的“意向”。ContentProvider是一個數(shù)據(jù)倉庫,通過它可以向外提供數(shù)據(jù)。例如一個程序可以獲取另一個應用通過ContentProvider向外公布的數(shù)據(jù)。在編寫程序時如果需要進程通信,雖然可以使用Linux提供的傳統(tǒng)的方式,但還是推薦使用Android提供的安全IPC框架,這樣可以避免傳統(tǒng)方式存在的通信安全缺陷。

3.3應用程序安裝包簽名

所有的 Android 應用程序安裝包(apk 文件)必須進行簽名,否則程序不能安裝在Android設(shè)備或模擬器中。簽名的目的用于標識程序作者、升級應用程序。當沒有簽名的應用在安裝時,包管理器就會拒絕安裝。簽名的應用在安裝時,包管理器首先驗證APK文件中的簽名證書是否正確,如果正確,首先把應用放置在應用沙盒中,然后系統(tǒng)為它分配一個UID,不現(xiàn)的應用有不同的UID;如果證書簽名與設(shè)備中其它簽名的應用相同,表示是同一個應用,則提示用戶是否用新的應用更新老的相應。該簽名證書可以由開發(fā)者自己設(shè)定稱之為自簽名(self-signed)證書,也可以由第三方的認證機構(gòu)授權(quán)。系統(tǒng)提供自簽名證書功能使得開發(fā)者不再需要借助外部的幫助或授權(quán)即可以自己進行簽名。Google公司提供了完整方便的簽名工具為用戶開發(fā)提供便利。

4 結(jié)論

Android系統(tǒng)作一個安全開源的移動平臺,在系統(tǒng)內(nèi)核層次與應用開發(fā)方面都提供了強大的安全措施。在系統(tǒng)內(nèi)核層次,應用沙盒可以實現(xiàn)應用之間的隔離,防止一個應用的數(shù)據(jù)和代碼被其它沒有授權(quán)的應用存?。浑S著系統(tǒng)版本的升級,內(nèi)存管理功能隨之豐富;加密的文件系統(tǒng)可以保護丟失設(shè)備上的數(shù)據(jù)不被泄漏。在應用開發(fā)方面同,采用加密、授權(quán)和安全IPC等措施構(gòu)建的應用程序框架具有強大的安全特性;授權(quán)模式可以限制應用對系統(tǒng)功能和用戶數(shù)據(jù)的存??;應用指定的權(quán)限級別可以控制其它應用對自己的訪問;數(shù)字簽名保證了程序開發(fā)者與應用之間的信任關(guān)系。Android在安全性設(shè)計方面還考慮了盡量減少應用開發(fā)人員的負擔問題。針對安全性要求高的開發(fā)者通過平臺提供的靈活的安全控制機制可以輕松開發(fā)應用程序。針對安全性要求不高的開發(fā)者,系統(tǒng)默認的安全措施也能夠?qū)贸绦蛱峁┹^好的保護。對于可能存在的惡意攻擊,系統(tǒng)提供了防范機制,一方面降低攻擊成功的概率,另一方面盡量限制攻擊后系統(tǒng)所受損失。

參考文獻:

[1] Android手機市場份額首次超過80% [EB/OL]. [2014-1-25].http://mobile.yesky.com/414/35414414.shtml.

[2] Google Inc. Security Tips[EB/OL].[2013-10-20].https://developer.android.com/training/articles/security-tips.html.

[3] 柯元旦. Android內(nèi)核剖析[M].北京:電子工業(yè)出版社,2011.

[4] (美)Christian Collberg Jasvir Nagra.軟件加密與解密[M].崔孝晨,譯.北京:人民郵電出版社,2012.

[5] Google Inc.. Binder Class Overview[EB/OL]. [2013-07-25].https://developer.android.com/reference/android/os/Binder.html.

临沧市| 铜陵市| 资阳市| 乐山市| 宜春市| 楚雄市| 通河县| 通道| 永济市| 中宁县| 鲁山县| 邮箱| 鹤岗市| 宿迁市| 大埔县| 博客| 松桃| 香港 | 平南县| 桐乡市| 浙江省| 全椒县| 罗田县| 开封县| 高邮市| 孟连| 高雄市| 乌鲁木齐市| 陇川县| 崇义县| 镇安县| 盖州市| 安乡县| 青浦区| 麻江县| 通州区| 舟山市| 哈尔滨市| 大石桥市| 乌拉特后旗| 奉化市|