android4.4使用device-mapper-verity(dm-verity)提供啓動驗證,對透明的設備提供完整性檢查其特性是在瀏覽到設備模塊的同時看到是否存在一些文件或者程序,並其肯定是否符合預期的配置。linux
使用的是加密哈希樹,每一塊都有一個SHA256哈希android
只須要保證頂級的根節點哈希可信算法
引導分析的公共密鑰必須通過OEM驗證,用來驗證簽名的哈希以確認設備的系統分區是否被篡改shell
使用dm-crypt、使用隨機生成的AES CBC模式的128位的密鑰緩存
每個單元會被非順序訪問,使得每一個扇區都要有獨立的IV安全
安卓對每一個扇區加密是用加鹽向量初始化(ESSIV),使用SHA256算法進行哈希ESSIV:SHA256,從而生成每一個扇區的IVapp
IV(SN)=AESs(SN),其中s=SHA256(K),K爲用散列算法加密的二次密鑰s密鑰K,SN爲扇區號dom
因爲ESSIV不改變CBC的延展性,也不能保證加密塊的完整性,所以攻擊者仍可經過磁盤上的密鑰明文對加密磁盤進行攻擊。編碼
磁盤加密密鑰經過與另外一個128位的AES密鑰加密,由用戶提供的密碼衍生出來的。加密
使用PBKDF2和128位隨機鹽值做爲密鑰導出方式,將獲得的master ley和鹽值存儲到磁盤上,佔整個分區的最後16KB,被稱爲加密頁腳。
滑動解鎖、密碼鎖、PIN鎖、圖形鎖
全部的屏幕鎖密碼存儲在/data/system/gesture.key
具體加密代碼LockSettingsService中的patternToHash
能夠嘗試用字典與該密碼對比從而得出答案,可是咱們也能夠直接用adb命令刪除掉對應文件。此時,系統將認爲不存在密碼
rm /data/system/gesture.key
這是針對root過的系統,若是沒有root權限,咱們能夠在recovery模式下清除掉全部系統中的數據也能刪除掉屏幕鎖。若是沒有打開usb調試模式的設備,則沒法使用adb shell模式,也就沒法解除屏幕鎖。
相似屏幕鎖,也只須要將/data/system/gesture.key文件刪除
相對以上兩種方式比較安全,可是密碼忘記後難以查詢,輸入錯誤到必定次數會銷燬SIM卡
ADB Server 、ADB Deamon、ADB Command-line。
android客戶端是經過TCP協議保持與ADB Server進行會話,一般爲localhost:5037
私鑰文件adbkey--存在主機上,是標準的OpenSSL PEM格式
公鑰文件adbkey.pub--包含公鑰基礎64編碼標準RSA PUBLIC KEY結構
SELinux組成部分:對象管理器(OM)、訪問權限緩存(AVC)、安全服務和安全策略
SEAndroid是一種基於安全策略的強制訪問控制容許加載新的訪問控制模塊(MAC)安全機制。
傳統Linux的不足:
存在特權用戶root
對於文件的訪問權劃分不夠細
SUID程序的權限升級
DAC問題
SELinux特色:
MAC對訪問的控制強制化
TE對於進程只賦予最小權限
domain遷移、防止權限升級
RBAC對用戶只賦予最小權限
SELinux運行模式:
SELinux經過MAC的方式來控管程序,控制的主體是程序,而目標是文件
SEAndriod主要採用了兩種強制訪問方法:TE(對於進程只賦予最小權限)、MLS(多等級權限安全)
SEAndroid的上下文由四個組成部分user、role、type、sensitivity。即爲身份識別、角色、安全類型、安全等級(其中最重要的是安全類型,全部policy都圍繞安全類型展開)
SEAndroid中user爲u、role有兩個爲r和object_r。關於安全上下文配置的核心文件主要是file_contexts
文件、seapp_contexts文件和ocontexts文件。多等級安全的安全等級分爲s0~sn,s0爲最低。
3中模式:Enforcing(強制模式)、Permissive(寬容模式)、Disable(關閉模式)