Google I/O では、Android Q がもたらす改善点について学びました。 新しいセキュリティとプライバシーの機能と改善点が、新しい Android OS に随所に盛り込まれています。
Android OS の各新しいバージョンでは、デザイン、機能、API など、ほぼすべての側面が改善されています。 今月初めの Google I/O で、私たちはすべてのことについて学びました。 Android Q の改良点 もちろん、プライバシーとセキュリティに関する新しい発表もカンファレンスから除外されませんでした。 プラットフォームのセキュリティは、特にポケットに入れてどこにでも持ち歩く OS にとって、OS の最も重要な側面の 1 つです。 Android が安全でない場合、私たちは Android の半分の機能を信頼できないでしょう。 NFC 支払いは問題外であり、ファイル共有はよく言っても疑わしいものであり、他のデバイスに接続することはまったくの狂気でしょう。 バージョンの断片化という長年の問題にもかかわらず、Google はセキュリティ上の問題の数を最小限に抑えるために非常にうまくやっています。
Android は、機能が豊富で安全性の高い OS に成熟しました。 しかし、もちろん、常に改善の余地があります。 このセキュリティには多くの要因が寄与しており、そのうちのいくつかは Android Q で何らかの方法で改善されています。
暗号化
最も基本的なセキュリティ方法の 1 つであるため、すべてのデバイスが強力な暗号化をサポートしていることが重要です。 最近の多くの OEM は、専用の暗号化ハードウェアを搭載したデバイスを出荷しています。 これは有益ではありますが、費用もかかります。 そのため、専用ハードウェアは通常、中層から高層のデバイスに制限されています。 これはローエンドデバイスがそうであるということではありません できない 暗号化をサポートしていますが、ハードウェアによる高速暗号化を使用しないと、読み取り/書き込み時間が遅くなり、全体的なユーザー エクスペリエンスが低下します。 そこで登場するのがアジアンタムです。
アジアンタム
2月にGoogleは代替手段としてAdiantumを発表した ローエンド電話用の暗号化アルゴリズム 通常の AES 命令セットをサポートしていません。 Adiantum は、専用のハードウェアなしで実行できるように特別に設計されています。 これは、Android の通常の AES 暗号化に代わる軽量の代替手段として機能します。
Googleのベンチマーク 実際には AES よりも 5 倍高速ですが、セキュリティがわずかに損なわれるという欠点があります。 このため、Android Go Edition を搭載した携帯電話などのローエンド携帯電話の理想的な候補となります。 Adiantum は、スマートウォッチやさまざまなモノのインターネット デバイスなどの製品にも使用されます。これまで、Adiantum はオプションでした。 メーカーは Android Pie を搭載したデバイスでこれを有効にすることができましたが、これはデフォルトの暗号化アルゴリズムではありませんでした。 現在、Adiantum は Android Q の一部としてネイティブに含まれています。 これは、Q を使用して起動するすべてのデバイスは、例外なくユーザー データを暗号化する必要があることを意味します。 その結果、Android Q を搭載して起動されるデバイスには、Adiantum 経由かどうかに関係なく、ストレージ暗号化が保証されます。
Jetpack セキュリティ ライブラリ
Jetpack は Android サポート ライブラリのセットであり、 最新の追加の 1 つ アルファ版は Jetpack セキュリティ ライブラリです。 このライブラリは、ハードウェア ベースのキーストアの管理やキーの生成と検証などを処理することにより、アプリケーションを保護するプロセスを簡素化します。
TLS1.3
ただし、暗号化が改善されたのはストレージだけではありません。 の導入により、他のデバイスとの通信が大幅に改善されました。 TLS1.3のサポート デフォルトでは。 TLS 1.3 は、2018 年 8 月に IETF によって最終化された最新のネットワーク暗号化標準です。 TLS 1.3 は、より多くのネゴシエーション ハンドシェイクを暗号化することで、データ交換のプライバシーを強化します。 これに加えて、接続確立ハンドシェイクから往復全体が削減されるため、TLS 1.2 よりも高速です。 より効率的な最新のアルゴリズムと組み合わせることで、速度が最大 40% 向上します。
TLS は「Conscrypt」コンポーネントの一部であるため、Google Play から直接更新できるようになりました。 詳細については、プロジェクト メインラインをご覧ください。 ここ.
私たちが日常的にデバイス上で非常に多くの機密性の高いトランザクションを信頼していることを考えると、アップグレードされた TLS はこれまで以上に重要になっています。 搭乗券などの保管 - さらには デジタル運転免許証 将来のある時点で、Android では、すべてのデバイスが可能な限りユーザー データを暗号化する必要があることを意味します。 Adiantum と強制暗号化により、最も機密性の高いデータであっても、最も安価なデバイスに保存できる道が開かれます。 しかし、Google が Q リリースで Android のセキュリティを強化する唯一の方法は暗号化ではありません。
Android Q での権限とプライバシーの変更
範囲指定されたストレージ
スコープ付きストレージは、アプリが独自のサンドボックス化されたアプリ固有のディレクトリに含まれていない外部ストレージ内のファイルの読み取り/書き込みを制限するために採用されている新しい保護手段です。 Google の目標は 3 つです。どのアプリがどのファイルを制御できるかをより正確に把握すること、アプリ データの保護、ユーザー データの保護です。
Google は、共有オーディオ、ビデオ、画像コンテンツ用に MediaStore API を強化しています。 デフォルトでは、すべてのアプリは独自のファイルを MediaStore に挿入、変更、または削除できます。 画像、メディアストア。 ビデオとメディアストア。 許可を必要としないオーディオコレクション。 Android Qには新しい機能も追加されています メディアストア。 ダウンロード ユーザーがダウンロードしたコンテンツを保存するコレクション。MediaStore API を使用するすべてのアプリがこのコンテンツに貢献できます。 サンドボックス化されたアプリ固有のディレクトリに保存されたファイルはアンインストール時に削除されますが、MediaStore コレクションに提供されたすべてのファイルはアンインストール後も保持されます。
別のアプリによって作成されたファイルにアクセスするには、ファイルが MediaStore コレクションの 1 つにあるか、コレクションの外にあるかに関係なく、アプリはストレージ アクセス フレームワークを使用する必要があります。 さらに、アプリに新しい ACCESS_MEDIA_LOCATION 権限が付与されていない限り、画像の EXIF メタデータは編集されます。 Android Q では、アプリは、getExternalVolume() を使用してボリューム名をクエリすることで、メディアを配置するストレージ デバイスを制御することもできます。
Google は当初、ターゲット API レベルに関係なく、Android Q のすべてのアプリにスコープド ストレージの制限を課していましたが、フィードバックを受けて、 開発者により多くの時間を与える 調整を行うため。 スコープドストレージの変更の詳細については、こちらをご覧ください。 このページで共有ストレージのベスト プラクティスに関する Google の推奨事項の詳細については、次のリンクを参照してください。 この Google I/O を見ていると 話す。
API レベル < 23 をターゲットとするアプリに対する警告
ただし、権限制限はこれで終わりではありません。 API レベル 23 未満 (Android Lollipop 以前) をターゲットとするアプリをインストールすると、そのアプリがインストール時に機密性の高いアクセス許可を要求した場合、OS はユーザーに警告を表示します。 インストールする前に、ユーザーはアプリに付与する権限を手動で指定してから続行することができます。 したがって、Android Q では、アプリが実行時の権限を回避することはできなくなりました。
Bubbles API を優先する最終的な SYSTEM_ALERT_DEPRECATION
バブル API が動作中。 出典: Google。
オーバーレイ権限 (SYSTEM_ALERT_WINDOW) は、Android Q (Go Edition) で実行されているアプリに付与できなくなりました。 Go Edition 以外のデバイスの場合、Google は開発者に新しい Bubbles API を推奨しています。 Bubbles API は で導入された機能です。 Android Q ベータ 2 これにより、Facebook Messenger のチャットヘッドのような機能が可能になります。 アプリからの通知は画面の端に小さな泡として表示され、ユーザーがタップすると泡が拡大します。 バブル内で、アプリはアクティビティを表示できます。
アプリが他のアプリの上にオーバーレイを自由に描画できるようにすると、明らかなセキュリティ リスクが生じるため、この変更が必要でした。 悪名高き「マントとダガー「エクスプロイトはこの弱点を広範囲に悪用しました。 オーバーレイ API の機能は Android Oreo の時点では制限されていましたが、Android Q の Go エディションでは API へのアクセスが完全に削除されました。 将来のリリースでは完全に非推奨になります.
バックグラウンドアクティビティの起動制限
バックグラウンドのアプリは、ターゲット API レベルに関係なく、携帯電話のロックが解除されている間はアクティビティを自動的に起動できなくなりました。 アプリがアクティビティを起動できるようになる条件の完全なリストがあり、それを読むことができます。 ここ. これらの条件を満たさず、アクティビティを緊急に起動したいバックグラウンド アプリは、通知を通じてユーザーに通知する必要があります。 保留中の全画面インテントを使用して通知が作成された場合、画面がオフのときにインテントがすぐに起動され、アラームや着信に役立ちます。
バックグラウンドのクリップボードアクセス制限
バックグラウンドでのクリップボード アクセスは、 もう不可能です. フォアグラウンドにないアプリケーション、またはデフォルトの入力方法として設定されていないアプリケーションは、いかなる方法でもクリップボードを読み取ることができません。 これは、クリップボード マネージャーなどのアプリに特に大きな影響を与えます。 Google は、この変更は Android Q のみを対象とするアプリにのみ影響すると述べていますが、私たちのテストでは、この制限は差別的ではないことが示されています。 試したどのアプリもクリップボードを参照できませんでした。
もちろん、この変更には意味があります。 私たちはパスワードやクレジット カードの詳細などの機密情報をクリップボードにコピーすることがよくありますが、クリップボード マネージャーが無駄になるのを見るのはやはり残念です。
アプリ使用中のみ位置情報にアクセス
新しいユーザー有効設定では、アプリの使用中にのみアプリがあなたの位置に到達できるようになります。 最新の Android Q ベータ版では、アプリに位置情報への永続的なアクセスを許可したかどうかを通知する通知も追加されました。
役割
新しい「ロール」API が追加されました。 役割とは基本的に、 事前に設定されたアクセス許可を持つグループ. たとえば、ギャラリーの役割を持つアプリはメディア フォルダーにアクセスできる一方、ダイヤラーの役割を持つアプリは通話を処理できる場合があります。 ユーザーによって特定の役割が付与されたアプリには、必要なコンポーネントも必要です。 たとえば、ギャラリーの役割を持つアプリにはアクション インテント フィルターが必要です アンドロイド.意図.アクション.主要 およびカテゴリーインテントフィルター android.intent.category。 アプリギャラリー 設定でギャラリー アプリとして表示されます。
センサーオフのクイック設定タイル
新しい「センサーオフ」クイック設定タイルがあり、センサーからの測定値をオフにします。 全て デバイス上のセンサー (加速度計、ジャイロスコープなど) を使用して、真のプライバシーを確保します。 このクイック設定タイルはデフォルトでは非表示になっていますが、開発者向けオプションの「クイック設定開発者タイル」に移動すると有効にできます。
/proc/net の制限事項
アプリはもうできません proc/netにアクセスするにより、netstat のようなサービスが実行できなくなります。 これにより、ユーザーが接続する Web サイトやサービスを監視する悪意のあるアプリからユーザーが保護されます。 VPN など、継続的なアクセスが必要なアプリでは、 ネットワーク統計マネージャー そして 接続マネージャー クラス。
ランダム化されたMACアドレス
MAC アドレスは、ネットワークがどのデバイスがどれであるかを記憶するために使用する一意の識別子です。 Android Q では、新しいネットワークに接続するたびに、デバイスはランダム化された新しい MAC アドレスを使用します。 結果として、 ネットワークはあなたの位置を追跡できません 接続する WiFi ネットワークと携帯電話の MAC アドレスを照合することによって。 デバイスの実際の工場出荷時の MAC アドレスは、引き続きアプリによって取得できます。 getWifiMacアドレス() 指示。
Android Q におけるプラットフォームの強化
Android 内に 1 つのバグがあるからといって、攻撃者が OS に完全にアクセスできるようになったり、セキュリティ システムを回避できるようになるわけではありません。 これは、プロセスの分離、攻撃対象領域の削減、アーキテクチャの分解、エクスプロイトの軽減などの多くの保護手段による部分もあります。 これらの保護手段により、脆弱性の悪用がより困難になるか、不可能になります。 その結果、攻撃者は通常、目的を達成する前に多数の脆弱性を必要とします。 過去には攻撃も見られました ドラマーなど 複数のエクスプロイトを連鎖させることで機能します。
Android Q では、このような保護策が講じられており、カーネルとともにメディアや Bluetooth コンポーネントなどのより機密性の高い領域にも適用されます。 これにより、いくつかの顕著な改善がもたらされます。
- ソフトウェア コーデック用の制限されたサンドボックス。
- 信頼できないコンテンツを処理するコンポーネントの脆弱性のクラス全体を軽減するために、実稼働環境でのサニタイザーの使用が増加しています。
- シャドウ コール スタック。バックワード エッジの制御フロー整合性 (CFI) を提供し、LLVM の CFI によって提供されるフォワード エッジ保護を補完します。
- eXecute-Only Memory (XOM) を使用して、アドレス空間レイアウトのランダム化 (ASLR) をリークから保護します。
- Scudo 強化アロケーターの導入により、ヒープ関連の多数の脆弱性の悪用がより困難になります。
これはソフトウェアの専門用語がたくさんあります。 その骨子は、まず、ソフトウェア コーデックが権限の少ないサンドボックスで実行されるようになったことです。 悪意のあるソフトウェアがデバイスに損害を与える可能性のあるコマンドを実行できる可能性が低くなります。 の 舞台負け 遡ること2015年。
次に、Android では、オーバーフローだけでなく、より多くの場所で境界外の配列アクセスがチェックされるようになりました。 オーバーフローを防止し、プロセスが安全に失敗するように指示すると、ユーザー空間の脆弱性の割合が大幅に減少します。 これが意味するのは、悪意のあるプログラムが意図的に何かをクラッシュさせようとした場合、 存在しないデータにアクセスすると、Android はこれを認識し、代わりにプログラムを終了します。 クラッシュする。
3 番目に、シャドウ コール スタックはリターン アドレスを別のシャドウ スタックに保存することで保護し、通常のプログラムからアクセスできないようにします。 通常、リターン アドレスは関数へのポインタであるため、攻撃者がアクセスできない関数にアクセスできないようにするために、これらのアドレスを保護することが重要です。
4 番目に、ASLR は、メモリ内のプログラムの保存場所をランダム化する保護方法です。 他のプログラムの場所に基づいて、プログラムがメモリ内のどこに保存されているかを把握するのが難しくなります。 プログラム。 eXecute-only メモリは、コードを読み取り不能にすることでこれを強化します。
最後に、Scudo は動的ヒープ アロケーターであり、ヒープ ベースの脆弱性の悪用をより困難にする方法でメモリをプロアクティブに管理します。 詳細についてはこちらをご覧ください ここ.
認証
Android Q の BiometricPrompt の更新
Google は 1 年以上前に新しい BiometricPrompt API を導入しました。 Android P 開発者プレビュー 2. これは、生体認証によるロック解除方法のための一般的な Android プロンプトであることを目的としていました。 このアイデアは、デバイスが指紋スキャン以上のものをサポートするというものです。 Samsung の Galaxy S ラインでの虹彩スキャンでは、アプリが認証を要求したときにこれらの方法を使用できるようになります。
Android Q では、顔認証と指紋認証の強力なサポートが追加され、暗黙的認証をサポートするように API が拡張されています。 明示的認証では、続行する前にユーザーが何らかの方法で認証する必要がありますが、暗黙的認証ではそれ以上のユーザー操作は必要ありません。
さらに、アプリは簡単な方法でデバイスが生体認証をサポートしているかどうかを確認できるようになりました。 関数呼び出しを使用すると、機能を持たないデバイスで BiometricPrompt を呼び出す時間を無駄にすることがなくなります。 それをサポートします。 これの理想的な用途は、デバイスが生体認証をサポートしているかどうかに基づいて、アプリで「生体認証サインインを有効にする」設定を行う場合です。
電子 ID サポートの構成要素
今年の初めに、Google が次のことを行っているという証拠を発見しました。 電子IDのサポートに取り組んでいます アンドロイドで。 I/O で、Google は機能の進捗状況を更新しました。 Googleは、モバイル運転免許証の実装を標準化するためにISOと協力しており、電子パスポートの開発も進めていると述べた。 開発者向けに、Google は ID アプリの作成を開始できるように Jetpack ライブラリを提供します。
Android Q のプロジェクト メインライン
Project Mainline は、特定のシステム モジュールとアプリの断片化を軽減するための Google による主要な取り組みです。 Google は、Play ストア経由で約 12 のシステム コンポーネントのアップデートを制御します。 Project Mainline について詳しく説明してきました。 以前の記事で もっと読みたい場合は。
結論
セキュリティは常に Android 開発の中核部分でした。 Google は、Android を最新のセキュリティ機能で最新の状態に維持するとともに、独自のイノベーションを起こすという素晴らしい仕事をしてきました。 彼らは Android Q でもこの開発プロセスを継続しており、データをこれまで以上に安全にするためのセキュリティ機能を満載しています。
出典 1: Android Q セキュリティの新機能 [Google]
出典 2: Android のセキュリティ: 次のステップ [Google]
ソース 3: 強化機能をキューに入れる [Google]
Mishaal Rahman と Adam Conway からの意見をもとに。