BKJIA獨家特稿】本文李洋老師將向我們介紹“Android安全架構概覽”:Android安全結構的中心思想為“應用程式在預設的情況下不可以執行任何對其他應用程式,系統或者使用者帶來負面影響的操作。”開發人員只有瞭解到Android的安全架構才能設計出在使用過程中更加流暢的使用者體驗。
1. Android具有哪些許可權
根據使用者的使用過程體驗,可以將Android涉及的許可權大致分為如下三類:
(1)Android手機所有者許可權:自使用者購買Android手機(如Samsung GT-i9000)後,使用者不需要輸入任何密碼,就具有安裝一般應用軟體、使用應用程式等的許可權;
(2)Android root許可權:該許可權為Android系統的最高許可權,可以對所有系統中檔案、資料進行任意操作。出廠時預設沒有該許可權,需要使用z4Root等軟體進行擷取,然而,並不鼓勵進行此操作,因為可能由此使使用者失去手機原廠保修的權益。同樣,如果將Android手機進行root許可權提升,則此後使用者不需要輸入任何密碼,都將能以Android root許可權來使用手機。
(3)Android應用程式許可權:Android提供了豐富的SDK(Software development kit),開發人員可以根據其開發Android中的應用程式。而應用程式對Android系統資源的訪問需要有相應的存取權限,這個許可權就稱為Android應用程式許可權,它在應用程式設計時設定,在Android系統中初次安裝時即生效。值得注意的是:如果應用程式設計的許可權大於Android手機所有者許可權,則該應用程式無法運行。如:沒有擷取Android root許可權的手機無法運行Root Explorer,因為運行該應用程式需要Android root許可權。
2. Android的組件模型(Component Model)
Android系統中包括4種組件
(1)Activity:Activity就是一個介面,這個介面裡面可以放置各種控制項。比如:Task Manager的介面、Root Explorer的介面等;
(2)Service:服務是運行在背景功能模組。如檔案下載、音樂播放程式等;
(3)Content Provider:它是Android平台應用程式間資料共用的一種標準介面,它以類似於URI(Universal Resources Identification)的方式來表示資料,如:content://contacts/people/1101;
(4)Broadcast Receiver:與此組件相關的概念是Intent,Intent是一個對動作和行為的抽象描述,負責組件之間程式之間進行訊息傳遞。而Broadcast Receiver組件則提供了一種把Intent作為一個訊息廣播出去,由所有對其感興趣的程式對其作出反應的機制。舉個簡單的例子,:為了實現一個系統啟動後播放音樂的功能,則可以定義Intent為android.intent.action.BOOT_COMPLETED,由Broadcast Receiver組件將其進行廣播,而系統中的Media Player接收到該資訊後則進行播放。
如上所述,4個組件之間的關係如:
3. Android安全訪問設定
每個Android的apk(Android Package)包裡面都包含有一個AndroidMainifest.xml檔案,該檔案除了羅列應用程式執行階段程式庫、運行依賴關係等之外,還會詳細地羅列出該應用程式所需的系統訪問。該檔案的基本格式如下:
- <?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>
如上述檔案描述中斜體部分,該檔案的作用是說明該軟體具備傳送簡訊的功能。Android定義了106種permission,可供開發人員使用,具體詳見網址:http://developers.androidcn.com/reference/android/Manifest.permission.html。
李洋博士畢業於中科院計算所。10多年來一直從事電腦網路資訊安全研發工作,曾主持和參與多項國家重點項目以及資訊安全系統和公司資訊安全系統的研發工作。具有Linux系統應用、管理、安全及核心的研發經驗,擅長網路安全技術、協議分析、Linux系統安全技術、Linux系統及網路管理、Linux核心開發等。
bkjia.com獨家特稿,非經授權謝絕轉載!合作媒體轉載請註明原文出處!如果您想與李洋老師探討Android安全架構等話題,或者向BKJIA移動開發頻道投稿請發郵件至zhousn#bkjia.com將“#”換成“@”)】