Android層次化安全架構及核心組件概覽
發(fā)布時間:2012-07-07 16:53:55 作者:佚名
我要評論

Android系統(tǒng)承襲了Linux開源操作系統(tǒng)的安全特性,并采用了層次化的方式來保證系統(tǒng)安全,本文將詳細介紹Android層次化安全架構及其核心組件。
Android系統(tǒng)承襲了Linux開源操作系統(tǒng)的安全特性,并采用了層次化的方式來保證系統(tǒng)安全,本文將詳細介紹Android層次化安全架構及其核心組件。 style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; ">Android層次化安全架構
Android作為一個移動設備的平臺,其軟件層次結構包括了一個操作系統(tǒng)(OS),中間件(MiddleWare)和應用程序(Application)。根據(jù)Android的軟件框圖,其軟件層次結構自下而上分為以下幾個層次:
- 操作系統(tǒng)層(OS)
- 各種庫(Libraries)和Android 運行環(huán)境(RunTime)
- 應用程序框架(ApplicationFramework)
- 應用程序(Application)
以下分別介紹Android各個層次的軟件的重點及其相關技術:(1)操作系統(tǒng)層(OS)Android使用Linux 2.6作為操作系統(tǒng),Linux 2.6是一種標準的技術,Linux也是一個開放的操作系統(tǒng)。Android對操作系統(tǒng)的使用包括核心和驅動程序兩部分,Android的Linux核心為標準的Linux 2.6內核,Android更多的是需要一些與移動設備相關的驅動程序。主要的驅動如下所示:
- 顯示驅動(DisplayDriver):常用基于Linux的幀緩沖(Frame Buffer)驅動
- Flash內存驅動(FlashMemory Driver)
- 照相機驅動(CameraDriver):常用基于Linux的v4l(Video for)驅動。
- 音頻驅動(AudioDriver):常用基于ALSA(Advanced Linux Sound Architecture,高級Linux聲音體系)驅動
- WiFi驅動(CameraDriver):基于IEEE 802.11標準的驅動程序
- 鍵盤驅動(KeyBoardDriver)
- 藍牙驅動(BluetoothDriver)
- BinderIPC驅動:Andoid一個特殊的驅動程序,具有單獨的設備節(jié)點,提供進程間通訊的功能。
- PowerManagement(能源管理)
( 2)各種庫(Libraries)和Android 運行環(huán)境(RunTime)本層次對應一般嵌入式系統(tǒng),相當于中間件層次。Android的本層次分成兩個部分一個是各種庫,另一個是Android 運行環(huán)境。本層的內容大多是使用C++實現(xiàn)的。 在其中,各種庫包括:
- C庫:C語言的標準庫,這也是系統(tǒng)中一個最為底層的庫,C庫是通過Linux的系統(tǒng)調用來實現(xiàn)。
- 多媒體框架(MediaFrameword):這部分內容是Android多媒體的核心部分,基于PacketVideo(即PV)的OpenCORE,從功能上本庫一共分為兩大部分,一個部分是音頻、視頻的回放(PlayBack),另一部分是則是音視頻的紀錄(Recorder)。
- SGL:2D圖像引擎。
- SSL:即SecureSocket Layer位于TCP/IP協(xié)議與各種應用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。
- OpenGL ES 1.0 :本部分提供了對3D的支持。
- 界面管理工具(Surface Management):本部分提供了對管理顯示子系統(tǒng)等功能。
- SQLite:一個通用的嵌入式數(shù)據(jù)庫
- WebKit:網(wǎng)絡瀏覽器的核心
- FreeType:位圖和矢量字體的功能。
Android 的各種庫一般是以系統(tǒng)中間件的形式提供的,它們均有的一個顯著特點就是與移動設備的平臺的應用密切相關。 Android 運行環(huán)境主要指的虛擬機技術——Dalvik。Dalvik虛擬機和一般Java虛擬機(Java VM)不同,它執(zhí)行的不是Java標準的字節(jié)碼(bytecode )而是Dalvik可執(zhí)行格式(.dex)中執(zhí)行文件。在執(zhí)行的過程中,每一個應用程序即一個進程(Linux的一個Process)。 二者最大的區(qū)別在于Java VM是以基于棧的虛擬機(Stack-based),而Dalvik是基于寄存器的虛擬機(Register-based)。顯然,后者最大的好處在于可以根據(jù)硬件實現(xiàn)更大的優(yōu)化,這更適合移動設備的特點。(3)應用程序框架(ApplicationFramework)Android的應用程序框架為應用程序層的開發(fā)者提供APIs,它實際上是一個應用程序的框架。由于上層的應用程序是以JAVA構建的,因此本層次提供的首先包含了UI程序中所需要的各種控件:例如: Views (視圖組件)包括 lists(列表), grids(柵格), textboxes(文本框), buttons(按鈕)等,甚至一個嵌入式的Web瀏覽器。一個Android的應用程序可以利用應用程序框架中的以下幾個部分: Activity(活動)、Broadcast IntentReceiver (廣播意圖接收者)、Service (服務)、Content Provider (內容提供者)。(4)應用程序(Application)Android的應用程序主要是用戶界面(UserInterface),通常以JAVA程序編寫,其中還可以包含各種資源文件(放置在res目錄中)。JAVA程序及相關資源經(jīng)過編譯后,將生成一個APK包。Android本身提供了主屏幕(Home),聯(lián)系人(Contact),電話(Phone),瀏覽器(Browsers)等眾多的核心應用。同時應用程序的開發(fā)者還可以使用應用程序框架層的API實現(xiàn)自己的程序。圖1 Android分層安全架構圖style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 12px; ">Android的組件模型(ComponentModel)Android系統(tǒng)中包括如下4種組件:(1)ActivityActivity就是一個界面,這個界面里面可以放置各種控件。例如:TaskManager的界面、Root Explorer的界面等;Activity是為用戶操作而展示的可視化用戶界面。例如說,一個activity可以展示一個菜單項列表供用戶選擇,或者顯示一些包含說明的照片。一個短消息應用程序可以包括一個用于顯示做為發(fā)送對象的聯(lián)系人的列表的activity,一個給選定的聯(lián)系人寫短信的activity以及翻閱以前的短信和改變設置的activity。盡管它們一起組成了一個內聚的用戶界面,但其中每個activity都與其它的保持獨立。每個都是以Activity類為基類的子類實現(xiàn)。一個應用程序可以只有一個activity,或者,如剛才提到的短信應用程序那樣,包含很多個。而每個activity的作用以及其數(shù)目,自然取決于應用程序及其設計。一般情況下,總有一個應用程序被標記為用戶在應用程序啟動的時候第一個看到的。從一個activity轉向另一個的方式是靠當前的activity啟動下一個。每個activity都被給予一個默認的窗口以進行繪制。一般情況下,這個窗口是滿屏的,但它也可以是一個小的位于其它窗口之上的浮動窗口。一個activity也可以使用超過一個的窗口。例如,在activity運行過程中彈出的一個供用戶反應的小對話框,或是當用戶選擇了屏幕上特定項目后顯示的必要信息。窗口顯示的可視內容是由一系列視圖構成的,這些視圖均繼承自View 基類。每個視圖均控制著窗口中一塊特定的矩形空間。父級視圖包含并組織它子視圖的布局。葉節(jié)點視圖(位于視圖層次最底端)在它們控制的矩形中進行繪制,并對用戶對其直接操作做出響應。所以,視圖是activity與用戶進行交互的界面。例如說,視圖可以顯示一個小圖片,并在用戶指點它的時候產生動作。Android有很多既定的視圖供用戶直接使用,包括按鈕、文本域、卷軸、菜單項、復選框等等。(2)Service服務是運行在后臺的功能模塊。如文件下載、音樂播放程序等;服務沒有可視化的用戶界面,而是在一段時間內在后臺運行。例如說,一個服務可以在用戶做其它事情的時候在后臺播放背景音樂、從網(wǎng)絡上獲取一些數(shù)據(jù)或者計算一些東西并提供給需要這個運算結果的activity使用。每個服務都繼承自Service基類。一個媒體播放器播放播放列表中的曲目是一個不錯的例子。播放器應用程序可能有一個或多個activity來給用戶選擇歌曲并進行播放。然而,音樂播放這個任務本身不應該為任何activity所處理,因為用戶期望在他們離開播放器應用程序而開始做別的事情時,音樂仍在繼續(xù)播放。為達到這個目的,媒體播放器activity應該啟用一個運行于后臺的服務。而系統(tǒng)將在這個activity不再顯示于屏幕之后,仍維持音樂播放服務的運行。可以連接至(綁定)一個正在運行的服務(如果服務沒有運行,則啟動之)。連接之后,可以通過那個服務暴露出來的接口與服務進行通訊。對于音樂服務來說,這個接口可以允許用戶暫停、回退、停止以及重新開始播放。(3)ContentProvider它是Android平臺應用程序間數(shù)據(jù)共享的一種標準接口,它以類似于URI(UniversalResources Identification)的方式來表示數(shù)據(jù),如:content://contacts/people/1101;內容提供者將一些特定的應用程序數(shù)據(jù)供給其它應用程序使用。數(shù)據(jù)可以存儲于文件系統(tǒng)、SQLite數(shù)據(jù)庫或其它方式。內容提供者繼承于ContentProvider 基類,為其它應用程序取用和存儲它管理的數(shù)據(jù)實現(xiàn)了一套標準方法。然而,應用程序并不直接調用這些方法,而是使用一個ContentResolver 對象,調用它的方法作為替代。ContentResolver可以與任意內容提供者進行會話,與其合作來對所有相關交互通訊進行管理。(4)BroadcastReceiverBroadcast Receiver是一個專注于接收廣播通知信息,并做出對應處理的組件。很多廣播是源自于系統(tǒng)代碼的。例如,通知時區(qū)改變、電池電量低、拍攝了一張照片或者用戶改變了語言選項。應用程序也可以進行廣播,例如通知其它應用程序一些數(shù)據(jù)下載完成并處于可用狀態(tài)。應用程序可以擁有任意數(shù)量的Broadcast Receiver以對所有它感興趣的通知信息予以響應。所有的接收器均繼承自BroadcastReceiver基類。Broadcast Receiver沒有用戶界面。然而,它們可以啟動一個activity來響應它們收到的信息,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力──閃動背燈、震動、播放聲音等等。一般來說是在狀態(tài)欄上放一個持久的圖標,用戶可以打開它并獲取消息。與此組件相關的概念是Intent,Intent是一個對動作和行為的抽象描述,負責組件之間程序之間進行消息傳遞。而BroadcastReceiver組件則提供了一種把Intent作為一個消息廣播出去,由所有對其感興趣的程序對其作出反應的機制。舉個簡單的例子,為了實現(xiàn)一個系統(tǒng)啟動后播放音樂的功能,則可以定義Intent為android.intent.action.BOOT_COMPLETED,由BroadcastReceiver組件將其進行廣播,而系統(tǒng)中的Media Player接收到該信息后則進行播放。如上所述,4個組件之間的關系如下圖:圖2 Android各組件關系圖
摘自 卓越始于足下博客
相關文章
- 手機停機一樣可以無限量免費上網(wǎng) 現(xiàn)在向大家透露一個如何激活已停機卡的方法!?激活了以后就可以免費上網(wǎng)了。注:《本人動感地帶的卡已測,通過》! 首先2009-06-28
- 手機病毒是病毒的一個分支,雖然其存在只有短短數(shù)年,但在將來很可能會隨著3G的推廣而大量涌現(xiàn)。 病毒類型:手機病毒 病毒目的:破壞手機系統(tǒng),狂發(fā)短信等2009-06-28
三星Android(安卓)手機系統(tǒng)鎖屏功能信息泄露風險的防范
安卓常見的九點鎖屏模式.不小心會被泄露信息哦2012-06-25小米MIUI系統(tǒng)漏洞致大量系統(tǒng)、軟件和用戶數(shù)據(jù)泄露及修復方法
MIUI的刷機量很大.出現(xiàn)下面這個漏洞要及時補啊2012-07-30- 在缺乏大量預算的前提下要怎樣追蹤網(wǎng)絡入侵者?這里有一個廉價的解決辦法:一旦架構建立并且數(shù)據(jù)開始收集,網(wǎng)絡防御者可以在這些被動DNS數(shù)據(jù)上執(zhí)行大范圍的分析來追蹤網(wǎng)絡2016-06-01
手機里的信息到底安不安全?手機數(shù)據(jù)泄露大揭秘
如果你給自己的手機設置了PIN碼,甚至忘記了連自己也解不開;又或者設置了比劃甚至指紋解鎖,然后以為這樣的手機就是安全的了。是的,對于一般的人來說算安全了,可是對于2016-06-03