初回使用時の信頼(TOFU)

Android 13 以降を搭載したデバイスの場合、Android では初回使用時の信頼(TOFU)認証方法(RFC7435)がサポートされています。ユーザーはサーバーで使用されるルート CA をインストールし、保存済みネットワークにドメイン名を設定することで、エンタープライズ(EAP)ネットワークを信頼できます。TOFU を使用すると、デバイスは、ユーザーが最初にエンタープライズ ネットワークに接続する際に未認証の公開鍵を取得し、以降の接続のためにその鍵を保持できます。

背景

パスワードが必要なだけの個人用ネットワークとは異なり、エンタープライズ ネットワークでは、クライアントが証明書をプリインストールする必要がある公開鍵基盤(PKI)認証が使用されます。Android 11 以前では、ユーザーは、ネットワーク設定でサーバー CA 証明書の [検証しない] オプションを選択して、サーバー側の証明書の検証を回避できます。一方、セキュリティを強化し、WPA R2 の仕様に準拠するため、Android 12 ではエンタープライズ ネットワークでのサーバー証明書の検証が必須になりました。この追加要件により、ユーザーはこのようなネットワークの CA 証明書をインストールする必要性が生じたため、障壁が発生しました。TOFU を使用すると、ユーザーはルート CA を受け入れるだけで、PKI ベースのエンタープライズ ネットワークに接続できます。

機能の動作

TOFU をサポートするデバイスは、インストール済みで認証済み公開鍵を持たないエンタープライズ ネットワークにユーザーが接続したときに、次の動作を示します。

Wi-Fi 選択ツールを使って新しいネットワークに接続する

  1. Wi-Fi 選択ツールで新しいエンタープライズ ネットワークを選択します。

    デバイスに、ネットワークが信頼できるかどうかを確認するためのダイアログ(図 1)が表示されます。

  2. [はい、接続します] をタップしてネットワーク接続を受け入れるか、[いいえ、接続しません] をタップして拒否します。

    • [はい、接続します] をタップすると、デバイスがセキュリティ パラメータを自動的に設定してネットワークに接続し、ネットワークの自動接続が有効になります。

    • [いいえ、接続しません] をタップすると、デバイスがネットワークから切断され、ネットワークの自動接続が無効になります。

    TOFU 機能のダイアログ

    図 1. TOFU 機能のダイアログ

自動接続を有効にして既存のネットワークに接続する

自動接続が有効であるが、有効な CA 証明書がないエンタープライズ ネットワークに接続すると、デバイスが自動的に接続され、スティッキー(非表示にできない)通知が表示されます。

  1. 通知をタップします。

    デバイスに、ネットワークが信頼できるかどうかを確認するためのダイアログ(図 1)が表示されます。

  2. [はい、接続します] をタップしてネットワーク接続を受け入れるか、[いいえ、接続しません] をタップして拒否します。

    • [はい、接続します] をタップすると、デバイスがセキュリティ パラメータを自動的に設定してネットワークに接続し、ネットワークの自動接続が有効になります。

    • [いいえ、接続しません] をタップすると、デバイスがネットワークから切断され、ネットワークの自動接続が無効になります。

実装

TOFU 機能をサポートするには、/hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant の Android オープンソース プロジェクト(AOSP)で提供されるサプリカント HAL を実装します。

Android 13 では、次の公開 API をアプリで使用できます。

検証

デバイスでの TOFU の実装を検証するには、次のテストを使用します。

  • CTS: CtsWifiTestCases
  • VTS: VtsHalWifiSupplicantStaNetworkTargetTest