當(dāng)前位置:首頁 > 嵌入式 > 嵌入式分享
[導(dǎo)讀]為什么Android總是事無巨細(xì)地告訴你應(yīng)用索取的每一項權(quán)限?本文將分析這個問題,并就如何控制權(quán)限提出一些方法。

為什么Android總是事無巨細(xì)地告訴你應(yīng)用索取的每一項權(quán)限?本文將分析這個問題,并就如何控制權(quán)限提出一些方法。

相比Apple,Microsoft嚴(yán)格控制生態(tài)系統(tǒng)(從蘋果給開發(fā)者的"App Store Guideline"可見一斑),只允許通過官方應(yīng)用商店安裝應(yīng)用,并對每份上傳進(jìn)行仔細(xì)地審查而言,Android的開放就意味著,Google需要向 用戶提供一系列用于為自己負(fù)責(zé)的流程、工具。所以在安裝應(yīng)用前,Android總是要事無巨細(xì)地告訴你,應(yīng)用肯需要控制什么權(quán)限。

同樣,開發(fā)者也制作了一系列易用的工具,用以鑒別可疑的應(yīng)用程序,或是控制權(quán)限。

Andoird哪里開放了?

在Android中,用戶能自由從本地安裝應(yīng)用,自由地對SD卡進(jìn)行操作,自由選擇應(yīng)用市場。

如果愿意放棄保修,用戶還能輕易地實行root,解鎖基帶(baseband)。只有一些產(chǎn)品會嚴(yán)密地鎖定bootloader(如摩托羅拉)。

最重要的是,因為ASOP(Android源代碼開放計劃)的存在,絕大部分的Android代碼都是開源的,開發(fā)者可以由此對Android系統(tǒng)進(jìn)行 深入的修改,甚至可以自行編寫一個符合Android規(guī)范的系統(tǒng)實例(如Cyanogen Mod)。正是因為ASOP,這篇文章才可能介紹多達(dá)5種原理不同的權(quán)限控制方法。

開放的風(fēng)險

不考慮Symbian,Windows Phone 6.5(及以下)平臺,那么幾乎所有的智能手機(jī)病毒都是Android平臺的,甚至官方Android Market也鬧過幾次烏龍。在國內(nèi)水貨橫行的市場,情況更是火上澆油,不法業(yè)者可以在手機(jī)的ROM,甚至是bootloader中做好手腳,讓用戶有病無法醫(yī)。

在Android中,用戶可以允許系統(tǒng)安裝來自"未知源"(也就是非Google官方的,或手機(jī)預(yù)置市場的)應(yīng)用程序。于是,移動平臺最重要的門神------數(shù)字簽名就被繞過了。

出于Android的開放性,也有不允許"未知源"的反例:亞馬遜的Kindle Fire平板使用了深度定制的Android,它只允許安裝來自亞馬遜官方商店的應(yīng)用程序。

2 Android有哪些"權(quán)限"

首先需要明確一下Android中的種種"權(quán)限"。Android是在Linux內(nèi)核上建立一個硬件抽象層(Android HAL),通過Dalvik以及各種庫來執(zhí)行android應(yīng)用的。在手機(jī)啟動時,首先需要由Bootloader(HTC手機(jī)上稱作Hboot)引導(dǎo) Linux及手機(jī)上各個硬件設(shè)備的驅(qū)動程序,之后才啟動Android系統(tǒng)。所以其實我們會涉及到四種不同涵義的權(quán)限:

Android權(quán)限(Permission)

這指Android中的一系列"Android.Permission.*"對象,是本文的中心內(nèi)容。

Google在Android框架內(nèi)把各種對象(包括設(shè)備上的各類數(shù)據(jù),傳感器,撥打電話,發(fā)送信息,控制別的應(yīng)用程序等)的訪問權(quán)限進(jìn)行了詳細(xì)的劃 分,列出了約一百條"Android.Permission"。應(yīng)用程序在運行前必須向Android系統(tǒng)聲明它將會用到的權(quán)限,否則Android將會 拒絕該應(yīng)用程序訪問通過該"Permission"許可的內(nèi)容。

比方說,搜狗輸入法提供了一個智能通訊錄的功能,用戶可以在輸入聯(lián)系人 拼音的前幾個字符,或首字母,輸入法就能自動呈現(xiàn)相關(guān)聯(lián)系人的名字。為了實現(xiàn)這個功能,輸入法必須聲明它需要讀取手機(jī)中聯(lián)系人的能力,也就是在相關(guān)代碼中 加上聲明"android.permission.READ_CONTACTS"對象。

原生Android只提供了對"一刀切"式的管理,要么同意使用,否則就根本就不安裝應(yīng)用程序。當(dāng)用戶遇到希望使用程序的同時,又想禁止部分Permission的場合,他就無路可走。

于是,不少開發(fā)者就搗鼓出了"第三條道路";可惜的是,沒有一種方法能同時做到既不需要將手機(jī)固件Root,又完全不涉及對原始應(yīng)用程序進(jìn)行反向工程的方法。

Root

Root指獲得Android所在的Linux系統(tǒng)的Root(根)權(quán)限,有了根權(quán)限,你才能對Linux做出任意的修改。iOS中的越獄 (Jailbreak) 相當(dāng)于獲得iOS系統(tǒng)的Root權(quán)限(iOS是一種類Unix系統(tǒng),和Linux都使用Root的概念)。在已Root的設(shè)備中,通常都是使用一個 叫"Superuser"(簡稱SU)的應(yīng)用程序來向許可的程序授以Root權(quán)限。

Bootloader的解鎖(Unlock)

利用數(shù)字簽名,Bootloader可以限定只有正確簽名的系統(tǒng)可以被引導(dǎo)。在修改固件以獲得Root以前,解鎖Bootloader通常是必須的。安裝第三方修改、編譯的固件也需要解鎖Bootloader。

基帶(Radio)解鎖

在Android系統(tǒng)中,基帶是上層軟件與手機(jī)中無線設(shè)備(手機(jī)網(wǎng)絡(luò),Wi-Fi,藍(lán)牙等)的驅(qū)動程序之間的中介。國外的網(wǎng)絡(luò)運營商很喜歡鎖定基帶,從 而保證用戶只能使用運營商自己指定的sim卡。在我國,鎖定基帶是非法的,手機(jī)制造商、網(wǎng)絡(luò)運營商也不可以通過鎖定基帶的方法對待違約客戶。iOS的"解 鎖"就是解鎖iOS中的基帶軟件。

為什么要控制Android權(quán)限

魚和熊掌不可兼得,Android的世界有很多自由,壞人也能自由地做壞事。它的生態(tài)系統(tǒng)很強(qiáng)調(diào)自主:用戶可以自主地減小風(fēng)險,僅使用官方市場的應(yīng)用程序,也可以自主地解除安全限制,從而獲得更多自由。因此,在遇到壞事的時候,用戶也不得不自主一下:

1, 抵制不道德,乃至非法行為

幾乎所有的Android安全軟件都能對來電、信息進(jìn)行控制,以減少騷擾。

另一方面,很多應(yīng)用都會要求它們實際功能以外的權(quán)限,表現(xiàn)在非(主動)告知地搜集設(shè)備序列號,位置信息,誘使用戶默認(rèn)地上傳聯(lián)系人列表等方面。

更壞一點的應(yīng)用程序,則會踏入犯罪的范疇,比如能偷偷發(fā)出扣費信息,或是作為黑客的偷窺工具。

2, 減少惡意軟件的損害

惡意軟件即便潛伏成功,也難以獲得權(quán)限,從而減少損失。

3, 用戶有權(quán)自主地在抑制應(yīng)用程序的部分權(quán)限時,繼續(xù)使用該應(yīng)用程序,而只承擔(dān)由于自行設(shè)置不當(dāng)而帶來的后果。

用戶擁有設(shè)備的所有權(quán),因此有權(quán)自主控制設(shè)備上的內(nèi)容、傳感器等對象的訪問;同時有權(quán)(不)運行,(不)編譯設(shè)備上的應(yīng)用程序。

大多數(shù)應(yīng)用程序在運行時,并未達(dá)成主動告知的義務(wù),是失誤;然而即使主動告知,用戶還是可以不理會。

為什么Android官方市場的強(qiáng)制提醒權(quán)限的行為不屬于主動告知:

通過Android官方市場,"打包安裝器"安裝應(yīng)用程序時,所顯示的"權(quán)限"僅是在安裝包內(nèi)AndroidManifest.xml聲明的值,而非應(yīng) 用程序?qū)嶋H上會調(diào)用的內(nèi)容。該值僅用來表明Android系統(tǒng)能向應(yīng)用授予的最大可能的權(quán)限。即便一個"Hello World"式的應(yīng)用程序,也可以在AndroidManifest.xml中聲明所有可能的Android Permission。

這就是說,在AndroidManifest.xml中聲明的值與應(yīng)用程序?qū)嶋H調(diào)用的權(quán)限有關(guān)聯(lián),但不等同,且這種提示是由Android系統(tǒng)負(fù)責(zé)實施的強(qiáng)制行為。

正確的理解是:"應(yīng)用程序(被迫地)讓Android系統(tǒng)告知用戶,它在AndroidManifest.xml中所聲明的事項。"

這意味著應(yīng)用程序在使用重要權(quán)限前,依然需要自行、主動地通知用戶相關(guān)事宜。

3 權(quán)限控制的方法

這里開始介紹各種控制Android權(quán)限的辦法??上У氖牵瑤缀跛械氖侄味夹枰獙υO(shè)備進(jìn)行Root,如果不這么做,則需要付出不小代價。

App Shield(國內(nèi)常見的名字:權(quán)限修改器)

它是一個需要付費的Android應(yīng)用,其原理是修改應(yīng)用程序的apk安裝包,刪除其中AndroidManifest.xml文件內(nèi),用于聲明權(quán)限的 對應(yīng)"Android.Permission.*"條目,然后再用一個公開的證書對安裝包重新簽名(需要允許"未知源"),這樣一來,應(yīng)用程序就不會向系 統(tǒng)申請原先所需的權(quán)限。當(dāng)應(yīng)用運行至相應(yīng)的流程時,系統(tǒng)將直接拒絕,從而達(dá)到用戶控制權(quán)限的目的。

對于已安裝的應(yīng)用,AppShield也會按照同樣方法制作好apk安裝包,然后讓用戶先卸載原始的應(yīng)用,再安裝調(diào)整過的應(yīng)用。除了該應(yīng)用數(shù)字簽名外,用戶可以隨時通過執(zhí)行同樣的流程,將吊銷的權(quán)限恢復(fù)。

CyanogenMod 7.1(及以上版本)

Cyanogenmod是一款著名的第三方編寫的開源Android ROM。

CM7.1加入了控制權(quán)限的開關(guān),官方的名稱是"Permission Revoking",任何非系統(tǒng)/保護(hù)應(yīng)用在安裝后,可直接吊銷任意一項權(quán)限,其效果等價于直接刪除apk包中AndroidManifest.xml的 對應(yīng)條目,但不會引發(fā)自校驗的問題。CM的權(quán)限工具的作用等同于AppShield,無非是在Android自身的權(quán)限系統(tǒng)中添加了一個開關(guān)。

優(yōu)點:

免費,使用簡便,可隨時,任意地吊銷、恢復(fù)非預(yù)裝應(yīng)用的任意一項權(quán)限;不存在數(shù)字簽名的問題,因而不影響使用自校驗的應(yīng)用程序。

問題:

此功能僅在Cyanogen Mod 7.1及以上版本提供,無法用于其它rom。因為是由Android系統(tǒng)出面吊銷權(quán)限,其實現(xiàn)原理與App Shield完全相同,同樣的,應(yīng)用程序會因為設(shè)計不良而出現(xiàn)崩潰。

Permission Denied

這是可以吊銷任意Android應(yīng)用(注意,不當(dāng)?shù)氐蹁N系統(tǒng)應(yīng)用的權(quán)限可能會導(dǎo)致手機(jī)固件損壞,無法啟動)的任意權(quán)限,對權(quán)限的修改在重啟后生效。

實現(xiàn)原理應(yīng)該與Cyanogen Mod 7.1+完全相同,適用于任何已經(jīng)Root的系統(tǒng),因為一般的Android系統(tǒng)雖然事實上支持權(quán)限吊銷,但沒有像Cyanogen Mod那樣放置接口,因此需要重啟后才能應(yīng)用權(quán)限配置。同樣也有系統(tǒng)出面拒絕權(quán)限而導(dǎo)致的崩潰現(xiàn)象。

優(yōu)點:

效果與Cyanogen Mod中的權(quán)限吊銷效果一致,且可吊銷系統(tǒng)應(yīng)用的權(quán)限。同時提供了免費與收費版本,免費版并沒有基本功能的缺失。適用于所有版本號不低于1.6的Android設(shè)備。

問題:

調(diào)整后的權(quán)限需要重啟才能生效。設(shè)計不良的應(yīng)用會崩潰。不恰當(dāng)?shù)臋?quán)限修改會損壞系統(tǒng),導(dǎo)致無法開機(jī)。

PDroid

PDroid實際上是一個Android內(nèi)核補(bǔ)丁加上一個用于管理的外部應(yīng)用。補(bǔ)丁需要在Recover環(huán)境中刷入系統(tǒng),也可以由開發(fā)者自行移植入系 統(tǒng)。該軟件在Android ASOP 2.3.4代碼基礎(chǔ)上開發(fā),僅適用于沒有改動內(nèi)核的Android 2.3系統(tǒng),目前還未支持Android 4。

為了避免Cyanogen Mod 7.1+權(quán)限吊銷(Permission revoking)導(dǎo)致的崩潰問題,以及后臺服務(wù)(如LBE,QQ手機(jī)管家等,PDroid的作者認(rèn)為通過后臺服務(wù)攔截權(quán)限并不是好辦法),PDroid 并不阻止應(yīng)用程序聲明權(quán)限,但會在其實際索取相關(guān)信息時,予以阻止。通俗地說,就是簽署協(xié)議但不執(zhí)行。在PDroid的用戶界面,用戶能隨時精確地控制涉 及隱私的各項權(quán)限。對于某些內(nèi)容,除了阻止外,用戶還可以偽造一個隨機(jī)或指定的數(shù)據(jù)。

PDroid的內(nèi)核補(bǔ)丁并不通用,每一個Rom都需要特定的補(bǔ)丁。開發(fā)者除了提供了幾個特定機(jī)型下Cyanogen Mod,HTC Sense修改版ROM的專用補(bǔ)丁外,還推出了一個補(bǔ)丁生成工具(PDroid Patcher),用戶可以給自己的ROM生成專用的內(nèi)核補(bǔ)丁。使用該Patcher需要安裝JDK(java Development Kit)。

優(yōu)點:

PDroid避免了通過Android系統(tǒng)進(jìn)行權(quán)限吊銷的導(dǎo)致的潛在崩潰問題,也不需要后臺服務(wù)。對隱私信息的控制是最精細(xì)的。盡管設(shè)備必須Root,但應(yīng)用本身不需要Root權(quán)限。

問題:

安裝過程是最繁瑣,最不可靠的,容易導(dǎo)致ROM損壞,適用范圍也小,需要用戶有相當(dāng)?shù)募寄?能安裝JDK,會刷機(jī))才可使用;只提供對隱私有關(guān)權(quán)限的控制,不提供網(wǎng)絡(luò)訪問,的控制。以這些為代價,它幾乎沒有其它缺點。

LBE安全大師

實際上最常用的是以LBE為代表的通過一個Root權(quán)限的后臺服務(wù)來攔截相關(guān)行為的工具。除了LBE外,還有QQ手機(jī)管家等應(yīng)用。這里以LBE安全大師為例介紹。

優(yōu)點:

使用非常簡單,功能強(qiáng)大而全面,風(fēng)險很小,可以控制系統(tǒng)應(yīng)用。適用范圍廣,有很多替代產(chǎn)品。

問題:

需要后臺服務(wù) (盡管蠶豆網(wǎng)有個評測,認(rèn)為它對能耗幾乎沒有影響),不能控制所有的Android權(quán)限。

4 自啟動的控制

Android對后臺服務(wù)有著最好的支持。

在Android中可以自由地開發(fā)一種稱為'Service'的后臺運行的對象,加上沒有蘋果公司對應(yīng)用程序的嚴(yán)格限制。諸如QQ掛機(jī),即時調(diào)用第三方應(yīng)用程序之類的形式都可以輕易實現(xiàn)。

為了全面支持后臺服務(wù),也為了適應(yīng)移動設(shè)備資源緊張,不得不經(jīng)常清理內(nèi)存的問題,應(yīng)用可在系統(tǒng)中設(shè)置觸發(fā)器,當(dāng)系統(tǒng)發(fā)生了某個特定特定事件時(系統(tǒng)啟動,撥打電話,收發(fā)信息,安裝、卸載應(yīng)用,插上電源等,或應(yīng)用程序自行定義的事件),就會觸發(fā)啟動應(yīng)用程序。

AutoStarts 自啟動管理

AutoStarts是一個收費應(yīng)用,通過它,用戶能了解系統(tǒng)中每一項程序會在什么場合下被觸發(fā)運行。如果提供Root權(quán)限,則還能禁止這樣的行為。

這里以Google Maps應(yīng)用6.2版為例。默認(rèn)情況下,這款應(yīng)用總是會保持后臺運行,并每小時向Google發(fā)送一次當(dāng)前用戶的位置信息。為了阻止這樣的行為,需要聯(lián)合 使用AutoStarts與任意一款進(jìn)程管理應(yīng)用:在AutoStarts中,阻止Google Maps的自行啟動(如圖),在每次使用完后,把Google Maps的進(jìn)程殺掉。

5 其他

Root帶來的風(fēng)險

有一個鉆牛角尖的說法認(rèn)為,一旦對設(shè)備進(jìn)行了Root,便無安全一說,只要惡意程序一旦偷偷獲得Root級別,一切都是空談。

這種說法之所以鉆牛角尖,是因為:一方面Android中的Root權(quán)限通常都是需要用戶通過Superuser應(yīng)用進(jìn)行授權(quán)的,這已經(jīng)夠用,雖然不能 指望Superuser無懈可擊;另一方面,控制Android權(quán)限主要是為了讓應(yīng)用程序在"灰色地帶"的行為收斂一些,它們實際顯然不是病毒等犯罪軟件。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉