Android セキュリティ機能

このセクションで説明する機能を使用すると、開発した Android デバイスを可能な限り安全にできます。

アプリ サンドボックス

Android プラットフォームでは、アプリのリソースの識別と隔離のために Linux ユーザーベースの保護を利用しています。これを行うために、Android は各 Android アプリに固有のユーザー ID(UID)を割り当て、独自のプロセスで実行します。Android では、この UID を使用してカーネルレベルのアプリ サンドボックスを設定します。

アプリの署名

アプリに署名することで、デベロッパーは複雑なインターフェースや権限を作成しなくてもアプリの作成者を特定し、アプリを更新できます。Android プラットフォームで実行されるすべてのアプリには、デベロッパーによる署名が必要です。

認証

Android では、暗号鍵、サービス プロバイダ、ユーザー認証システムを必要とするユーザー認証依存型の暗号鍵の概念が使用されます。

指紋認証センサーを備えたデバイスでは、ユーザーが 1 つ以上の指紋を登録してデバイスのロック解除などの操作に使用できます。ゲートキーパー サブシステムは、高信頼実行環境(TEE)でデバイスのパターン認証またはパスワード認証を実行します。

Android 9 以降には Protected の確認機能があり、ユーザーは支払いなどの重要な取引を正式に確認できます。

生体認証システム

Android 9 以降には BiometricPrompt API が含まれています。アプリ デベロッパーはこれによりデバイスやモダリティに依存しない形で生体認証をアプリに統合できます。BiometricPrompt と統合できるのは強力な生体認証のみです。

暗号化

デバイスが暗号化されると、ユーザーが作成したすべてのデータはディスクにコミットされる前に自動的に暗号化され、すべての読み取りで呼び出しプロセスに戻す前にデータが自動的に復号されます。暗号化することにより、不正な第三者がデータにアクセスしようとしてもデータを読み取ることができません。

キーストア

Android ではハードウェア式のキーストアを利用できます。これにより、キーの生成、非対称鍵のエクスポート、未加工の対称鍵のインポート、所定のパディング モードによる非対称の暗号化と復号などができます。

Security-Enhanced Linux

Android では、Android セキュリティ モデルの一環として、Security-Enhanced Linux(SELinux)を使用し、root やスーパーユーザー権限(Linux 機能)で実行されるプロセスを含むすべてのプロセスに強制アクセス制御(MAC)を適用しています。

Trusty の高信頼実行環境(TEE)

Trusty は、Android 用の Trusted Execution Environment(TEE)を実現するセキュアなオペレーティング システム(OS)です。Trusty OS は、Android OS と同じプロセッサ上で稼働しますが、ハードウェア レベルとソフトウェア レベルの両方で、システム内の残りの部分から分離されます。

確認付きブート

確認付きブートは、攻撃者が作成したコードや破損したコードではなく、信頼できる提供元(通常はデバイスの OEM)のコードを確実に実行するための機能です。ハードウェアで保護されたルート オブ トラストからブートローダーにいたるまでのすべての部分に対する信頼が、ブート パーティションやその他の確認済みのパーティションについて確立されます。