Android安全機制(三)

2021-07-15 18:56:31 字數 2385 閱讀 2150

證書的頒發者和被頒發者都是自己,實際上是用證書裡公鑰字段的值對應的私鑰來進行簽名的,也就是將證書內容進行hash後拿證書擁有者的私鑰進行加密(簽名的過程)。

對於系統而言,要鑑別是否可信任,首先需要有簽名和證書。然後往上回溯,直到根證書,如果是在系統信任列表裡的,那就是可信任的。

人為的把一些操作歸類,當使用者調使用的應用呼叫這些操作的api時,系統表現得不一樣。比如不可信任的應用,當呼叫簡訊功能時,發簡訊之前系統會彈窗讓使用者確認是否確定要傳送訊息,使用者體驗會很差。

比如android平台中,可以在androidmanifest檔案中對許可權進行申請:

是否被批准由平台決策來決定。例如以上的網路請求許可權肯定會被批准,只要使用者安裝應用的時候接受了,應用就能正常訪問網路。

但是例如reset(重啟手機)這種許可權,平台不會批准,只會批給原生的一些應用。

應用在簽名的時候是把androidmanifest檔案、src檔案全部作為乙個整體進行簽名的,所以一旦簽名後再去修改許可權申請,和公鑰解密後的內容是對不上的。

一些特權許可權,必須要用系統的私鑰去簽名才能在安裝的時候通過,所以只有系統內建的應用才能使用特權許可權,而我們普通開發的應用因為沒有系統的私鑰,只有自己的私鑰,當然也不能通過了。

android是自簽名的,也就是證書是自己頒發給自己的,並不是受信任ca頒發的,沒有辦法確定證書的可信任性。

主要是做完整性的鑑別,防止內容被篡改。

因為並沒有可信任的模式,所以在安裝和執行時無法對是否可信任做限制。

僅僅是在安裝的時候對簽名進行驗證。執行時不會再驗證簽名!

同乙個開發商開發的多個應用,為了方便相互資料訪問,設定同乙個shareduserid。

公升級應用,新的應用必須和老的應用id一樣,也就是包名一樣,同時證書也要一樣。

apk檔案實際上就是壓縮包,用普通解壓軟體解壓以後得到如下介面:

開啟meta-inf資料夾,裡面有3個檔案:

前面解壓apk的時候有個res目錄,這裡把res目錄下的所有資源檔案都進行了sha1的計算得到hash值,即sha1-digest

第二行的sha1-digest-manifest: i19xvr6tirlrwiv4czgwdvqvvne=   ,其實是對manifest的內容進行是sha1計算所得到的hash值。

下面是對manifest中每一項,即name:後面的內容+sha1-digest:後面的內容,整體進行sha1計算又得到了很多個hash值。

這裡的內容既包括證書內容也包括簽名。

首先對cert.sf裡的所有內容進行sha1計算得到hash值,再把這個hash值用私鑰進行rsa加密得到簽名。

申請的許可權一般與某個操作關聯。

必須在androidmanifest檔案中申請許可權。

使用者可以在應用管理裡檢視應用所申請的許可權,不可控是指使用者在安裝應用的時候要麼全盤接受許可權,只要有乙個不接受就安裝不了。

用系統的私鑰來簽名,從而對特權許可權的單獨控制。

android :protectionlevel=「 」;

normal是常規的,dangerous是敏感的,在安裝應用的時候會提示。

signature:當應用是第三方應用時,必須要是應用開發者的私鑰簽名才能申請使用;當應用是系統內建應用時,必須是系統平台的私鑰簽名才能申請使用。

signatureorsystem:滿足signature或者系統級別的。 

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 安全訪問機制

概述 android是乙個多程序系統,在這個系統中,應用程式 或者系統的部分 會在自己的程序中執行。系統和應用之間的安全性通過linux的facilities 工具,功能 在程序級別來強制實現的,比如會給應用程式分配user id和group id。更細化的安全特性是通過 permission 機制...