Android セキュリティ機能

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

アプリ サンドボックス

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

アプリの署名

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

認証

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

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

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

生体認証システム

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

暗号化

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

キーストア

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

Security Enhanced Linux

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

Trusty の Trusted Execution Environment(TEE)

Trusty は、安全なオペレーティング システム(OS)であり、Android に Trusted Execution Environment(TEE)を提供します。Trusty OS は Android OS と同じプロセッサで実行されますが、Trusty はハードウェアとソフトウェアの両方を介して、システムの他の部分から分離されています。

確認済みの起動

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