Passpoint (Hotspot 2.0)

Passpoint adalah protokol Wi-Fi Alliance (WFA) yang memungkinkan perangkat seluler menemukan dan melakukan autentikasi ke hotspot Wi-Fi yang menyediakan akses internet.

Dukungan perangkat

Untuk mendukung Passpoint, produsen perangkat perlu mengimplementasikan antarmuka Supplicant. Mulai Android 13, antarmuka menggunakan AIDL untuk definisi HAL. Untuk rilis sebelum Android 13, antarmuka dan partisi vendor menggunakan HIDL. File HIDL ada di hardware/interfaces/supplicant/1.x dan file AIDL ada di hardware/interfaces/supplicant/aidl. Pemohon memberikan dukungan untuk standar 802.11u, khususnya fitur penemuan dan pemilihan jaringan seperti Generic Advertisingment Service (GAS) dan akses protokol kueri jaringan (ANQP).

Penerapan

Android 11 atau yang lebih baru

Untuk mendukung Passpoint di perangkat yang menjalankan Android 11 atau yang lebih tinggi, produsen perangkat harus menyediakan dukungan firmware untuk 802.11u. Semua persyaratan lain untuk mendukung Passpoint disertakan dalam AOSP.

Android 10 atau yang lebih lama

Untuk perangkat yang menjalankan Android 10 atau yang lebih rendah, produsen perangkat harus memberikan dukungan framework dan HAL/firmware:

  • Framework: Mengaktifkan Passpoint (memerlukan tombol fitur)
  • Firmware: Dukungan untuk 802.11u

Untuk mendukung Passpoint, terapkan Wi-Fi HAL dan aktifkan tombol fitur untuk Passpoint. Di device.mk yang terletak di device/<oem>/<device>, ubah variabel lingkungan PRODUCT_COPY_FILES guna menyertakan dukungan untuk fitur Passpoint:

PRODUCT_COPY_FILES +=
frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml

Semua persyaratan lain untuk mendukung Passpoint disertakan dalam AOSP.

Validasi

Untuk memvalidasi penerapan fitur Passpoint, gunakan serangkaian pengujian unit dan pengujian integrasi yang disediakan dalam Android Comms Test Suite (ACTS).

Pengujian Unit

Jalankan pengujian unit paket Passpoint berikut.

Pengujian layanan:

atest com.android.server.wifi.hotspot2

Pengelola menguji:

atest android.net.wifi.hotspot2

Pengujian integrasi (ACTS)

Paket pengujian Passpoint ACTS, yang terletak di tools/test/connectivity/acts_tests/tests/google/wifi/WifiPasspointTest.py, mengimplementasikan serangkaian pengujian fungsional.

Penyediaan Passpoint R1

Android telah mendukung Passpoint R1 sejak Android 6.0, yang memungkinkan penyediaan kredensial Passpoint R1 (rilis 1) melalui download berbasis web dari file khusus yang berisi informasi profil dan kredensial. Klien akan secara otomatis meluncurkan penginstal khusus untuk informasi Wi-Fi dan memungkinkan pengguna melihat bagian-bagian informasi sebelum menerima atau menolak konten.

Informasi profil yang terdapat dalam file digunakan untuk mencocokkan data yang diambil dari titik akses yang mengaktifkan Passpoint, dan kredensial akan otomatis diterapkan untuk setiap jaringan yang cocok.

Implementasi referensi Android mendukung EAP-TTLS, EAP-TLS, EAP-SIM, EAP-AKA, dan EAP-AKA'.

Mekanisme download

File konfigurasi Passpoint harus dihosting di server web dan harus dilindungi dengan TLS (HTTPS) karena dapat berisi sandi teks yang jelas atau data kunci pribadi. Konten ini terdiri dari teks MIME multibagian yang digabungkan yang direpresentasikan dalam UTF-8 dan dienkode dalam encoding base64 sesuai RFC-2045 bagian 6.8.

Kolom header HTTP berikut digunakan oleh klien untuk meluncurkan penginstal Wi-Fi secara otomatis di perangkat:

  • Content-Type harus ditetapkan ke application/x-wifi-config.
  • Content-Transfer-Encoding harus ditetapkan ke base64.
  • Content-Disposition tidak boleh ditetapkan.

Metode HTTP yang digunakan untuk mengambil file harus GET. Setiap kali HTTP GET dari browser menerima respons dengan header MIME ini, aplikasi penginstalan akan dimulai. Download harus dipicu dengan mengetuk elemen HTML seperti tombol (pengalihan otomatis ke URL download tidak didukung). Perilaku ini khusus untuk Google Chrome; browser web lainnya mungkin menyediakan atau tidak menyediakan fungsi yang serupa.

Komposisi file

Konten yang dienkode Base64 harus terdiri dari konten multibagian MIME dengan Content-Type dari multipart/mixed. Bagian-bagian berikut membentuk bagian-bagian individu dari konten multibagian.

Bagian Jenis Konten (lebih sedikit tanda kutip) Wajib Description
Profil application/x-passpoint-profile Selalu Payload berformat OMA-DM SyncML yang berisi MO berformat PerProviderSubscription Passpoint R1 untuk HomeSP dan Credential.
Sertifikat kepercayaan application/x-x509-ca-cert Diperlukan untuk EAP-TLS dan EAP-TTLS Satu payload sertifikat berenkode base64 X.509v3.
Kunci EAP-TLS application/x-pkcs12 Diperlukan untuk EAP-TLS Struktur ASN.1 PKCS #12 berenkode base64 yang berisi rantai sertifikat klien dengan setidaknya sertifikat klien dan kunci pribadi terkait. Penampung PKCS 12 serta kunci pribadi dan sertifikat harus semuanya dalam teks yang jelas tanpa sandi.

Bagian Profil harus ditransfer sebagai teks XML berenkode UTF-8 berenkode base64 yang menentukan bagian dari subpohon HomeSP dan Credential di Spesifikasi Teknis Passpoint R2 Versi 1.0.0, bagian 9.1.

Node level atas harus berupa MgmtTree dan subnode langsung harus berupa PerProviderSubscription. Contoh file XML muncul di Contoh profil OMA-DM XML.

Node subpohon berikut digunakan dalam HomeSP:

  • FriendlyName: Harus ditetapkan; digunakan sebagai teks tampilan
  • FQDN: Wajib diisi
  • RoamingConsortiumOI

Node subpohon berikut digunakan dalam Credential:

  • Realm: Harus berupa string yang tidak kosong
  • UsernamePassword: Diperlukan untuk EAP-TTLS dengan node berikut yang ditetapkan:

    • Username: String yang berisi nama pengguna
    • Password: String berenkode Base64 (disetel ke cGFzc3dvcmQ=, string berenkode base64 untuk "sandi", dalam contoh di bawah)
    • EAPMethod/EAPType: Harus ditetapkan ke 21
    • EAPMethod/InnerMethod: Harus ditetapkan ke salah satu dari PAP, CHAP, MS-CHAP, atau MS-CHAP-V2
  • DigitalCertificate: Diperlukan untuk EAP-TLS. Node berikut harus ditetapkan:

    • CertificateType disetel pukul x509v3
    • CertSHA256Fingerprint ditetapkan ke ringkasan SHA-256 yang benar dari sertifikat klien di bagian MIME kunci EAP-TLS
  • SIM: Diperlukan untuk EAP-SIM, EAP-AKA, dan EAP-AKA'. Kolom EAPType harus disetel ke jenis EAP yang sesuai dan IMSI harus cocok dengan IMSI dari salah satu kartu SIM yang diinstal di perangkat pada saat penyediaan. String IMSI dapat seluruhnya terdiri dari digit desimal untuk memaksakan pencocokan persamaan penuh, atau 5 atau 6 digit desimal yang diikuti dengan tanda bintang (*) untuk melonggarkan pencocokan IMSI dengan MCC/MNC saja. Misalnya, string IMSI 123456* cocok dengan kartu SIM apa pun dengan MCC sebagai 123 dan MNC sebagai 456.

Android 11 memperkenalkan kemampuan yang menjadikan penyediaan Passpoint R1 lebih fleksibel.

Nama domain autentikasi, otorisasi, dan akuntansi (AAA) terpisah

Administrator jaringan Passpoint yang memerlukan nama domain AAA yang ditentukan secara independen dari nama domain yang sepenuhnya memenuhi syarat (FQDN) yang diiklankan oleh jaringan melalui Access Network Query Protocol (ANQP) dapat menentukan daftar FQDN yang dipisahkan titik koma dalam node baru pada subpohon Extension. Ini adalah node opsional dan perangkat yang menjalankan Android versi 10 atau yang lebih rendah akan mengabaikan node ini.

  • Android: Subhierarki ekstensi Android

    • AAAServerTrustedNames: Diperlukan untuk nama tepercaya server AAA dengan kumpulan node berikut:

      • FQDN: String yang berisi nama tepercaya server AAA. Gunakan titik koma untuk memisahkan nama tepercaya. Misalnya, example.org;example.com.
Root CA pribadi yang ditandatangani sendiri
Administrator jaringan Passpoint yang mengelola sertifikat mereka secara internal dapat menyediakan profil dengan CA pribadi yang ditandatangani sendiri untuk autentikasi AAA.
Izinkan penginstalan profil tanpa Sertifikat Root CA
Sertifikat Root CA yang dilampirkan ke profil digunakan untuk autentikasi server AAA. Administrator jaringan Passpoint yang ingin mengandalkan Root CA tepercaya publik untuk autentikasi server AAA dapat menyediakan profil tanpa sertifikat Root CA. Dalam hal ini, sistem akan memverifikasi sertifikat server AAA terhadap Sertifikat CA Root publik yang diinstal di trust store.

Penyediaan Passpoint R2

Android 10 memperkenalkan dukungan untuk fitur Passpoint R2. Passpoint R2 menerapkan pendaftaran online (OSU), metode standar untuk menyediakan profil Passpoint baru. Android 10 dan yang lebih baru mendukung penyediaan profil EAP-TTLS menggunakan protokol SOAP-XML daripada OSU ESS terbuka.

Fitur Passpoint R2 yang didukung hanya memerlukan kode referensi AOSP (dukungan driver atau firmware tambahan tidak diperlukan). Kode referensi AOSP juga menyertakan implementasi default UI Passpoint R2 di aplikasi Setelan.

Saat Android mendeteksi titik akses Passpoint R2, framework Android akan:

  1. Menampilkan daftar penyedia layanan yang diiklankan oleh AP di pemilih Wi-Fi (selain menampilkan SSID).
  2. Meminta pengguna mengetuk salah satu penyedia layanan untuk menyiapkan profil Passpoint.
  3. Memandu pengguna melalui alur penyiapan profil Passpoint.
  4. Menginstal profil Passpoint yang dihasilkan setelah berhasil diselesaikan.
  5. Mengaitkan ke jaringan Passpoint menggunakan profil Passpoint yang baru disediakan.

Fitur Passpoint R3

Android 12 memperkenalkan fitur Passpoint R3 berikut yang meningkatkan pengalaman pengguna dan memungkinkan jaringan untuk mematuhi hukum setempat:

Persyaratan dan ketentuan

Persetujuan terhadap persyaratan dan ketentuan diwajibkan secara hukum di beberapa lokasi dan tempat untuk memberikan akses jaringan. Fitur ini memungkinkan deployment jaringan untuk mengganti captive portal yang tidak aman, yang menggunakan jaringan terbuka, dengan jaringan Passpoint yang aman. Notifikasi ditampilkan kepada pengguna jika persyaratan dan kondisi harus disetujui.

URL persyaratan dan ketentuan harus mengarah ke situs aman yang menggunakan HTTPS. Jika URL mengarah ke situs yang tidak aman, framework akan segera memutuskan koneksi dan memblokir jaringan.

URL informasi tempat

Memungkinkan operator jaringan dan tempat memberikan informasi tambahan kepada pengguna, seperti peta tempat, direktori, promosi, dan kupon. Notifikasi ditampilkan ke pengguna saat jaringan terhubung.

URL informasi tempat harus mengarah ke situs yang aman menggunakan HTTPS. Jika URL mengarah ke situs yang tidak aman, framework akan mengabaikan URL dan tidak menampilkan notifikasi.

Fitur Passpoint lainnya

Android 11 memperkenalkan kemampuan Passpoint berikut yang meningkatkan pengalaman pengguna, penggunaan daya, dan fleksibilitas deployment.

Notifikasi dan penerapan tanggal habis masa berlaku
Menerapkan tanggal habis masa berlaku pada profil memungkinkan framework untuk menghindari koneksi otomatis ke titik akses dengan kredensial yang sudah tidak berlaku, yang pasti akan gagal. Hal ini mencegah penggunaan pulsa, serta menghemat bandwidth dan baterai backend. Framework ini menampilkan notifikasi kepada pengguna saat jaringan yang cocok dengan profilnya berada dalam jangkauan dan masa berlaku profil telah berakhir.
Beberapa profil dengan FQDN yang identik
Operator yang men-deploy jaringan Passpoint dan menggunakan beberapa ID jaringan seluler lahan publik (PLMN) dapat menyediakan beberapa profil Passpoint dengan FQDN yang sama, satu untuk setiap ID PLMN, yang otomatis dicocokkan dengan kartu SIM yang diinstal dan digunakan untuk menghubungkan jaringan.

Android 12 memperkenalkan kemampuan Passpoint berikut yang meningkatkan pengalaman pengguna, penggunaan daya, dan fleksibilitas deployment:

Awalan identitas yang dihias
Saat mengautentikasi ke jaringan dengan dekorasi awalan, awalan identitas yang didekorasi dapat digunakan operator jaringan untuk mengupdate Network Access Identifier (NAI) untuk melakukan perutean eksplisit melalui beberapa proxy di dalam jaringan AAA (lihat RFC 7542). Android 12 menerapkan fitur ini sesuai dengan spesifikasi WBA untuk ekstensi PPS-MO.
Penanganan segera pembatalan autentikasi
Mengizinkan operator jaringan memberi sinyal ke perangkat bahwa layanan tidak tersedia untuk kredensial yang digunakan untuk mengautentikasi ke jaringan selama durasi tertentu (ditentukan melalui penundaan waktu tunggu). Setelah menerima sinyal ini, perangkat tidak akan mencoba terhubung kembali ke jaringan dengan kredensial yang sama hingga setelah penundaan waktu tunggu berakhir. Sebaliknya, perangkat yang tidak mendukung fitur ini mungkin mencoba untuk berulang kali terhubung kembali ke jaringan saat layanan tidak tersedia.

Contoh profil XML OMA-DM PerProviderSubscription-MO

Profil dengan kredensial nama pengguna/sandi (EAP-TTLS)

Contoh berikut menunjukkan profil untuk jaringan dengan:

  • Nama yang cocok untuk jaringan ditetapkan ke Example Network
  • FQDN ditetapkan ke hotspot.example.net
  • OI konsorsium roaming (untuk roaming)
  • Kredensial dengan nama pengguna user, sandi password yang dienkode dengan Base64, dan realm disetel ke example.net
  • Metode EAP ditetapkan ke 21 (EAP-TTLS)
  • Metode dalam fase-2 ditetapkan ke MS-CHAP-V2
  • Nama domain AAA alternatif ditetapkan ke trusted.com dan trusted.net
<MgmtTree xmlns="syncml:dmddf1.2">
  <VerDTD>1.2</VerDTD>
  <Node>
    <NodeName>PerProviderSubscription</NodeName>
    <RTProperties>
      <Type>
        <DDFName>urn:wfa:mo:hotspot2dot0-perprovidersubscription:1.0</DDFName>
      </Type>
    </RTProperties>
    <Node>
      <NodeName>i001</NodeName>
      <Node>
        <NodeName>HomeSP</NodeName>
        <Node>
          <NodeName>FriendlyName</NodeName>
          <Value>Example Network</Value>
        </Node>
        <Node>
          <NodeName>FQDN</NodeName>
          <Value>hotspot.example.net</Value>
        </Node>
        <Node>
          <NodeName>RoamingConsortiumOI</NodeName>
          <Value>112233,445566</Value>
        </Node>
      </Node>
      <Node>
        <NodeName>Credential</NodeName>
        <Node>
          <NodeName>Realm</NodeName>
          <Value>example.net</Value>
        </Node>
        <Node>
          <NodeName>UsernamePassword</NodeName>
          <Node>
            <NodeName>Username</NodeName>
            <Value>user</Value>
          </Node>
          <Node>
            <NodeName>Password</NodeName>
            <Value>cGFzc3dvcmQ=</Value>
          </Node>
          <Node>
            <NodeName>EAPMethod</NodeName>
            <Node>
              <NodeName>EAPType</NodeName>
              <Value>21</Value>
            </Node>
            <Node>
              <NodeName>InnerMethod</NodeName>
              <Value>MS-CHAP-V2</Value>
            </Node>
          </Node>
        </Node>
      </Node>
      <Node>
        <NodeName>Extension</NodeName>
        <Node>
            <NodeName>Android</NodeName>
            <Node>
                <NodeName>AAAServerTrustedNames</NodeName>
                <Node>
                    <NodeName>FQDN</NodeName>
                    <Value>trusted.com;trusted.net</Value>
                </Node>
            </Node>
        </Node>
      </Node>
    </Node>
  </Node>
</MgmtTree>

Profil dengan kredensial sertifikat digital (EAP-TLS)

Contoh berikut menunjukkan profil untuk jaringan dengan:

  • Nama yang cocok untuk jaringan ditetapkan ke GlobalRoaming
  • FQDN ditetapkan ke globalroaming.net
  • OI Konsorsium Roaming (untuk roaming)
  • Realm ditetapkan ke users.globalroaming.net
  • Kredensial dengan sertifikat digital yang memiliki sidik jari yang ditentukan
<MgmtTree xmlns="syncml:dmddf1.2">
  <VerDTD>1.2</VerDTD>
  <Node>
    <NodeName>PerProviderSubscription</NodeName>
    <RTProperties>
      <Type>
        <DDFName>urn:wfa:mo:hotspot2dot0-perprovidersubscription:1.0</DDFName>
      </Type>
    </RTProperties>
    <Node>
      <NodeName>i001</NodeName>
      <Node>
        <NodeName>HomeSP</NodeName>
        <Node>
          <NodeName>FriendlyName</NodeName>
          <Value>GlobalRoaming</Value>
        </Node>
        <Node>
          <NodeName>FQDN</NodeName>
          <Value>globalroaming.net</Value>
        </Node>
        <Node>
          <NodeName>RoamingConsortiumOI</NodeName>
          <Value>FFEEDDCC0,FFEEDDCC1,009999,008888</Value>
        </Node>
      </Node>
      <Node>
        <NodeName>Credential</NodeName>
        <Node>
          <NodeName>Realm</NodeName>
          <Value>users.globalroaming.net</Value>
        </Node>
        <Node>
          <NodeName>DigitalCertificate</NodeName>
          <Node>
            <NodeName>CertificateType</NodeName>
            <Value>x509v3</Value>
          </Node>
          <Node>
            <NodeName>CertSHA256Fingerprint</NodeName>
            <Value>0ef08a3d2118700474ca51fa25dc5e6d3d63d779aaad8238b608a853761da533</Value>
          </Node>
        </Node>
      </Node>
    </Node>
  </Node>
</MgmtTree>

Profil dengan kredensial SIM (EAP-AKA)

Contoh berikut menunjukkan profil untuk jaringan dengan:

  • Nama yang cocok untuk jaringan ditetapkan ke Purple Passpoint
  • FQDN ditetapkan ke wlan.mnc888.mcc999.3gppnetwork.org
  • Kredensial SIM dengan ID PLMN 999888
  • Metode EAP ditetapkan ke 23 (EAP-AKA)
<MgmtTree xmlns="syncml:dmddf1.2">
  <VerDTD>1.2</VerDTD>
  <Node>
    <NodeName>PerProviderSubscription</NodeName>
    <RTProperties>
      <Type>
        <DDFName>urn:wfa:mo:hotspot2dot0-perprovidersubscription:1.0</DDFName>
      </Type>
    </RTProperties>
    <Node>
      <NodeName>i001</NodeName>
      <Node>
        <NodeName>HomeSP</NodeName>
        <Node>
          <NodeName>FriendlyName</NodeName>
          <Value>Purple Passpoint</Value>
        </Node>
        <Node>
          <NodeName>FQDN</NodeName>
          <Value>purplewifi.com</Value>
        </Node>
      </Node>
      <Node>
        <NodeName>Credential</NodeName>
        <Node>
          <NodeName>Realm</NodeName>
          <Value>wlan.mnc888.mcc999.3gppnetwork.org</Value>
        </Node>
        <Node>
          <NodeName>SIM</NodeName>
          <Node>
            <NodeName>IMSI</NodeName>
            <Value>999888*</Value>
          </Node>
          <Node>
            <NodeName>EAPType</NodeName>
            <Value>23</Value>
          </Node>
        </Node>
      </Node>
    </Node>
  </Node>
</MgmtTree>

Konsultasi Auth

Perangkat yang menjalankan Android 8.x atau Android 9 dengan profil Passpoint R1 EAP-SIM, EAP-AKA, atau EAP-AKA tidak akan terhubung otomatis ke jaringan Passpoint. Masalah ini memengaruhi pengguna, operator, dan layanan dengan mengurangi pengurangan beban Wi-Fi.

Segmen Dampak Ukuran dampak
Operator dan penyedia layanan Passpoint Beban pada jaringan seluler meningkat. Operator apa pun yang menggunakan Passpoint R1.
Pengguna Kehilangan peluang untuk terhubung otomatis ke titik akses (AP) Wi-Fi Operator, sehingga mengakibatkan biaya data yang lebih tinggi. Setiap pengguna dengan perangkat yang berjalan di jaringan operator yang mendukung Passpoint R1.

Penyebab kegagalan

Passpoint menentukan mekanisme untuk mencocokkan penyedia layanan yang diiklankan (ANQP) dengan profil yang diinstal di perangkat. Aturan pencocokan untuk EAP-SIM, EAP-AKA, dan EAP-AKA' adalah sebagian kumpulan aturan yang berfokus pada kegagalan EAP-SIM/AKA/AKA':

If the FQDN (Fully Qualified Domain Name) matches
    then the service is a Home Service Provider.
Else: If the PLMN ID (3GPP Network) matches
    then the service is a Roaming Service Provider.

Kriteria kedua telah dimodifikasi di Android 8.0:

Else: If the PLMN ID (3GPP Network) matches AND the NAI Realm matches
    then the service is a Roaming Service Provider.

Dengan modifikasi ini, sistem mengamati tidak ada kecocokan untuk penyedia layanan yang sebelumnya berfungsi, sehingga perangkat Passpoint tidak terhubung otomatis.

Solusi

Untuk mengatasi masalah kriteria pencocokan yang dimodifikasi, ekspedisi dan penyedia layanan harus menambahkan realm ID akses jaringan (NAI) ke informasi yang dipublikasikan oleh Passpoint AP.

Solusi yang direkomendasikan bagi penyedia layanan jaringan adalah mengimplementasikan solusi sisi jaringan untuk mendapatkan waktu deployment tercepat. Solusi sisi perangkat bergantung pada OEM yang mengambil daftar perubahan (CL) dari AOSP, lalu mengupdate perangkat di lapangan.

Perbaikan jaringan untuk operator dan penyedia layanan Passpoint

Solusi sisi jaringan memerlukan konfigurasi ulang jaringan untuk menambahkan elemen ANQP realm NAI seperti yang ditentukan di bawah. Spesifikasi Passpoint tidak memerlukan elemen ANQP realm NAI, tetapi penambahan properti ini sesuai dengan spesifikasi Passpoint, sehingga penerapan klien yang sesuai dengan spesifikasi tidak boleh rusak.

  1. Tambahkan elemen ANQP realm NAI.
  2. Tetapkan subkolom realm NAI agar cocok dengan Realm profil yang diinstal di perangkat.
  3. Tetapkan informasi berikut berdasarkan setiap jenis EAP:

    • EAP-TTLS: Menetapkan EAPMethod(21) dan jenis autentikasi dalam yang didukung (PAP, CHAP, MS-CHAP, atau MS-CHAP-V2)
    • EAP-TLS: Menetapkan EAPMethod(13)
    • EAP-SIM: Setel EAPMethod(18)
    • EAP-AKA: Setel EAPMethod(23)
    • EAP-AKA': Setel EAPMethod(50)

Perbaikan perangkat/AOSP untuk OEM

Untuk menerapkan solusi sisi perangkat, OEM harus memilih patch CL AOSP/718508. Patch ini dapat diterapkan sebagai tambahan dari rilis berikut (tidak berlaku untuk Android 10 atau yang lebih baru):

  • Android 9
  • Android 8.x

Saat patch dipilih, OEM perlu mengupdate perangkat di lapangan.