AccountManagerデータベース格納場所

1216 ワード

          ,           ;               ,         ,
    google     ,        

先日同僚からandroid 7.0以降のAccountManagerのストレージについて質問があり、なぜceとdeの2つのディレクトリがあるのか、それぞれ何で暗号化されているのかなどの質問がありました(android 7.0が発表されたばかりの頃に調べましたが、再調査して整理する必要があります).
なぜならandroid 7.0 FBE(File-Based Encryption):異なる鍵を使用して異なるファイルを暗号化し、これらのファイルを個別に復号することができます(具体的には、ドキュメントを参照してください:https://source.android.com/security/encryption/file-based)FBEが有効になっているデバイスでは、各ユーザに2つのアプリケーションで使用可能な記憶場所があります.
  • CE(credential encryption)認証情報暗号化記憶領域:デフォルト記憶領域は、ユーザがデバイスをロック解除した後にのみ使用可能である
  • .
  • DE(device encryption)デバイス暗号化ストレージ:direct rootモードおよびユーザがデバイスをロック解除した後、
  • を使用できます.
    注意:direct rootは、現在のデバイスが起動しているが、ユーザーがデバイスをロックしていないことを示します.android Nバージョンでは、このセキュリティモードが導入されています.アプリケーションがdirect rootモードで実行するときにデータにアクセスする必要がある場合は、DEストレージを使用します.DEストレージには、デバイスが認証起動を正常に実行した後にのみ、鍵を使用して暗号化されたデータが含まれています.ダイレクトスタート(direct root)モードの公式リファレンスドキュメント:https://developer.android.com/training/articles/direct-boot.html?hl=zh-cn
    Android 7.0のAccountManagerのストレージにもこの機能が導入されています.対応するストレージの場所は次のとおりです.
  • /data/system_ce/0/accounts_ce.db
  • /data/system_de/0/accounts_de.db

  • また、android 7.0以前のバージョンの格納場所:/data/system/users/0/accounts.db