導航:首頁 > 操作系統 > android安全機制解析與應用實踐

android安全機制解析與應用實踐

發布時間:2023-02-27 21:02:33

Ⅰ 我想知道android開發必須要掌握的有哪些知識點

l 熟練運用Android下的自定義控制項。
l 熟練掌握Android系統架構,對Android的各個層次的開發有一定的認識。
l 熟練掌握android下的XML,JSON,HTML的解析,熟練掌握各種數據的存儲方式,能使用MVC獨立開發客戶端程序,熟悉安卓下的GPS定位。
l 熟悉android 的JNI 開發,通過JNI實現java與C/C++程序間的調用及回調。
l 熟練掌握UI設計、常用布局、動畫特效。熟悉安卓下的消息推送機制原理。
l 熟悉Android下的安全機制。如獲取系統最高許可權使得不能停止服務,利用守護進程保護服務不被停止,清理內存等。
l 熟悉Android下網路通信機,對Socket通信、TCP、Http有較深刻的了解和經驗。
l 熟練應用Mysql,SQLServer,及安卓下的SQLite資料庫操作及編碼。
l 熟練掌握HTML,DIV/CSS,熟悉JavaScript/Ajax/jquery能實現靜態頁面的開發。
l 了解HTML5,了解PhoneGAP框架,WebSevice。
熟練使用Eclipse/Myeclipse,CVS/SVN/GIT等開發工具, 對數據結構有深入了解,有C/C++基礎
當然你java基礎也必須要好 演算法什麼的

Ⅱ 安卓的安全機制

Android以linux操作系統內核為基礎,實現硬體設備驅動、進程和內存管理、網路協議棧、電源管理等核心系統功能。除此以外,Android還增加了一些面向移動設備的特有功能,如低內存管理LMK(Low Memory Killer)、匿名共享內存(Ashmem: Anonymous Shared Memory),以及進程間通信Binder機制。這些功能的增強進一步提升了Android在內存管理、進程間通信等方面的安全性。

Android之前的版本並不存在硬體抽象層。鑒於硬體廠商並不希望公開其設備驅動的源代碼,Google對此將Linux內核驅動程序進行封裝,屏蔽掉底層的實現細節,向上提供統一的介面,這就是硬體抽象層。



HAL(Hardware Abstraction Layer)規定了一套應用層對硬體層的讀寫和配置的統一介面,本質上是將硬體的驅動分為用戶空間和內核空間,其中內核驅動程序運行在內核空間,HAL運行在用戶空間。上圖中的Stub,以so庫的形式存在,可以理解為proxy。上層通過調用標識獲得HAL的相關Stub,進而取得相應操作。

系統運行時庫由系統類庫和Android運行時構成。系統類庫基本上用C/C++編寫,基本功能說明如下:



當然,還有Android NDK(Native Development Kit),使得應用程序可以不依賴Dalvik虛擬機進行開發。Android運行時核心庫提供android.os, android.net, android.media等核心API,而Dalvik虛擬機依賴Linux內核,實現進程隔離與線程調度管理、安全與異常管理、垃圾回收等功能,並被改進以適應低內存、低處理器速度的移動設備環境。

再往上就是應用程序框架層了。一系列的Android應用程序所需的類庫,使得開發人員可以快速地進行程序開發,也可以通過繼承實現個性化的擴展。如Activity Manager負責主線程ActivityThread的創建、Activity生命周期的維護,並為窗口提供交互的介面。

應用層就是與用戶直接交互的應用程序,如SMS簡訊、圖片瀏覽器、地圖以及開發人員所開發的應用程序。

Ⅲ 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安全機制解析與應用實踐》一書。

Ⅳ android安全沙箱機制是基於什麼

Android順其自然地繼承了Linux內核的安全機制,同時結合移動終端的具體應用特點,進行了許多有益的改進與提升。
window與unix/linux等傳統操作系統以用戶為中心,假設用戶之間是不可信的,更多考慮如何隔離不同用戶對資源(存儲區域與用戶文件,內存區域與用戶進程,底層設備等)的訪問。在Android系統中,假設應用軟體之間是不可信的,甚至用戶自行安裝的應用程序也是不可信的,因此,首先需要限制應用程序的功能,也就是將應用程序置於「沙箱」之內,實現應用程序之間的隔離,並且設定允許或拒絕API調用的許可權,控制應用程序對資源的訪問,如訪問文件,目錄,網路,感測器等。
Android擴展了Linux內核安全模型的用戶與許可權機制,將多用戶操作系統的用戶隔離機制巧妙地移植為應用程序隔離。在linux中,一個用戶標識(UID)識別一個給定用戶;在Android上,一個UID則識別一個應用程序。在安裝應用程序時向其分配UID。應用程序在設備上存續期間內,其UID保持不變。僅限用於允許或限制應用程序(而非用戶)對設備資源的訪問。如此,Android的安全機制與Linux內核的安全模型完美銜接!不同的應用程序分別屬於不同的用戶,因此,應用程序運行於自己獨立的進程空間,與UID不同的應用程序自然形成資源隔離,如此便形成了一個操作系統級別的應用程序「沙箱」。
應用程序進程之間,應用程序與操作系統之間的安全性由Linux操作系統的標准進程級安全機制實現。在默認狀態下,應用程序之間無法交互,運行在進程沙箱內的應用程序沒有被分配許可權,無法訪問系統或資源。因此,無論是直接運行於操作系統之上的應用程序,還是運行於Dalvik虛擬機的應用程序都得到同樣的安全隔離與保護,被限制在各自「沙箱」內的應用程序互不幹擾,對系統與其他應用程序的損害可降至最低。Android應用程序的「沙箱」機制如下圖,互相不具備信任關系的應用程序相互隔離,獨自運行:

在很多情況下,源自同一開發者或同一開發機構的應用程序,相互間存在信任關系。Android系統提供一種所謂共享UID(SharedUserID)機制,使具備信任關系的應用程序可以運行於同一進程空間。通常 ,這種信任關系由應用程序的數字簽名確定,並且需要應用程序在manifest文件中使用相同的UID。共享UID的應用程序進程空間

Ⅳ 什麼是android系統安全機制

所有安裝到Android系統中的應用程序都必須擁有一個數字證書,此數字證書用於標識應用程序的作者和應用程序之間的信任關系。Android系統不會安裝一個沒有數字證書的應用程序,如果一個許可權的保護級別為signature,只有當應用程序所用數字簽名與聲明此許可權的應用程序所用數字簽名相同時,Android系統才會授權。如果一個許可權的保護級別為signatureOrSystem,Android系統會將該許可權授予具有相同數字簽名的應用程序或Android包類。

Ⅵ android的安全機制有哪些

• 進程沙箱隔離機制。
• 應用程序簽名機制。
• 許可權聲明機制。
• 訪問控制機制。
• 進程通信機制。
• 內存管理機制。
• SELinux

閱讀全文

與android安全機制解析與應用實踐相關的資料

熱點內容
php論壇實訓報告 瀏覽:403
java日期字元串轉換成日期 瀏覽:135
linuxsftp連接 瀏覽:934
光伏日發電量演算法 瀏覽:125
小肚皮app怎麼才有vip 瀏覽:616
php全形轉換半形 瀏覽:927
java字元序列 瀏覽:539
杭州編譯分布式存儲區塊鏈 瀏覽:575
材料壓縮曲線 瀏覽:247
linux命令排序 瀏覽:151
手機熱點加密為啥連接不上電腦 瀏覽:979
編譯器合並計算 瀏覽:959
android音頻曲線 瀏覽:343
linuxftp自動登錄 瀏覽:802
運行編譯後網頁 瀏覽:70
閱讀app怎麼使用 瀏覽:319
centos防火牆命令 瀏覽:432
命令行變更 瀏覽:332
linux設備和驅動 瀏覽:207
加密貨幣騙局破案 瀏覽:345