Android CE DE加密小結

1.全盤加密
    數據在空閒的時候進行加密
    每個設備只有一個用戶可以被全盤加密進行保護
    那個用戶在做任何工作前必須登錄
    
2.文件級別加密
    使用ext4文件系統
    使用AES-256方式對文件內容進行加密
    文件名也需要進行加密
    
文件級別加密的性能要稍微好於全盤加密
f2fs文件系統用於支持nand flash


DE(device encrypted)
文件會被一個密鑰進行加密,這個密鑰僅在系統執行了可驗證的啓動後才能獲得。
在系統中,只有一個DEsys的key,有多個DEn的key對於每一個用戶

CE(credential encrypted)
文件加密使用一個和用戶認證(PIN,圖案,密碼)關聯的key,這個key只有用戶先執行了認證後才能獲取
每一個用戶擁有一個ce key

NE(none encrypted)
文件不加密,這種情況十分少見,而OTA更新文件是個例子


用戶數據佈局的變更:
    APPS:   1.默認的app的存儲必須使用ce key來保證數據安全
            2.一個app可以存取一個DE存儲空間
    
    MEDIA:  內部的共享存儲必須是使用CE進行加密的
    
    SYSTEM: 1.默認的系統存儲空間必須是使用DEsys進行加密的,以使數據遷移變得簡單
        2.系統可以訪問多個CE和DE存儲空間,以便更好地保護數據


存儲空間和key的對應關係

system存儲空間  SYSTEM
DEsys   /data/system/
        /data/misc

CE0-n   /data/system_ce/{0-n}
    /data/misc_ce/{0-n}        
        
DE0-n   /data/system_de/{0-n}
    /data/misc_de/{0-n}

media存儲空間   MEDIA
CE0-n   /data/media/{0-n}

應用存儲空間   APP
CE0-n   /data/user/{0-n}
DE0-n   /data/user_de/{0-n}


如何判斷數據應該屬於CE還是DE
    DE:
    WIFI認證,藍牙匹配碼
    鬧鐘數據
    壁紙,鈴聲

    CE:
    通訊錄
    賬戶授權密碼
    歷史瀏覽信息,地址信息
    最近任務,截屏


獲取系統存儲空間的CE,DE目錄的API
    Environment.getUserSystemDirectory    DEsys
    Environment.getUserSystemEncryptedDirectory    DE0-n
    Environment.getUserSystemCredentialEncryptedDirectory     CE0-N
    Environment.getMiscNotEncryptedDirectory

獲取應用存儲空間的CE,DE目錄的API
    應用中的上下文(Context)默認指向CE目錄,如果需要訪問DE目錄,需要使用Context.createDeviceEncryptedStorageContext函數創建指向DE目錄的上下文
    
用戶的狀態和key的獲取
    running locked: DEsys和DEn
    running unlocked: DEsys,DEn,CEn

加密敏感APP
    應用的組件可以申明encryptionAware=true,以在沒有拿到CE的key的時候也可以運行
    package會根據用戶的狀態對組件的查詢進行過濾

判斷用戶狀態的API
    當用戶進入locked state狀態的時候,會發送LOCKED_BOOT_COMPLETED
    當用戶進入unlocked state狀態的時候,BOOT_COMPLETED,USER_UNLOCKED廣播會被髮送

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章