Android 安全訪問機制

2021-08-27 02:13:31 字數 2214 閱讀 4587

概述:

android是乙個多程序系統,在這個系統中,應用程式(或者系統的部分)會在自己的程序中執行。系統和應用之間的安全性通過linux的facilities(工具,功能)在程序級別來強制實現的,比如會給應用程式分配user id和group id。更細化的安全特性是通過"permission"機制對特定的程序的特定的操作進行限制,而"per-uri permissions"可以對獲取特定資料的access專門許可權進行限制。 所以,應用程式之間的一般是不可以互相訪問的,但是anroid提供了一種permission機制,用於應用程式之間資料和功能的安全訪問。

一 . 安全架構

android安全架構中乙個中心思想就是:應用程式在預設的情況下不可以執行任何對其他應用程式,系統或者使用者帶來負面影響的操作。這包括讀或寫使用者的私有資料(如聯絡人資料或email資料),讀或寫另乙個應用程式的檔案,網路連線,保持裝置處於非睡眠狀態。

乙個應用程式的程序就是乙個安全的沙盒。它不能干擾其它應用程式,除非顯式地宣告了「permissions」,以便它能夠獲取基本沙盒所不具備的額外的能力。它請求的這些許可權「permissions」可以被各種各樣的操作處理,如自動允許該許可權或者通過使用者提示或者證書來禁止該許可權。應用程式 需要的那些「permissions」是靜態的在程式中宣告,所以他們會在程式安裝時被知曉,並不會再改變。

所有的android應用程式(。apk檔案)必須用證書進行簽名認證,而這個證書的私鑰是由開發者保有的。該證書可以用以識別應用程式的作者。該證書也不需要ca簽名認證(注:ca就是乙個第三方的證書認證機構,如verisign等)。android應用程式允許而且一般也都是使用self- signed證書(即自簽名證書)。證書是用於在應用程式之間建立信任關係,而不是用於控制程式是否可以安裝。簽名影響安全性的最重要的方式是通過決定誰可以進入基於簽名的permisssions,以及誰可以share 使用者ids。

二. 使用者ids和檔案訪問

每乙個android應用程式(。apk檔案)都會在安裝時就分配乙個獨有的linux使用者id,這就為它建立了乙個沙盒,使其不能與其他應用程式進行接觸(也不會讓其它應用程式接觸它)。這個使用者id會在安裝時分配給它,並在該裝置上一直保持同乙個數值。

由於安全性限制措施是發生在程序級,所以兩個package中的**不會執行在同乙個程序當中,他們要作為不同的linux使用者出現。我們可以通過 使用androidmanifest。xml檔案中的manifest標籤中的shareduserid屬性,來使不同的package共用同乙個使用者 id。通過這種方式,這兩個package就會被認為是同乙個應用程式,擁有同乙個使用者id(實際不一定),並且擁有同樣的檔案訪問許可權。注意:為了保持安全,只有當兩個應用程式被同乙個簽名簽署的時候(並且請求了同乙個shareduserid)才會被分配同樣的使用者id。

所有儲存在應用程式中的資料都會賦予乙個屬性——該應用程式的使用者id,這使得其他package無法訪問這些資料。當通過這些方法getsharedpreferences(string, int),openfileoutput(string, int)或者 openorcreatedatabase(string, int, sqlitedatabase.curso***ctory)來建立乙個新檔案時,你可以通過使用mode_world_readable and/or mode_world_writeable標誌位來設定是否允許其他package來訪問讀寫這個檔案。當設定這些標誌位時,該檔案仍然屬於該應用程式, 但是它的global read and/or write許可權已經被設定,使得它對於其他任何應用程式都是可見的。

例如:apk a 和apk b 都是c公司的產品,那麼如果使用者從apk a中登陸成功。那麼開啟apk b的時候就不用再次登陸。 具體實現就是a和b設定成同乙個user id:

packagename apk a的androidmanifest:

packagename apk a的androidmanifest:

這個"com.c" 就是user id。 apk b就可以像開啟本地資料庫那樣開啟apk a中的資料庫了。apk a把登陸資訊存放在a的資料目錄下面。apk b每次啟動的時候讀取apk a下面的資料庫判斷是否已經登陸:

apk b中通過a的package name 就可以得到a的 packagecontext:

friendcontext = this.createpackagecontext( "com.android.demo.a1", context,context_ignore_security);

android安全機制

andoid簽名作用 自簽名模式 android protectionlevel signature android shareduserid x 共享資源 data data package android中兩個apk share相同的uid必須其簽名作用的private key一樣。androi...

Android安全機制

android安全機制有以下五點 1.安全機制 混淆proguard 通過 混淆來防止別人反編譯自己的apk 2.應用接入許可權控制 androidmenifest.xml檔案許可權宣告,許可權檢查 android應用程式想要使用受限的資源時都需要向系統宣告所需要的許可權,3.應用簽名機制 數字證書...

Android安全機制(三)

證書的頒發者和被頒發者都是自己,實際上是用證書裡公鑰字段的值對應的私鑰來進行簽名的,也就是將證書內容進行hash後拿證書擁有者的私鑰進行加密 簽名的過程 對於系統而言,要鑑別是否可信任,首先需要有簽名和證書。然後往上回溯,直到根證書,如果是在系統信任列表裡的,那就是可信任的。人為的把一些操作歸類,當...