51CTO專家專欄 李洋談Android安全框架
原創(chuàng)【51CTO獨家特稿】本文李洋老師將向我們介紹“Android安全框架概覽”:Android安全結(jié)構(gòu)的中心思想為“應用程序在默認的情況下不可以執(zhí)行任何對其他應用程序,系統(tǒng)或者用戶帶來負面影響的操作。”開發(fā)者只有了解到Android的安全架構(gòu)才能設計出在使用過程中更加流暢的用戶體驗。
1. Android具有哪些權(quán)限
根據(jù)用戶的使用過程體驗,可以將Android涉及的權(quán)限大致分為如下三類:
(1)Android手機所有者權(quán)限:自用戶購買Android手機(如Samsung GT-i9000)后,用戶不需要輸入任何密碼,就具有安裝一般應用軟件、使用應用程序等的權(quán)限;
(2)Android root權(quán)限:該權(quán)限為Android系統(tǒng)的***權(quán)限,可以對所有系統(tǒng)中文件、數(shù)據(jù)進行任意操作。出廠時默認沒有該權(quán)限,需要使用z4Root等軟件進行獲取,然而,并不鼓勵進行此操作,因為可能由此使用戶失去手機原廠保修的權(quán)益。同樣,如果將Android手機進行root權(quán)限提升,則此后用戶不需要輸入任何密碼,都將能以Android root權(quán)限來使用手機。
(3)Android應用程序權(quán)限:Android提供了豐富的SDK(Software development kit),開發(fā)人員可以根據(jù)其開發(fā)Android中的應用程序。而應用程序?qū)ndroid系統(tǒng)資源的訪問需要有相應的訪問權(quán)限,這個權(quán)限就稱為Android應用程序權(quán)限,它在應用程序設計時設定,在Android系統(tǒng)中初次安裝時即生效。值得注意的是:如果應用程序設計的權(quán)限大于Android手機所有者權(quán)限,則該應用程序無法運行。如:沒有獲取Android root權(quán)限的手機無法運行Root Explorer,因為運行該應用程序需要Android root權(quán)限。
2. Android的組件模型(Component Model)
Android系統(tǒng)中包括4種組件
(1)Activity:Activity就是一個界面,這個界面里面可以放置各種控件。比如:Task Manager的界面、Root Explorer的界面等;
(2)Service:服務是運行在后臺的功能模塊。如文件下載、音樂播放程序等;
(3)Content Provider:它是Android平臺應用程序間數(shù)據(jù)共享的一種標準接口,它以類似于URI(Universal Resources Identification)的方式來表示數(shù)據(jù),如:content://contacts/people/1101;
(4)Broadcast Receiver:與此組件相關的概念是Intent,Intent是一個對動作和行為的抽象描述,負責組件之間程序之間進行消息傳遞。而Broadcast Receiver組件則提供了一種把Intent作為一個消息廣播出去,由所有對其感興趣的程序?qū)ζ渥鞒龇磻臋C制。舉個簡單的例子,:為了實現(xiàn)一個系統(tǒng)啟動后播放音樂的功能,則可以定義Intent為android.intent.action.BOOT_COMPLETED,由Broadcast Receiver組件將其進行廣播,而系統(tǒng)中的Media Player接收到該信息后則進行播放。
如上所述,4個組件之間的關系如下圖:
3. Android安全訪問設置
每個Android的apk(Android Package)包里面都包含有一個AndroidMainifest.xml文件,該文件除了羅列應用程序運行時庫、運行依賴關系等之外,還會詳細地羅列出該應用程序所需的系統(tǒng)訪問。該文件的基本格式如下:
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="cn.com.fetion.android"
- android:versionCode="1"
- android:versionName="1.0.0">
- <application android:icon="@drawable/icon" android:label="@string/app_name">
- <activity android:name=".welcomActivity"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
- </manifest>
如上述文件描述中斜體部分,該文件的作用是說明該軟件具備發(fā)送短信的功能。Android定義了106種permission,可供開發(fā)人員使用,具體詳見網(wǎng)址:http://developers.androidcn.com/reference/android/Manifest.permission.html。
李洋博士畢業(yè)于中科院計算所。10多年來一直從事計算機網(wǎng)絡信息安全研發(fā)工作,曾主持和參與多項國家重點項目以及信息安全系統(tǒng)和企業(yè)信息安全系統(tǒng)的研發(fā)工作。具有Linux系統(tǒng)應用、管理、安全及內(nèi)核的研發(fā)經(jīng)驗,擅長網(wǎng)絡安全技術、協(xié)議分析、Linux系統(tǒng)安全技術、Linux系統(tǒng)及網(wǎng)絡管理、Linux內(nèi)核開發(fā)等。
【51CTO.com獨家特稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載!合作媒體轉(zhuǎn)載請注明原文出處!如果您想與李洋老師探討Android安全架構(gòu)等話題,或者向51CTO移動開發(fā)頻道投稿請發(fā)郵件至zhousn#51CTO.com(將“#”換成“@”)】