Android獨有的安全特性:
沙箱技術:沙箱技術又稱為沙盒(Sandbox)技術,它為可能不安全的代碼提供一個運行的空間,當然這個運行空間不是我們真正的操作系統,而是利用虛擬技術提供一個與實際環境類似的操作空間,或者直接提供一個我們實際運行瀏覽器的鏡像,讓網絡上的程序可以在這個空間里隨意地運行。
Android內核層安全機制:Android的Linux內核包含了強制訪問控制機制和自主訪問控制機制。強制訪問控制機制由Linux安全模塊來實現,但Google出于某種原因,并沒有將LSM編譯進Android內核。自主訪問控制機制通常由文件訪問控制來實現,Linux文件系統的權限控制是由user、group、other與讀(r)、寫(w)、執行(x)的不同組合來實現的。這樣,每個文件都有3個基本權限集,它們的組合可以容許、限制、拒絕用戶、用戶組和其他用戶的訪問。通常,只有UID是system或Root的用戶才擁有Android系統文件的訪問權限,而應用程序只有通過申請Android權限才能實現對相應文件的訪問,也正因為如此,Android使用內核層Linux的自主訪問控制機制和運行時的Dalvik虛擬機來實現Android的沙箱機制。
Android的權限檢查機制:Android是一個“權限分離”的系統,任何一個應用程序在使用Android受限資源(網絡、電話、短信、藍牙、通訊錄、SD Card等)之前都必須以XML文件的形式事先向Android系統提出申請,等待Android系統批準后應用程序方可使用相應的資源,權限與Java的API是多對多的映射關系。
Android的數字簽名機制:所有安裝到Android系統中的應用程序都必須擁有一個數字證書,此數字證書用于標識應用程序的作者和應用程序之間的信任關系。Android系統不會安裝一個沒有數字證書的應用程序,如果一個權限的保護級別為Signature,只有當應用程序所用數字簽名與聲明此權限的應用程序所用數字簽名相同時,Android系統才會授權。如果一個權限的保護級別為Signature Or System, Android系統會將該權限授予具有相同數字簽名的應用程序或Android包類。
內核通信機制:Android中每個運行應用都是一個獨立的進程。進程間使用傳統的UNIX方式進行通信,如文件系統、Socket、信號等。為了滿足多個擁有不同權限的進程安全通信的需求,Android還使用了新的進程間通信方式。其中,Binder提供了輕量級的遠程方法調用機制,使進程內和跨進程調用的效率得到了提高。
繼承自Linux的安全機制:
用戶ID(UID):Android系統是基于Linux內核的,也繼承了Linux的基于用戶和文件權限的安全機制,并將這種機制用于管理應用程序。Linux系統可以有多個用戶,每個用戶都有一個用戶名,同時擁有一個User ID,兩者是一一對應的。每個用戶可以屬于一個或者多個組。在這種機制下,每個文件都是屬于某個用戶的,這個用戶稱為文件的所有者。文件對于所有者、所有者所在組的用戶以及其他任意用戶分別開放了不同的操作權限,操作權限分為讀、寫、運行3種,只有獲得了文件操作權限的應用才能對文件做相應的操作,這樣就保護了文件的安全性,保證用戶對自己不具備權限的文件不能進行操作。在Android應用程序安裝成功后,系統就為其指定了一個唯一的用戶名,對應著系統中唯一的UID。這個用戶名和UID實際上就是Linux中的概念。
Root權限:Root是Linux和UNIX系統中的超級管理員用戶賬戶,該賬戶擁有整個系統的最高權限,可以操作系統中的所有對象,擁有Root權限可以訪問所有文件、修改系統核心等。
回答所涉及的環境:聯想天逸510S、Windows 10。
Android獨有的安全特性:
沙箱技術:沙箱技術又稱為沙盒(Sandbox)技術,它為可能不安全的代碼提供一個運行的空間,當然這個運行空間不是我們真正的操作系統,而是利用虛擬技術提供一個與實際環境類似的操作空間,或者直接提供一個我們實際運行瀏覽器的鏡像,讓網絡上的程序可以在這個空間里隨意地運行。
Android內核層安全機制:Android的Linux內核包含了強制訪問控制機制和自主訪問控制機制。強制訪問控制機制由Linux安全模塊來實現,但Google出于某種原因,并沒有將LSM編譯進Android內核。自主訪問控制機制通常由文件訪問控制來實現,Linux文件系統的權限控制是由user、group、other與讀(r)、寫(w)、執行(x)的不同組合來實現的。這樣,每個文件都有3個基本權限集,它們的組合可以容許、限制、拒絕用戶、用戶組和其他用戶的訪問。通常,只有UID是system或Root的用戶才擁有Android系統文件的訪問權限,而應用程序只有通過申請Android權限才能實現對相應文件的訪問,也正因為如此,Android使用內核層Linux的自主訪問控制機制和運行時的Dalvik虛擬機來實現Android的沙箱機制。
Android的權限檢查機制:Android是一個“權限分離”的系統,任何一個應用程序在使用Android受限資源(網絡、電話、短信、藍牙、通訊錄、SD Card等)之前都必須以XML文件的形式事先向Android系統提出申請,等待Android系統批準后應用程序方可使用相應的資源,權限與Java的API是多對多的映射關系。
Android的數字簽名機制:所有安裝到Android系統中的應用程序都必須擁有一個數字證書,此數字證書用于標識應用程序的作者和應用程序之間的信任關系。Android系統不會安裝一個沒有數字證書的應用程序,如果一個權限的保護級別為Signature,只有當應用程序所用數字簽名與聲明此權限的應用程序所用數字簽名相同時,Android系統才會授權。如果一個權限的保護級別為Signature Or System, Android系統會將該權限授予具有相同數字簽名的應用程序或Android包類。
內核通信機制:Android中每個運行應用都是一個獨立的進程。進程間使用傳統的UNIX方式進行通信,如文件系統、Socket、信號等。為了滿足多個擁有不同權限的進程安全通信的需求,Android還使用了新的進程間通信方式。其中,Binder提供了輕量級的遠程方法調用機制,使進程內和跨進程調用的效率得到了提高。
繼承自Linux的安全機制:
用戶ID(UID):Android系統是基于Linux內核的,也繼承了Linux的基于用戶和文件權限的安全機制,并將這種機制用于管理應用程序。Linux系統可以有多個用戶,每個用戶都有一個用戶名,同時擁有一個User ID,兩者是一一對應的。每個用戶可以屬于一個或者多個組。在這種機制下,每個文件都是屬于某個用戶的,這個用戶稱為文件的所有者。文件對于所有者、所有者所在組的用戶以及其他任意用戶分別開放了不同的操作權限,操作權限分為讀、寫、運行3種,只有獲得了文件操作權限的應用才能對文件做相應的操作,這樣就保護了文件的安全性,保證用戶對自己不具備權限的文件不能進行操作。在Android應用程序安裝成功后,系統就為其指定了一個唯一的用戶名,對應著系統中唯一的UID。這個用戶名和UID實際上就是Linux中的概念。
Root權限:Root是Linux和UNIX系統中的超級管理員用戶賬戶,該賬戶擁有整個系統的最高權限,可以操作系統中的所有對象,擁有Root權限可以訪問所有文件、修改系統核心等。
回答所涉及的環境:聯想天逸510S、Windows 10。