Androidデバイスを保護する

Android には業界をリードするセキュリティ機能が組み込まれており、開発者やデバイスの実装者と協力して、Android プラットフォームとエコシステムを安全に保ちます。 Android プラットフォーム上およびその周辺に構築され、クラウド サービスによってサポートされるアプリとデバイスの活発なエコシステムを実現するには、堅牢なセキュリティ モデルが不可欠です。その結果、開発ライフサイクル全体を通じて、Android は厳格なセキュリティ プログラムの対象となっています。

Android はオープンに設計されています。 Android アプリは、プラットフォームを通じて公開される高度なハードウェアとソフトウェア、およびローカル データと提供データを使用して、革新と価値を消費者にもたらします。その価値を実現するために、このプラットフォームは、ユーザー、データ、アプリ、デバイス、およびネットワークの機密性、整合性、および可用性を保護するアプリ環境を提供します。

オープン プラットフォームを保護するには、強力なセキュリティ アーキテクチャと厳格なセキュリティ プログラムが必要です。 Android は、プラットフォームのすべてのユーザーを保護しながら、オープン プラットフォームをサポートするのに十分な柔軟性を備えた多層セキュリティで設計されています。セキュリティの問題と更新プロセスの報告については、セキュリティ更新プログラムとリソースを参照してください。

Android は開発者向けに設計されています。セキュリティ制御は、開発者の負担を軽減するように設計されています。セキュリティに精通した開発者は、柔軟なセキュリティ制御を簡単に使用して信頼することができます。セキュリティに慣れていない開発者は、安全なデフォルトによって保護されています。

Android は、構築するための安定したプラットフォームを提供するだけでなく、さまざまな方法で開発者に追加のサポートを提供します。 Android セキュリティ チームは、アプリの潜在的な脆弱性を探し、それらの問題を修正する方法を提案します。 Google Play を搭載したデバイスの場合、Play サービスは、アプリの通信を保護するために使用される OpenSSL などの重要なソフトウェア ライブラリのセキュリティ アップデートを配信します。 Android セキュリティは、SSL をテストするためのツール ( nogotofail ) をリリースしました。これは、開発しているプラ​​ットフォームに関係なく、開発者が潜在的なセキュリティ問題を見つけるのに役立ちます。

Android アプリ開発者向けの詳細情報については、 developer.android.comをご覧ください。

Android はユーザー向けに設計されています。ユーザーは、各アプリによって要求されたアクセス許可を確認し、それらのアクセス許可を制御できます。この設計には、デバイス ユーザーにマルウェアをインストールするよう説得するソーシャル エンジニアリング攻撃や、Android 上のサードパーティ アプリに対する攻撃など、攻撃者が一般的な攻撃を実行しようとすることが想定されています。 Android は、これらの攻撃の可能性を減らし、攻撃が成功した場合の影響を大幅に制限するように設計されています。 Android のセキュリティは、デバイスがユーザーの手に渡った後も進歩を続けています。 Android は、パートナーや一般ユーザーと協力して、引き続きセキュリティ アップデートを受信するすべての Android デバイスにパッチを提供します。

エンド ユーザー向けの詳細情報については、 Nexus ヘルプセンターPixel ヘルプセンター、またはデバイス メーカーのヘルプセンターをご覧ください。

このページでは、Android セキュリティ プログラムの目標を概説し、Android セキュリティ アーキテクチャの基礎について説明し、システム アーキテクトとセキュリティ アナリストにとって最も重要な質問に回答します。 Android のコア プラットフォームのセキュリティ機能に焦点を当てており、ブラウザや SMS アプリに関連するものなど、特定のアプリに固有のセキュリティ問題については説明していません。

バックグラウンド

Android は、モバイル デバイス用のオープン ソース プラットフォームとアプリ環境を提供します。

以下のセクションとページでは、Android プラットフォームのセキュリティ機能について説明します。図 1 は、Android ソフトウェア スタックのさまざまなレベルのセキュリティ コンポーネントと考慮事項を示しています。各コンポーネントは、以下のコンポーネントが適切に保護されていることを前提としています。ルートとして実行される少量の Android OS コードを除いて、Linux カーネルより上のすべてのコードはアプリケーション サンドボックスによって制限されます。

図 1: Android ソフトウェア スタック

図 1. Android ソフトウェア スタック

主な Android プラットフォームの構成要素は次のとおりです。

  • デバイス ハードウェア: Android は、携帯電話、タブレット、時計、自動車、スマート TV、OTT ゲーム ボックス、セットトップ ボックスなど、さまざまなハードウェア構成で動作します。 Android はプロセッサに依存しませんが、ARM eXecute-Never などのハードウェア固有のセキュリティ機能を利用しています。
  • Android オペレーティング システム:コア オペレーティング システムは、Linux カーネルの上に構築されています。カメラ機能、GPS データ、Bluetooth 機能、テレフォニー機能、ネットワーク接続などのすべてのデバイス リソースには、オペレーティング システムを介してアクセスします。
  • Android アプリケーション ランタイム: Android アプリはほとんどの場合、Java プログラミング言語で記述され、Android ランタイム (ART) で実行されます。ただし、コア Android サービスやアプリを含む多くのアプリは、ネイティブ アプリであるか、ネイティブ ライブラリを含んでいます。 ART とネイティブ アプリの両方が、アプリケーション サンドボックス内に含まれる同じセキュリティ環境内で実行されます。アプリは、データベースや生ファイルなどのプライベート データを書き込むことができるファイル システムの専用部分を取得します。

Android アプリは、コア Android オペレーティング システムを拡張します。アプリには 2 つの主要なソースがあります。

  • プリインストールされたアプリ: Android には、電話、メール、カレンダー、Web ブラウザー、連絡先など、一連のプリインストールされたアプリが含まれています。これらはユーザー アプリとして機能し、他のアプリからアクセスできる主要なデバイス機能を提供します。プレインストールされたアプリは、オープン ソースの Android プラットフォームの一部である場合もあれば、特定のデバイス用にデバイス メーカーによって開発された場合もあります。
  • ユーザーがインストールしたアプリ: Android は、あらゆるサードパーティ アプリをサポートするオープンな開発環境を提供します。 Google Play では、何十万ものアプリをユーザーに提供しています。

Google セキュリティ サービス

Google は、互換性のある Android デバイスとGoogle モバイル サービスで利用できる一連のクラウドベースのサービスを提供しています。これらのサービスは Android オープン ソース プロジェクト (AOSP) の一部ではありませんが、多くの Android デバイスに含まれています。これらのサービスの詳細については、Android Security の2018 Year in Reviewを参照してください。

主な Google セキュリティ サービスは次のとおりです。

  • Google Play: Google Play は、ユーザーが Android デバイスまたは Web からアプリを検索、インストール、および購入できるサービスの集まりです。 Google Play を使用すると、開発者は Android ユーザーや見込み顧客に簡単にリーチできます。 Google Play では、コミュニティ レビュー、アプリライセンスの確認、アプリのセキュリティ スキャン、その他のセキュリティ サービスも提供しています。
  • Android 更新: Android 更新サービスは、Web または無線 (OTA) を介した更新を含む、選択した Android デバイスに新しい機能とセキュリティ更新を提供します。
  • アプリ サービス: Android アプリが (バックアップ) アプリ データと設定、クラウドからデバイスへのメッセージング ( C2DM ) などのクラウド機能をプッシュ メッセージングに使用できるようにするフレームワーク。
  • アプリの検証:有害なアプリのインストールを警告または自動的にブロックし、デバイス上のアプリを継続的にスキャンして、有害なアプリについて警告または削除します。
  • SafetyNet: Google の追跡を支援し、既知のセキュリティの脅威を軽減し、新しいセキュリティの脅威を特定する、プライバシーを保護する侵入検知システム。
  • SafetyNet Attestation:デバイスが CTS と互換性があるかどうかを判断するためのサードパーティ API。 Attestationは、アプリ サーバーと通信している Android アプリを識別することもできます。
  • Android デバイス マネージャー:紛失または盗難にあったデバイスを見つけるためのWeb アプリAndroid アプリ

セキュリティ プログラムの概要

Android セキュリティ プログラムの主なコンポーネントは次のとおりです。

  • 設計レビュー: Android のセキュリティ プロセスは、開発ライフサイクルの早い段階で、構成可能な豊富なセキュリティ モデルと設計を作成することから始まります。プラットフォームの各主要機能は、システムのアーキテクチャに統合された適切なセキュリティ制御を使用して、エンジニアリングおよびセキュリティ リソースによってレビューされます。
  • 侵入テストとコード レビュー:プラットフォームの開発中、Android で作成されたオープン ソース コンポーネントは、厳格なセキュリティ レビューの対象となります。これらのレビューは、Android セキュリティ チーム、Google の情報セキュリティ エンジニアリング チーム、および独立したセキュリティ コンサルタントによって実施されます。これらのレビューの目的は、メジャー リリースのかなり前に弱点と潜在的な脆弱性を特定し、リリース時に外部のセキュリティ専門家によって実行される分析の種類をシミュレートすることです。
  • オープン ソースとコミュニティ レビュー: AOSP は、関係者による広範なセキュリティ レビューを可能にします。 Android は、Linux カーネルなど、外部の重大なセキュリティ レビューを受けたオープン ソース テクノロジーも使用しています。 Google Play は、ユーザーや企業が特定のアプリに関する情報をユーザーに直接提供するためのフォーラムを提供します。
  • インシデント対応:これらの予防策を講じても、出荷後にセキュリティの問題が発生する可能性があるため、Android プロジェクトは包括的なセキュリティ対応プロセスを作成しました。フルタイムの Android セキュリティ チーム メンバーは、Android 固有および一般的なセキュリティ コミュニティを監視して、潜在的な脆弱性について議論し、Android バグ データベースに登録されたセキュリティ バグを確認します。正当な問題が発見された場合、Android チームには対応プロセスがあり、脆弱性を迅速に緩和して、すべての Android ユーザーに対する潜在的なリスクを最小限に抑えることができます。これらのクラウド対応の応答には、Android プラットフォームの更新 (AOSP 更新)、Google Play からのアプリの削除、現場のデバイスからのアプリの削除が含まれます。
  • 毎月のセキュリティ アップデート: Android セキュリティ チームは、Google Android デバイスとすべてのデバイス製造パートナーに毎月アップデートを提供します。

プラットフォームのセキュリティ アーキテクチャ

Android は、従来のオペレーティング システムのセキュリティ制御を次のように転用することで、モバイル プラットフォーム向けの最も安全で使いやすいオペレーティング システムを目指しています。

  • アプリとユーザー データを保護する
  • システム リソース (ネットワークを含む) を保護する
  • システム、他のアプリ、およびユーザーからアプリを分離する

これらの目的を達成するために、Android は次の主要なセキュリティ機能を提供します。

  • Linux カーネルによる OS レベルでの堅牢なセキュリティ
  • すべてのアプリに必須のアプリ サンドボックス
  • 安全なプロセス間通信
  • アプリ署名
  • アプリ定義およびユーザー付与のアクセス許可