當前位置:編程學習大全網 - 源碼下載 - android系統怎樣實現訪問控制策略

android系統怎樣實現訪問控制策略

 第壹類風險是濫用應用程序權限。關於這類風險有如下防範策略建議。

應用程序認證

認證是防範惡意程序的有效手段之壹。在理想狀態下,壹個應用程序在認證之前必須經過完整的測試與代碼審查,確認其權限使用的合理性,這自然對惡意軟件起到了有力的防範作用。但是,認證的費用高昂,程序復雜,並不具備廣泛的實用性。

選擇使用應用程序權限

如果能夠在安裝階段,確認某壹應用程序僅使用必需的最小權限,也就是遵循最小權限原則,則受到惡意軟件攻擊的可能性必將大大降低!對於有經驗的用戶這也許是壹種選擇,但對於廣大的普通用戶,恐怕沒人懂得如何驗證應用程序要求的權限是否合理,在多數情況下用戶會直接授予所要求的權限。因此需要開發者在申請或設定權限時,嚴格遵循最小權限原則。

自動靜態分析與代碼驗證

設計壹種自動分析應用程序特性的工具,分析應用程序的功能以及不同應用程序之間的差別,以判斷其合法性。

第二類風險是攻擊Linux內核與系統庫函數的漏洞。目前,針對這種風險,采用更嚴格的訪問控制機制,第6章介紹的限制操作系統用戶權限的SE Android,是壹種實際且有效的選擇。最危險的攻擊就是利用系統漏洞獲取根用戶或超級用戶權限,進而控制整個系統。SE Android恰好通過控制根用戶或超級用戶權限實現對安全性的增強,即使攻擊者獲取了根用戶權限,但可能的危害範圍不至於無限擴大。但是,某些系統命令由於正常使用的需要,可能無法完全禁用,攻擊者如果恰好獲得該類命令的使用權,則SE Android的功能就十分有限了。

第三類風險是破壞私有數據的可用性、數據隱私性以及完好性。可以采取以下策略進行防範。

登錄

使用登錄用戶口令解鎖移動設備的某些功能,以防止安全威脅。這是壹種常見的有效方式,尤其是用於保護隱私數據信息。但是,當設備遺失時,如果尚未使用口令解鎖設備,則保護作用存在;如果解鎖之後才遺失設備,則口令保護完全無效。

防火墻

防火墻可以保障用戶私有信息不會經由網絡連接被泄露。通常,對網絡連接傳輸的內容使用無狀態或有狀態的分析,可以發現是否有私密信息正被泄露,因此可以切斷傳輸線路。由於防火墻工作在操作系統內核中,因此無法直接為外部攻擊所侵害。同時防火墻可以與SE Android提供的訪問控制機制協同工作,提供更高級別的保護。但是,惡意軟件並非只能通過網絡接口泄露隱私信息。比如,通過短信/彩信的發送,防火墻就無作用了。

數據加密

數據加密是保護隱私數據的最佳手段。由於只有信息所有者才有密鑰,因此即使設備失竊,隱私信息的安全仍然得到保障。

上下文敏感的訪問控制(CAAC,Context Aware Access Control)

CAAC可以根據設備使用的內部與周邊環境決定訪問權限,比如設備使用的地點、所登錄的移動網絡、是否連接Wi-Fi等。但是,如果攻擊恰好發生在允許訪問的環境下,則此類方式無效。

遠程管理

從安全角度,遠程管理能力是必須嚴格限制使用的。但是,與防火墻、CAAC機制相結合,遠程管理實際可以提升安全性。例如,設備遺失後,可以通過遠程管理機制開啟防護機制,保護數據安全。即使在日常使用中,遠程管理也可能發現肆虐移動網絡的蠕蟲,通過啟動防火墻等機制限制蠕蟲的活動。但是,所有的遠程管理都需要在受到攻擊的過程中,或受到攻擊之前有人為參與,而且需要耗費設備的資源,以及遠程管理的人力資源等,費用不菲。

第四類風險是耗盡系統資源,可以采取如下的防範手段。

資源管理

系統資源管理的安全方案可以進壹步降低耗盡系統資源類風險的危害。其機制是公平分配每個應用程序所需的系統資源。當然,可以根據應用程序的重要性與對資源的需求情況加以分配。比如,電話應用程序非常重要,因此需要得到更多的CPU時間。如果CPU時間、存儲空間限額、網絡與磁盤輸入輸出限流,則“拒絕服務”類型的攻擊可被避免。但是,高效實現此類機制仍然十分困難,因此應用較少。

入侵檢測/防護系統

基於宿主(host)的入侵檢測系統可以通過資源使用的異常情況,檢測各種耗盡電池、內存與CPU時間的惡意軟件。但是,高級的惡意軟件通常偽裝為正常軟件,不易檢測。

第五類風險是入侵專用網絡連接。建議采用如下的防範策略。

虛擬專網(VPN)

虛擬專網使用成熟的信息認證碼與加密,保護通信的安全,可以防止針對網絡的攻擊。

遠程管理

壹個集中式的遠程管理中心可以增強安全保護能力,但遠程管理中心的人為因素可能成為另類的安全隱患。

上下文敏感的訪問控制(CAAC)

在內網或虛擬專網的環境下,結合CAAC的機制,可以更好地保護數據安全。比如,當檢測到外網環境時,適時啟動數據傳輸加密機制等。

以上均為宏觀上采取的防範策略,就實施細節而言,重要的是開發者需具備基本的安全意識,充分認識到安全性也是軟件開發周期的壹個重要環節,編寫安全的代碼是開發者所必須具備的壹項職業技能。雖然不可能確保所編寫的代碼100%安全,但也要盡可能地使用戶對Android系統和應用程序放心。

具體而言,無論是系統工程師還是應用工程師,在Android平臺上致力於實現功能的同時,應更深入地理解所編寫的應用程序將如何與Android系統或其他應用程序安全地交互;如何安全地存儲數據到SQLite;如何保護用戶數據尤其是敏感數據的安全,避免惡意軟件的攻擊;如何處理有限的內存、電池電量;如何充分理解權限機制,使用戶清楚應用程序需要哪些權限。所有的這些都是開發流程中必不可少的部分。

本文節選自《Android安全機制解析與應用實踐》壹書。

  • 上一篇:如何把手機錄音做成視頻?
  • 下一篇:什麽是ISCSI電子通信協議?
  • copyright 2024編程學習大全網