【DroidKaigi 2017】Android Security 最前線
発表者
アジェンダ
- 7.0で追加されたセキュリティに関するAPIのお話
Using Spcoped Directory Access
- Android 6.0 以前
- Manifestにpermissionを定義
- 外部ストレージ全てへのアクセスを許可
- 7.0
- アクセスしたいディレクトリのStorageVolumeを作成しリクエストを投げる
Storage Volume createAcceessIntent
- Standard Directoryは10個ほど用意されている
OpenExternalDirectoryActivity
- intentを作るときにはディレクトリーを指定する
- 指定しない場合はルートが呼ばれる
感想
Direct Bopot
- 6.0以前
- 端末が暗号化されている場合、既存の保存先は、ユーザーがロックを解除した後にだけ使用できる
- 7.0 以降
- ロック解除されていない状態では、ダイレクトブートモードをで動作する
- 端末暗号化ストレージにアクセスできる
新規API
- android:directBootAware
- コンポーネントが暗号化対応するように指定する
- android.intent.action.LOCKED_BOOT_COMPLETED
- 暗号化ストレージが使用可能になったことを通知する
- Context#createDeviceProtectedStorageContext()
- 端末暗号化ストレージにアクセスするためのContextを生成する
AndroidManifest
- BootBroadcastReceiverを定義する
BroadCast
- BOOT_COMPLETEDの通知位置が変わった
メモ
- ApplicationInfoからどこに保存されているかみることができる
感想
- 端末暗号化ストレージでは、セキュリティレベルが下がるため、何を保存するか精査が必要
- BOOT_COMPLETEの呼ばれる位置が変わったよ
Network Security Config
- 7.0
- カスタムCA証明書を信頼するための安全で簡単なAPIの提供
- デフォルトではユーザーが追加したCAを信頼しない
Manifest
- metadetaを定義するだけで使えるようになる
- カスタム証明書は
network-security-config
タグで定義する trust-ancors
は使い方が3種類ある 組み合わせて使うこともできる- アプリが持っている証明書を使用
- システムデフォルトのものを使用
- ユーザーが追加した証明書を使用
debaggable=true
- デバッグ用の証明書も定義できる
- クリアテキストの通信を禁止できる
感想
- 設定アプリからCA入れる必要がなくなって嬉しい
- 7.0以前でも使えるといいな
- 無理な話だけど
全体まとめ
- それぞれ注意ポイントはあるが、、気をつけて使えばよりセキュアなアプリが作れそう
- 各機能の動きをしっかり理解して開発しましょう