Android 系統的 100 多種許可權,怎樣獲取才合理合法?
孟春婷 騰訊公司移動互聯法務總監
唐偉 騰訊公司移動互聯高級法律顧問
引言
安卓系統自誕生以來就以高度的開放性著稱,安卓系統的開放性也幫助安卓系統在短時間內獲得了巨大的市場份額。
安卓系統給予應用開發者比較寬鬆的系統許可權獲取環境,有效拓展了應用開發的靈活度,打破了一些不必要的局限,但安卓系統在許可權管理的開放性也帶來了一些安全問題。
一些惡意軟體利用安卓系統在許可權管理上的開放性通過獲取大量非必要許可權的方式收集用戶個人信息、惡意吸費甚至傳播病毒木馬。
安卓應用超越必要限度獲取系統許可權將導致用戶個人信息泄露,根據騰訊與DCCI互聯網數據中心聯合發布的《2017年度網路隱私安全及網路欺詐行為分析報告》顯示,2017年下半年,安卓手機應用中有98.5%的應用都要獲取用戶隱私許可權,其中越界獲權的情況佔比在9%。
媒體對安卓應用惡意獲取系統許可權多次報道,多地消費者保護委員會也嘗試通過約談等方式對任意獲取非必要許可權的情況進行曝光監督。
手機應用「越界獲權」已經成為個人信息泄露的主要渠道之一,並由此衍生出規模龐大的網路黑產。
1
安卓獲權獲取的技術原理
(一)以Manifest文件為基礎
安卓應用獲取系統許可權必須先在應用的AndroidManifest.xml文件中進行聲明。Manifest文件位於應用軟體根目錄下,是安卓應用軟體的全局配置文件,描述了安裝包中的全局數據。
該文件提供了安卓系統所需要的關於該應用程序的必要信息。
比如:為應用軟體指定唯一的名字;描述應用軟體所包括的成分,如activities, services, broadcast receivers和content providers等內容;聲明應用軟體正常運行所需要的許可權,如讀寫SD卡許可權等;聲明應用程序的安卓API級別,低於該級別的系統不能運行該程序;聲明應用程序支持的解析度等。
為獲得保證正常運行的許可權,安卓應用軟體開發者需要在軟體中的AndroidManifest.xml文件中寫入確保正常運行和功能實現的所有許可權,並向安卓系統進行許可權聲明。
安卓系統讀取到安卓應用軟體的AndroidManifest.xml後會按照系統規則向該應用軟體開放所有其聲明的許可權;未向安卓系統聲明的許可權,安卓系統將不會向該應用軟體開放,應用軟體的相關功能將會受限。
例如當應用軟體需要執行調整屏幕亮度的操作時,則需要在AndroidManifest.xml寫入獲得調整屏幕亮度的許可權聲明,否則應用軟體中與調整屏幕亮度的代碼將不能被執行。
(二)安卓系統許可權授權管理的變化
1、安卓4.4之前,任意獲取模式
在安卓4.4版本之前,安卓系統對應用的授權模式可以概括為:只要在Manifest文件中聲明,開發者可以任意獲取許可權,用戶無法對許可權進行管理。
應用安裝前,安卓系統會根據許可權聲明展示許可權列表,用戶查看並同意該許可權列表後完成安裝。安裝完成後,該應用軟體就可以成功獲得所聲明的全部許可權。
安卓系統並不對許可權進行分類,也不對應用軟體開發者、應用軟體獲取許可權的必要性進行審查。用戶在安裝過程中只能選擇接受該應用聲明的全部許可權,否則就不能繼續安裝。
2、安卓4.4版本,隱藏的許可權管理模式
在安卓4.4版本中,谷歌依舊保持了應用軟體在安裝時可以任意獲取許可權的做法。但是,在安卓系統中增加了許可權管理的功能,只是該功能處於隱藏狀態,需要用戶安裝App Permission才能進行管理。
國內的部分廠商在定製自己的安卓系統的過程中將該功能加入到系統設置中。用戶可以在用戶設置中對應用軟體進行許可權管理,關閉不需要的應用許可權。
3、安卓5.0版本,明確的管理模式
在安卓5.0版本中,安卓系統增加了在應用安裝過程中對應用軟體的許可權進行選擇的功能。在應用安裝環節,系統會彈出一個可勾選的許可權設置項,用戶可以根據需要關閉應用默認獲取的許可權。用戶選擇取消的許可權,應用軟體將不會獲取。
4、安卓6.0版本,對許可權進行分類管理的模式
由於安卓6.0之前的安卓系統存在「越界獲權」的問題,為了更好地保護用戶隱私,谷歌公司在安卓6.0版本中提出了新的許可權管理機制,將許可權分為兩大類:
安卓系統對危險許可權進行了歸類,並分為不同的許可權組(Permission Group)。如果應用軟體獲取了許可權組中某一個許可權,則整個許可權組下的許可權均被授權,應用軟體可以直接調用該許可權組的許可權並實施相應行為。安卓6.0版本中的危險許可權分類如下:
5、安卓6.0之後,進一步強化許可權的授權要求
在安卓6.0版本中,應用獲得許可權組中某一個許可權後可以獲得整組的許可權,範圍仍較廣。
在安卓8.0版本中,安卓系統對此進行了調整,安卓系統將只向明確請求獲取的許可權進行授權,但對同一許可權組中且明確向系統聲明的許可權都將被自動授權,不再額外提示;若沒有請求相應的許可權,該許可權對應的操作將會失效。
谷歌公司表示,在安卓9.0版本中會細化許可權保護,針對設備感測器許可權、從Wi-Fi掃描中獲取位置信息以及獲取電話狀態等相關許可權規則進行調整,以便更好地保障用戶隱私。
2
安卓許可權獲取中的法律合規要求
(一)遵守許可權獲取的原則
對於應用軟體開發者而言,正確獲取系統許可權是運營合規的第一步,應用軟體開發者應當審慎處理獲取系統許可權的問題。《網路安全法》第41條規定:「網路運營者收集、使用個人信息,應當遵循合法、正當、必要的原則,公開收集、使用規則,明示收集、使用信息的目的、方式和範圍,並經被收集者同意」。
本條明確了網路運營者收集、使用個人信息,應當遵循合法、正當、必要的原則。雖然獲取許可權並不同於收集、使用用戶的個人信息,但是獲取許可權潛在地會影響到用戶個人信息和隱私,因此,獲取許可權也需要遵守合法、正當、必要的原則。
具體來說,(1)合法原則是指獲取許可權的過程中,需要遵守法律的規定,對於法律明確規定的需要獲得用戶同意的許可權,需要遵守法律的規定;不得通過欺騙、誘騙等方式獲取安卓系統許可權。
(2)正當原則是指應用軟體獲取安卓系統相關許可權需要具有正當目的,所獲取的許可權只能用於實現產品功能;不能將獲取的許可權使用在與產品功能無關的用途,如獲得錄音許可權後,偷錄用戶的錄音。
(3)必要原則是指獲取的許可權應當與實現產品功能有直接關聯,若未獲取該許可權,則產品功能無法實現,不能超越範圍索取與自身產品功能無關的許可權,如手電筒應用獲取讀取通訊錄的許可權。
但是,一些應用開發者在開發過程中並不注意遵守許可權獲取的合法、正當、必要原則,甚至通過惡意獲取大量非必要許可權來收集用戶個人信息,向第三方出售,甚至走上了犯罪的道路,受到了法律的懲罰。
(二)保障用戶知情同意
《網路安全法》第41條規定:「網路運營者收集、使用個人信息,應當遵循合法、正當、必要的原則,公開收集、使用規則,明示收集、使用信息的目的、方式和範圍,並經被收集者同意」。
本條明確了網路運營者在收集、使用個人信息時保障用戶知情權和同意權的義務。
網信辦發布的《移動互聯網應用程序信息服務管理規定》第七條第四項規定:「移動互聯網應用程序提供者應當依法保障用戶在安裝或使用過程中的知情權和選擇權,未向用戶明示並經用戶同意,不得開啟收集地理位置、讀取通訊錄、使用攝像頭、啟用錄音等功能,不得開啟與服務無關的功能,不得捆綁安裝無關應用程序」。
本條除了明確保障用戶的知情權和選擇權外,進一步規定了應用程序提供者在應用安裝使用過程中,對於地理位置、通訊錄、攝像頭、錄音等功能的許可權開啟應當向用戶明示並獲得用戶同意。
需要注意的是,《網路安全法》將保障用戶知情權和同意權的場景限定在收集、使用個人信息時,在理解《移動互聯網應用程序信息服務管理規定》第七條第四項規定的「保障用戶在安裝和使用過程中的知情權和選擇權」時,應當理解為對於可能涉及到收集、使用用戶個人信息的許可權,需要保障用戶的知情權和選擇權。
對於不涉及收集、使用用戶個人信息的安卓系統許可權,法律沒有禁止性要求。實踐中,一些應用開發者在獲取許可權時並未按照法律的要求保障用戶知情同意,而是想要通過便捷甚至隱瞞的方式來獲取系統許可權,嚴重損害了用戶的權益。
從安卓6.0版本後將系統許可權區分為普通許可權和危險許可權,《移動互聯網應用程序信息服務管理規定》要求獲得用戶同意的功能包括地理位置、讀取通訊錄、使用攝像頭、啟用錄音等功能,這些功能也在安卓系統劃分的危險許可權的範圍內。
筆者認為,可以參照安卓系統對危險許可權的分類進行細化要求,提高保護的標準。
因此,從合規性的角度出發,對於獲取安卓系統許可權的告知和同意也可以區分普通許可權和危險許可權採取不同的方式。
1、對危險許可權的告知和同意
對於獲取危險許可權的情況,應當遵守法律的規定,履行告知義務並取得用戶同意。在安裝過程中,系統會提示應用獲取的許可權列表,用戶可以在安裝環節對特定許可權執行開啟、提示、關閉操作。
對於不同意開啟的許可權,用戶可以對該許可權進行關閉,與該許可權相關的功能將會受到影響。在使用過程中,應用軟體的功能需要使用到危險許可權時,系統會彈出提示告知用戶。
此外,按照《移動互聯網應用程序信息服務管理規定》第七條的規定,應用軟體在獲取錄音、攝像頭、地理位置、通訊錄等許可權也需要自己彈框告知用戶獲取許可權的目的,並獲取用戶的用意。即此時需要應用軟體先彈窗告知用戶,再由安卓系統動態授權。
基於安卓系統擁有比應用軟體更高的許可權,用戶的同意權保障更多的是通過安卓系統的提示和設置來實現的。系統彈出提示告知用戶後,用戶有權進行選擇是否同意應用軟體獲取該許可權。
用戶確認同意後,應用軟體會獲得該許可權;如果用戶事後需要管理許可權的話,可以到系統設置中對應用獲取的許可權進行管理,保障用戶的同意權。
2、對普通許可權的告知
對於普通許可權,安卓系統的許可權管理機制要求應用軟體開發者在AndroidManifest.xml文件中向系統聲明,安卓系統即嚮應用軟體開放其聲明的許可權,並且系統層不會明示向用戶進行提示。
普通許可權不涉及用戶的個人信息,過多的彈窗和提示反而會增加用戶的時間成本,給用戶造成困擾,並且用戶在使用普通許可權的功能時(如調整屏幕亮度)能夠明確知曉應用軟體獲取了安卓系統的該項許可權。
因此,筆者認為對普通許可權的獲取,應用軟體可以不單獨告知用戶。
(三)《服務協議》《隱私政策》的展示
基於告知用戶,保障用戶知情同意的合規性要求,需要在應用的相關文檔中展示有關許可權的內容。這些內容可以體現在《服務協議》或《隱私政策》中,也可以通過單獨的方式告知。
用戶在首次打開應用軟體時,閃屏頁面會出現展示《服務協議》《隱私政策》的鏈接,用戶可以點擊瀏覽服務協議和隱私政策的全部內容。
《服務協議》《隱私政策》是應用軟體開發者與用戶之間訂立的格式合同。在來雲鵬訴北京四通利方信息技術有限公司服務合同糾紛二審案中,法院認為,根據我國《合同法》規定,格式合同如果不存在法律規定的無效情形,應當自始有效。
安卓應用開發完成後,應當在應用軟體安裝和使用的過程中向用戶展示《服務協議》《隱私政策》或提供查看的鏈接。《服務協議》《隱私政策》中展示的內容應當清楚明白,避免使用模糊的表述。
除此以外,應用軟體中應當完整展示《服務協議》《隱私政策》的全部內容,注意超鏈接點擊進入後的內容是否與正式版本一致。
一些應用會在形式上設置《隱私政策》的超鏈接入口,但是無法跳轉或跳轉後的內容與隱私政策無關。
在展示的方式上,在安裝環節,可以在首次啟動的閃屏也向用戶進行展示;使用過程中,可以在應用軟體的「設置-關於」界面中配置《服務協議》《隱私政策》的鏈接,供用戶點擊查看。從保障用戶知情的角度,也可以通過彈框的方式告知用戶。
(四)不得濫用獲取的許可權
在獲取安卓系統授權的相關許可權後,惡意應用會濫用獲取的許可權,給用戶個人信息帶來巨大的安全隱患。
一些惡意應用會讀取設備中的聯繫人信息、照片等,造成用戶個人信息泄露;惡意應用通過簡訊許可權,來實施吸費、惡意扣費;收集到的聯繫人信息可以用來實施網路詐騙等。
還有的情況是,惡意應用在通過實時在線讀取可以滿足功能的前提下,強制將用戶設備中的信息上傳至自己的伺服器;在信息傳輸的過程中,不採取加密措施,或者加密級別應當是易被破解的級別,增加了數據被截獲而泄露的風險。
這些都是濫用獲取的安卓許可權的表現,從保護用戶權益的角度,安卓應用應當避免濫用獲取到的許可權,做到有的放矢的獲取和使用。
3
對完善安卓應用獲取
及
使用系統許可權的建議
(一)開發者建立更加細緻的標準
獲取許可權的具體內容是由開發者決定的,正是由於開發者眾多,缺乏統一的開發者許可權獲取標準,才導致了開發者盲目獲取非必要許可權。
一些開發者在獲取安卓系統許可權時,會考慮先獲取許可權,以便後續可以有更多的選擇空間,而忽略了所獲取的許可權是否與應用的功能所必需。
要改變這種局面,需要在行業內建立起更加細緻的管理規範,包括許可權獲取的原則、獲取許可權的範圍與功能之間的必要性、獲取許可權的提示方式等建立統一的標準。
(二)統一規範手機廠商的許可權管理
各個手機廠商可以對安卓系統進行定製化開發,形成適配於自己手機的安卓系統。這個過程中,手機廠商從自己對於用戶隱私、個人信息保護和許可權使用的理解出發,會對系統許可權的管理進行調整。
所以,經常會發生同一款應用在不同品牌的手機上所能夠獲取的許可權並不相同,甚至在相同品牌但不同型號的手機上獲取到的許可權也並不相同。
應用開發者往往需要針對不同手機廠商的許可權管理內容進行適配,加大了應用開發層對許可權管理的難度,原因就是手機廠商之間沒有形成統一的許可權管理規範。
相較於應用開發者在應用層管理,手機廠商從系統許可權管理的層面建立起統一的安卓許可權管理標準具有更直接的效果。
要解決這一問題,需要各個手機廠商通過主管部門或者自律組織的方式加強溝通,建立統一的認識,達成統一的許可權管理規範。
同時,在對許可權管理進行統一規範過程中,手機廠商應當自覺維護行業公平競爭,依法維護用戶的知情權和選擇權,不得藉此實施破壞市場競爭秩序、侵犯用戶合法權益的行為。
(三)應用市場公示應用許可權
應用市場是一個可供開發者上傳應用,用戶下載應用的開放平台。應用市場可以在應用信息展示的界面提供應用軟體所獲危險許可權的列表,供用戶在下載安裝之前進行查看,實現對用戶知情權的保障。
在工信部出台的《移動智能終端應用軟體預置和分發管理暫行規定》規定,提供應用分發的網路服務提供者的義務包括,「應通過用戶提示、企業網站等方式明示所提供移動智能終端應用軟體的信息,包括名稱、功能描述、卸載方法、開發者信息、軟體安裝及運行所需許可權列表等」。
在行業中,通過可信應用商店認證的應用市場都已經做到了在具體應用的詳情頁提供應用的許可權列表,供用戶查看。
從滿足《移動智能終端應用軟體預置和分發管理暫行規定》的合規性要求的角度,應當在行業內建立起應用市場對應用許可權列表的公示要求。
具體而來,應用市場可以在應用發布過程中增加應用許可權列表作為必填內容,由應用開發者在發布應用時連同許可權列表一併進行上傳;也可以由應用市場通過技術方式掃描應用的許可權獲取列表,並自行在應用市場進行公示。
(四)用戶注意自我保護意識
鑒於安卓系統許可權獲取的流程設計,用戶始終處於信息不對稱的地位,特別是我國網民數量眾多,很多網民對應用許可權知之甚少。
因此,用戶自身在使用手機應用時,需要注意自身安全防範意識,例如需要從正規的應用市場下載應用,在下載安裝應用時注意對許可權進行管理,謹慎授權等,減少個人信息泄露的風險。
推薦閱讀:
※Why printing from your iPad or Android tablet isnt as simple as it should be
※分享幾個Android很強勢的的開源框架
※Android中Activity的生命周期
※【轉】Android Native Hook工具實踐
※LiveDataBus:Android消息匯流排的演進之路