Spesifikasi Aksesori Jaringan Hub Pencari

v1.3

Spesifikasi aksesori Jaringan Hub Pencari (FHN) menentukan pendekatan terenkripsi end-to-end untuk melacak perangkat Bluetooth Hemat Energi (BLE) yang memancarkan sinyal. Halaman ini menjelaskan FHN sebagai ekstensi untuk spesifikasi Fast Pair. Penyedia harus mengaktifkan ekstensi ini jika mereka memiliki perangkat yang kompatibel dengan FHN dan bersedia mengaktifkan pelacakan lokasi untuk perangkat tersebut.

Spesifikasi GATT

Karakteristik atribut generik (GATT) tambahan harus ditambahkan ke Layanan Fast Pair dengan semantik berikut:

Karakteristik Layanan Sambungan Cepat Dienkripsi Izin UUID
Tindakan beacon Tidak Membaca, menulis, dan memberi tahu FE2C1238-8366-4814-8EB0-01DE32100BEA

Tabel 1: Karakteristik Layanan Sambungan Cepat untuk FHN.

Autentikasi

Operasi yang diperlukan oleh ekstensi ini dilakukan sebagai operasi tulis, yang diamankan oleh mekanisme challenge-response. Sebelum melakukan operasi apa pun, Seeker diharapkan melakukan operasi baca dari karakteristik dalam tabel 1, yang menghasilkan buffer dalam format berikut:

Octet Jenis Data Deskripsi Nilai
0 uint8 Nomor versi utama protokol 0x01
1 - 8 array byte Nonce acak satu kali berbeda-beda

Setiap operasi baca harus menghasilkan nonce yang berbeda, dan satu nonce hanya boleh valid untuk satu operasi. Nonce harus dibatalkan validasinya meskipun operasi gagal.

Kemudian, Seeker menghitung kunci autentikasi sekali pakai untuk digunakan dalam permintaan penulisan berikutnya. Kunci autentikasi dihitung seperti yang dijelaskan dalam tabel 2 hingga 5. Bergantung pada operasi yang diminta, Pencari membuktikan pengetahuan tentang satu atau beberapa kunci berikut:

Operasi

Format data yang ditulis ke karakteristik diberikan dalam tabel 2 hingga 5. Setiap operasi akan dibahas lebih mendetail di bagian ini.

Octet Jenis Data Deskripsi Nilai
0 uint8 ID Data
  • 0x00: Membaca parameter beacon
  • 0x01: Membaca status penyediaan
  • 0x02: Menetapkan kunci identitas sementara
  • 0x03: Hapus kunci identitas sementara
1 uint8 Panjang data berbeda-beda
2 - 9 array byte Kunci autentikasi satu kali 8 byte pertama dari HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data)
10 - var array byte Tambahan data
  • 0x00: t/a
  • 0x01: t/a
  • 0x02: 32 byte yang merupakan kunci identitas sementara, dienkripsi AES-ECB-128 dengan kunci akun. Jika Penyedia sudah memiliki set kunci identitas sementara, kirim juga 8 byte pertama dari SHA256(current ephemeral identity key || the last nonce read from the characteristic)
  • 0x03: 8 byte pertama dari SHA256(ephemeral identity key || the last nonce read from the characteristic)

Tabel 2: Permintaan penyediaan beacon.

Octet Jenis Data Deskripsi Nilai
0 uint8 ID Data 0x04: Membaca kunci identitas sementara dengan izin pengguna
1 uint8 Panjang data 0x08
2 - 9 array byte Kunci autentikasi satu kali 8 byte pertama dari HMAC-SHA256(recovery key, protocol major version number || the last nonce read from the characteristic || data ID || data length)

Tabel 3: Permintaan pemulihan kunci penyediaan beacon.

Octet Jenis Data Deskripsi Nilai
0 uint8 ID Data
  • 0x05: Dering
  • 0x06: Membaca status dering
1 uint8 Panjang data berbeda-beda
2 - 9 array byte Kunci autentikasi satu kali 8 byte pertama dari HMAC-SHA256(ring key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data)
10 - var array byte Tambahan data
  • 0x05: 4 byte yang menunjukkan status dering, durasi dering, dan volume dering.
  • 0x06: t/a

Tabel 4: Permintaan dering.

Octet Jenis Data Deskripsi Nilai
0 uint8 ID Data
  • 0x07: Mengaktifkan mode perlindungan dari pelacakan yang tidak diinginkan
  • 0x08: Nonaktifkan mode perlindungan dari pelacakan yang tidak diinginkan
1 uint8 Panjang data berbeda-beda
2 - 9 array byte Kunci autentikasi satu kali 8 byte pertama dari HMAC-SHA256(unwanted tracking protection key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data)
10 - var array byte Tambahan data
  • 0x07: 1 byte flag kontrol (opsional)
  • 0x08: 8 byte pertama dari SHA256(ephemeral identity key || the last nonce read from the characteristic)

Tabel 5: Permintaan perlindungan dari pelacakan yang tidak diinginkan.

Penulisan yang berhasil memicu notifikasi seperti yang tercantum dalam tabel 6.

Notifikasi dengan ID data selain 0x05: Perubahan status dering harus dikirim sebelum transaksi tulis yang memicu notifikasi selesai, yaitu sebelum PDU respons untuk permintaan tulis dikirim.

Octet Jenis Data Deskripsi Nilai
0 uint8 ID Data
  • 0x00: Membaca parameter beacon
  • 0x01: Membaca status penyediaan
  • 0x02: Menetapkan kunci identitas sementara
  • 0x03: Hapus kunci identitas sementara
  • 0x04: Membaca kunci identitas sementara dengan izin pengguna
  • 0x05: Perubahan status dering
  • 0x06: Membaca status dering
  • 0x07: Mengaktifkan mode perlindungan dari pelacakan yang tidak diinginkan
  • 0x08: Nonaktifkan mode perlindungan dari pelacakan yang tidak diinginkan
1 uint8 Panjang data berbeda-beda
2 - 9 array byte Autentikasi Per operasi yang mendetail
10 - var array byte Tambahan data
  • 0x00: 8 byte yang menunjukkan kemampuan daya transmisi, nilai clock, metode enkripsi, dan dering, dienkripsi AES-ECB-128 dengan kunci akun (diisi dengan nol)
  • 0x01: 1 byte yang menunjukkan status penyediaan, diikuti dengan ID sementara saat ini (20 atau 32 byte) jika berlaku
  • 0x04: 32 byte yang merupakan kunci identitas sementara, dienkripsi AES-ECB-128 dengan kunci akun
  • 0x05: 4 byte yang menunjukkan status baru dan pemicu perubahan
  • 0x06: 3 byte yang menunjukkan komponen yang berdering secara aktif dan jumlah desidetik yang tersisa untuk berdering
  • ID data lainnya menggunakan data tambahan kosong

Tabel 6: Respons layanan beacon.

Tabel 7 mencantumkan kemungkinan kode error GATT yang ditampilkan oleh operasi.

Kode Deskripsi Catatan
0x80 Tidak diautentikasi Ditampilkan sebagai respons terhadap permintaan tulis saat autentikasi gagal (termasuk kasus saat nonce lama digunakan).
0x81 Nilai tidak valid Ditampilkan jika ada nilai yang tidak valid atau data yang diterima memiliki jumlah byte yang tidak terduga.
0x82 Tidak ada izin pengguna Ditampilkan sebagai respons terhadap permintaan tulis dengan ID data 0x04: Baca kunci identitas sementara dengan izin pengguna saat perangkat tidak dalam mode penyambungan.

Tabel 7: Kode error GATT.

Membaca parameter beacon

Pencari dapat mengkueri Penyedia untuk mendapatkan parameter beacon dengan melakukan operasi tulis ke karakteristik yang terdiri dari permintaan dari tabel 2 dengan ID data 0x00. Penyedia memverifikasi bahwa kunci autentikasi sekali pakai yang diberikan cocok dengan salah satu kunci akun yang disimpan di perangkat.

Jika verifikasi gagal, Penyedia akan menampilkan error tidak diautentikasi.

Jika berhasil, Penyedia akan mengirimkan notifikasi dengan respons dari tabel 6 dengan ID data 0x00. Penyedia membuat segmen data sebagai berikut:

Octet Jenis Data Deskripsi Nilai
0 uint8 Daya yang dikalibrasi Daya yang dikalibrasi saat diterima pada jarak 0 m (nilai dalam rentang [-100, 20]). Direpresentasikan sebagai bilangan bulat bertanda, dengan resolusi 1 dBm.
1 - 4 uint32 Nilai clock Nilai clock saat ini dalam detik (big endian).
5 uint8 Pemilihan kurva Kurva elips yang digunakan untuk enkripsi:
  • 0x00 (default): SECP160R1
  • 0x01: SECP256R1 (memerlukan iklan yang diperluas)
6 uint8 Komponen Jumlah komponen yang dapat berdering:
  • 0x00: Menunjukkan bahwa perangkat tidak dapat berdering.
  • 0x01: Menunjukkan bahwa hanya satu komponen yang dapat berdering.
  • 0x02: Menunjukkan bahwa dua komponen, earbud kiri dan kanan, dapat berdering secara terpisah.
  • 0x03: Menunjukkan bahwa tiga komponen, earbud kiri dan kanan serta casing, dapat berdering secara independen.
7 uint8 Kemampuan dering Opsi yang didukung adalah:
  • 0x00: Pemilihan volume dering tidak tersedia.
  • 0x01: Pemilihan volume dering tersedia. Jika ditetapkan, Penyedia harus menerima dan menangani 3 tingkat volume seperti yang ditunjukkan dalam Operasi dering.
8-15 array byte Padding Pengisian nol untuk enkripsi AES.

Data harus dienkripsi dengan AES-ECB-128 menggunakan kunci akun yang digunakan untuk mengautentikasi permintaan.

Segmen autentikasi ditentukan sebagai 8 byte pertama dari HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data after encryption || 0x01).

Membaca status penyediaan beacon

Pencari dapat mengkueri Penyedia untuk mengetahui status penyediaan beacon dengan melakukan operasi tulis ke karakteristik yang terdiri dari permintaan dari tabel 2 dengan ID data 0x01. Penyedia memverifikasi bahwa kunci autentikasi sekali pakai yang diberikan cocok dengan salah satu kunci akun yang disimpan di perangkat.

Jika verifikasi gagal, Penyedia akan menampilkan error tidak diautentikasi.

Jika berhasil, Penyedia akan mengirimkan notifikasi dengan respons dari tabel 6 dengan ID data 0x01. Penyedia membuat segmen data sebagai berikut:

Octet Jenis Data Deskripsi Nilai
0 uint8 Status penyediaan Bitmask yang memiliki nilai berikut:
  • Bit 1 (0x01): Disetel jika kunci identitas sementara disetel untuk perangkat.
  • Bit 2 (0x02): Disetel jika kunci autentikasi sekali pakai yang diberikan cocok dengan kunci akun pemilik.
1 - 20 atau 32 array byte ID sementara saat ini 20 atau 32 byte (bergantung pada metode enkripsi yang digunakan) yang menunjukkan ID sementara saat ini yang diiklankan oleh beacon, jika ID tersebut ditetapkan untuk perangkat.

Segmen autentikasi ditentukan sebagai 8 byte pertama dari HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data || 0x01).

Menetapkan kunci identitas sementara

Untuk menyediakan Penyedia yang belum disediakan sebagai beacon FHN, atau mengubah kunci identitas sementara Penyedia yang sudah disediakan, Pencari melakukan operasi tulis ke karakteristik yang terdiri dari permintaan dari tabel 2 dengan ID data 0x02. Penyedia memverifikasi bahwa:

  • Kunci autentikasi sekali pakai yang diberikan cocok dengan kunci akun pemilik.
  • Jika hash kunci identitas sementara diberikan, kunci identitas sementara yang di-hash cocok dengan kunci identitas sementara saat ini.
  • Jika hash kunci identitas sementara tidak diberikan, verifikasi bahwa Penyedia belum disediakan sebagai beacon FHN.

Jika verifikasi gagal, Penyedia akan menampilkan error tidak diautentikasi.

Jika berhasil, kunci identitas sementara akan dipulihkan dengan mendekripsinya menggunakan AES-ECB-128 menggunakan kunci akun yang cocok. Kunci harus dipertahankan di perangkat, dan mulai saat itu, Penyedia harus mulai mengiklankan frame FHN. Kunci identitas sementara yang baru akan segera berlaku setelah koneksi BLE dihentikan. Penyedia memberi tahu dengan respons dari tabel 6 dengan ID data 0x02.

Segmen autentikasi ditentukan sebagai 8 byte pertama dari HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || 0x01).

Menghapus kunci identitas sementara

Untuk membatalkan penyediaan bagian beacon Penyedia, Pencari melakukan operasi penulisan ke karakteristik, yang terdiri dari permintaan dari tabel 2 dengan ID data 0x03. Penyedia memverifikasi bahwa:

  • Kunci autentikasi sekali pakai yang diberikan cocok dengan kunci akun pemilik.
  • Kunci identitas sementara yang di-hash cocok dengan kunci identitas sementara saat ini.

Jika Penyedia tidak disediakan sebagai beacon FHN atau verifikasi gagal, Penyedia akan menampilkan error tidak diautentikasi.

Jika berhasil, Penyedia akan melupakan kunci dan berhenti mengiklankan frame FHN. Penyedia memberi tahu dengan respons dari tabel 6 dengan ID data 0x03. Segmen autentikasi ditentukan sebagai 8 byte pertama dari HMAC-SHA256(account key, protocol major version number || the last nonce read from the characteristic || data ID || data length || 0x01).

Membaca kunci identitas sementara dengan izin pengguna

Opsi ini hanya tersedia untuk memulihkan kunci yang hilang, karena kunci hanya disimpan secara lokal oleh Seeker. Oleh karena itu, kemampuan ini hanya tersedia saat perangkat dalam mode penyambungan atau untuk waktu terbatas setelah tombol fisik ditekan di perangkat (yang merupakan izin pengguna).

Pencari harus menyimpan kunci pemulihan di backend agar dapat memulihkan kunci teks biasa, tetapi tidak menyimpan EIK itu sendiri.

Untuk membaca EIK, Seeker melakukan operasi tulis ke karakteristik, yang terdiri dari permintaan dari tabel 3 dengan ID data 0x04. Penyedia memverifikasi bahwa:

  • Kunci pemulihan yang di-hash cocok dengan kunci pemulihan yang diharapkan.
  • Perangkat dalam mode pemulihan EIK.

Jika verifikasi gagal, Penyedia akan menampilkan error tidak diautentikasi.

Jika perangkat tidak dalam mode penyambungan, Penyedia akan menampilkan error Tidak Ada Izin Pengguna.

Jika berhasil, Penyedia akan memberi tahu dengan respons dari tabel 6 dengan ID data 0x04.

Segmen autentikasi ditentukan sebagai 8 byte pertama dari HMAC-SHA256(recovery key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data || 0x01).

Operasi dering

Pencari dapat meminta Penyedia untuk memutar suara dengan melakukan operasi tulis ke karakteristik, yang terdiri dari permintaan dari tabel 4 dengan ID data 0x05. Penyedia membuat segmen data sebagai berikut:

Octet Jenis Data Deskripsi Nilai
0 uint8 Operasi dering Bitmask yang memiliki nilai berikut:
  • Bit 1 (0x01): Deringkan earbud kanan
  • Bit 2 (0x02): Deringkan earbud kiri
  • Bit 3 (0x04): Casing dering
  • 0xFF: Deringkan semua komponen
  • 0x00: Hentikan dering
1 - 2 uint16 Waktu habis Waktu tunggu dalam desidetik. Tidak boleh nol dan tidak boleh lebih besar dari 10 menit.
Penyedia menggunakan nilai ini untuk menentukan berapa lama dering harus berbunyi sebelum membisukan dirinya sendiri. Waktu tunggu akan menggantikan waktu tunggu yang sudah berlaku jika ada komponen perangkat yang sudah berdering.

Jika operasi dering disetel ke 0x00, waktu tunggu akan diabaikan.
3 uint8 Volume
  • 0x00: Default
  • 0x01: Rendah
  • 0x02: Sedang
  • 0x03: Tinggi
Arti persis dari nilai ini bergantung pada penerapan.

Setelah menerima permintaan, Penyedia akan memverifikasi bahwa:

  • Kunci autentikasi sekali pakai yang diberikan cocok dengan kunci dering.
  • Status yang diminta cocok dengan komponen yang dapat berdering.

Jika Penyedia tidak disediakan sebagai beacon FHN atau verifikasi gagal, Penyedia akan menampilkan error tidak diautentikasi. Namun, jika Penyedia mengaktifkan perlindungan pelacakan yang tidak diinginkan, dan permintaan perlindungan pelacakan yang tidak diinginkan yang memicu mengaktifkan tanda autentikasi lewati dering, Penyedia harus melewati pemeriksaan tersebut. Data autentikasi masih diharapkan diberikan oleh Pencari, tetapi dapat disetel ke nilai arbitrer.

Saat dering dimulai atau dihentikan, notifikasi akan dikirim seperti yang ditunjukkan dalam tabel 6 dengan ID data 0x05. Isi notifikasi ditentukan sebagai berikut:

Octet Jenis Data Deskripsi Nilai
0 uint8 Status berdering
  • 0x00: Dimulai
  • 0x01: Gagal memulai atau menghentikan (semua komponen yang diminta berada di luar rentang)
  • 0x02: Dihentikan (waktu habis)
  • 0x03: Berhenti (tekan tombol)
  • 0x04: Dihentikan (permintaan GATT)
1 uint8 Komponen dering Bitmask komponen yang berdering secara aktif, seperti yang ditentukan dalam permintaan.
2 - 3 uint16 Waktu habis Waktu yang tersisa untuk berdering dalam desidetik. Jika perangkat telah berhenti berdering, 0x0000 akan ditampilkan.

Segmen autentikasi ditentukan sebagai 8 byte pertama dari HMAC-SHA256(ring key, protocol major version number || the nonce used to initiate the ringing command || data ID || data length || additional data || 0x01).

Jika perangkat sudah dalam status dering yang diminta saat permintaan untuk berdering atau berhenti berdering diterima, Penyedia harus mengirimkan notifikasi dengan status berdering atau 0x00: Dimulai atau 0x04: Berhenti (permintaan GATT), masing-masing. Permintaan ini menggantikan parameter status yang ada, sehingga durasi dering dapat diperpanjang.

Jika Penyedia memiliki tombol fisik (atau penginderaan sentuh diaktifkan), tombol tersebut harus menghentikan fungsi dering jika ditekan saat dering aktif.

Mendapatkan status dering beacon

Untuk mendapatkan status berdering beacon, Seeker melakukan operasi tulis ke karakteristik, yang terdiri dari permintaan dari tabel 4 dengan ID data 0x06. Penyedia memverifikasi bahwa kunci autentikasi sekali pakai yang diberikan cocok dengan kunci dering.

Jika Penyedia tidak disediakan sebagai beacon FHN atau jika verifikasi gagal, Penyedia akan menampilkan error tidak diautentikasi.

Jika berhasil, Penyedia akan mengirimkan notifikasi dengan respons dari tabel 6 dengan ID data 0x06. Penyedia membuat segmen data sebagai berikut:

Octet Jenis Data Deskripsi Nilai
0 uint8 Komponen dering Komponen yang berdering secara aktif, seperti yang ditentukan dalam permintaan dering.
1 - 2 uint16 Waktu habis Waktu yang tersisa untuk berdering dalam desidetik. Perhatikan bahwa jika perangkat tidak berdering, 0x0000 akan ditampilkan.

Segmen autentikasi ditentukan sebagai 8 byte pertama dari HMAC-SHA256 (ring key, protocol major version number || the last nonce read from the characteristic || data ID || data length || additional data || 0x01).

Mode perlindungan dari pelacakan yang tidak diinginkan

Mode perlindungan dari pelacakan yang tidak diinginkan dimaksudkan untuk memungkinkan klien mengidentifikasi perangkat yang disalahgunakan tanpa komunikasi server. Secara default, Penyedia harus merotasi semua ID seperti yang dijelaskan dalam Rotasi ID. Layanan Hub Pencari dapat meneruskan permintaan aktivasi mode perlindungan pelacakan yang tidak diinginkan melalui jaringan Hub Pencari. Dengan melakukannya, layanan menyebabkan Penyedia menggunakan alamat MAC tetap untuk sementara, sehingga klien dapat mendeteksi perangkat dan memperingatkan pengguna tentang kemungkinan pelacakan yang tidak diinginkan.

Untuk mengaktifkan atau menonaktifkan mode perlindungan pelacakan yang tidak diinginkan dari beacon, Seeker melakukan operasi tulis ke karakteristik, yang terdiri dari permintaan dari tabel 5 dengan ID data 0x07 atau 0x08.

Saat mengaktifkan mode perlindungan dari pelacakan yang tidak diinginkan

Penyedia membuat segmen data sebagai berikut:

Octet Jenis Data Deskripsi Nilai
0 uint8 Flag Kontrol
  • 0x01: Lewati autentikasi dering. Jika disetel, permintaan dering tidak diautentikasi saat dalam mode perlindungan pelacakan yang tidak diinginkan.
Jika tidak ada flag yang ditetapkan (byte semuanya nol), bagian data dapat dihilangkan dan bagian data kosong dapat dikirim.
Flag hanya berlaku hingga mode perlindungan pelacakan yang tidak diinginkan dinonaktifkan.

Penyedia memverifikasi bahwa kunci autentikasi sekali pakai yang diberikan cocok dengan kunci perlindungan dari pelacakan yang tidak diinginkan. Jika Penyedia tidak disediakan sebagai suar FHN atau verifikasi gagal, Penyedia akan menampilkan error tidak diautentikasi.

Saat mode perlindungan pelacakan yang tidak diinginkan diaktifkan, beacon harus mengurangi frekuensi rotasi alamat pribadi MAC menjadi sekali per 24 jam. ID sementara yang diiklankan akan terus dirotasi seperti biasa. Jenis frame harus disetel ke 0x41. Status ini juga tercermin di bagian hashed flags.

Saat menonaktifkan mode perlindungan dari pelacakan yang tidak diinginkan

Penyedia memverifikasi bahwa:

  • Kunci autentikasi sekali pakai yang diberikan cocok dengan kunci perlindungan dari pelacakan yang tidak diinginkan.
  • Kunci identitas sementara yang di-hash cocok dengan kunci identitas sementara saat ini.

Jika Penyedia tidak disediakan sebagai beacon FHN atau verifikasi gagal, Penyedia akan menampilkan error tidak diautentikasi.

Saat mode perlindungan pelacakan yang tidak diinginkan dinonaktifkan, beacon akan mulai memutar alamat MAC dengan kecepatan normal lagi, yang disinkronkan dengan rotasi ID sementara. Jenis frame harus disetel kembali ke 0x40. Status juga tercermin di bagian hashed flags.

Jika berhasil, Penyedia akan mengirimkan notifikasi dengan respons dari tabel 6 dengan ID data 0x07 atau 0x08.

Segmen autentikasi ditentukan sebagai 8 byte pertama dari HMAC-SHA256(unwanted tracking protection key, protocol major version number || the last nonce read from the characteristic || data ID || data length || 0x01).

Penemuan Presisi

Bagian ini menjelaskan alur dan operasi tambahan yang diperlukan untuk penemuan presisi. Aturan yang sama untuk karakteristik GATT dan Otentikasi berlaku di sini seperti yang ditentukan di bagian spesifikasi GATT. Pencarian Presisi bersifat opsional.

Jenis pencarian presisi bergantung pada jenis teknologi pengukuran jarak yang didukung di perangkat yang terlibat dalam pencarian presisi. Teknologi pengukuran jarak yang didukung dapat ditemukan dalam spesifikasi Pengukuran jarak: Urutan pesan dan payload di luar band. Bagian selanjutnya akan membahas jenis pengalaman penemuan presisi yang dapat diharapkan berdasarkan teknologi pengukuran jarak yang digunakan.

Alur Penemuan Presisi

Bagian ini membahas alur pesan FHNA untuk Penemuan Presisi. Gambar 1 menunjukkan alur pesan, dan paragraf menjelaskan setiap pesan secara lebih detail.

Alur pesan Penemuan Presisi

Gambar 1 Alur pesan Penemuan Presisi yang umum

Perangkat Pemulai adalah perangkat yang memiliki aplikasi Hub Pencari, dan tempat fitur Penemuan Presisi diaktifkan. Inisiator adalah perangkat yang mencoba menemukan perangkat lain.

Perangkat Responder adalah perangkat yang sedang dicoba ditemukan oleh perangkat Inisiator.

Perangkat Pemulai mengirimkan pesan Permintaan Kemampuan Pengukuran Jarak ke perangkat Penerima, yang akan mencantumkan teknologi pengukuran jarak yang ingin dipelajari dari perangkat Penerima. Perangkat responder akan membalas dengan notifikasi Respons Kemampuan Pengukuran Jarak, yang berisi informasi tentang teknologi pengukuran jarak yang didukung dan kemampuannya. Responder hanya akan menyertakan informasi yang diminta oleh inisiator. Daftar kemampuan akan diurutkan berdasarkan prioritas teknologi pengukuran jarak yang disukai perangkat Responder, dengan yang pertama dalam daftar memiliki prioritas tertinggi.

Perangkat Inisiator kemudian akan menindaklanjuti dengan pesan Konfigurasi Pengukuran Jarak, di mana ia akan menentukan konfigurasi untuk setiap teknologi pengukuran jarak yang ingin digunakan untuk mengukur jarak. Setelah menerima pesan ini, perangkat Responder harus memulai pengukuran jarak untuk teknologi yang berlaku menggunakan konfigurasi yang diberikan. Perangkat responder akan mengirimkan kembali notifikasi respons Konfigurasi Pengukuran Jarak, yang berisi hasil apakah setiap teknologi pengukuran jarak individual berhasil dimulai. Beberapa teknologi pengukuran jarak harus dimulai di perangkat Inisiator dan Perangkat yang Merespons agar sesi pengukuran jarak berhasil, sementara untuk teknologi lainnya, hanya perlu dimulai di perangkat Inisiator. Namun, perangkat yang Merespons harus membalas dengan hasil yang berhasil untuk teknologi tersebut. Informasi selengkapnya tentang perilaku teknologi rentang tertentu dapat ditemukan di bagian selanjutnya.

Setelah perangkat Pemulai siap menghentikan sesi Pencarian Presisi, perangkat tersebut akan mengirim pesan Berhenti Pengukuran Jarak ke perangkat responder, yang menunjukkan teknologi pengukuran jarak mana yang harus berhenti mengukur jarak. Perangkat Responder akan merespons dengan notifikasi Respons Penghentian Pengukuran Jarak, yang menunjukkan bahwa perangkat tersebut berhasil menghentikan pengukuran jarak dengan teknologi pengukuran jarak yang diminta.

Jika saluran komunikasi FHNA BLE GATT terputus di tengah sesi Presisi Finding, tetapi saat beberapa teknologi pengukuran jarak masih mengukur jarak, perangkat responder akan menerapkan mekanisme waktu tunggu untuk memastikan bahwa perangkat tidak mengukur jarak tanpa batas. Detail akan bergantung pada setiap kasus penggunaan.

Perhatikan bahwa perangkat responder tidak boleh mengasumsikan urutan operasi akan selalu sama. Misalnya, perangkat responder harus dapat menangani beberapa operasi permintaan Kemampuan Pengukuran Jarak secara berurutan, atau bahkan operasi Konfigurasi Pengukuran Jarak langsung tanpa permintaan kemampuan sebelumnya.

Operasi Penemuan Presisi

Tabel 8 menunjukkan operasi FHNA yang ditentukan oleh dokumen ini yang diperlukan untuk Penemuan Presisi. Setiap subbagian menentukan pesan FHNA untuk setiap operasi, sedangkan konten kolom Data Tambahan merujuk pada spesifikasi Ranging: Out-of-band message sequence and payload.

Operasi ID Data Deskripsi
Permintaan Kemampuan Pengukuran Jarak 0x0A Operasi permintaan kemampuan yang akan dikirim oleh perangkat Pemrakarsa ke perangkat Penerima. Isi data operasi ini akan mencantumkan semua teknologi pengukuran jarak yang ingin diketahui Inisiator dari perangkat Responder.
Respons Kemampuan Pengukuran Jarak 0x0A Ini adalah respons notifikasi untuk operasi Permintaan Kemampuan Pengukuran Jarak. Objek ini berisi informasi tentang kemampuan untuk setiap teknologi pengukuran jarak yang didukung dan diminta oleh inisiator.
Konfigurasi Pengukuran Jarak 0x0B Operasi Konfigurasi Pengukuran Jarak berisi konfigurasi untuk teknologi pengukuran jarak yang ingin digunakan perangkat Inisiator untuk memulai pengukuran jarak dengan perangkat Responder.
Respons Konfigurasi Pengukuran Jarak 0x0B Ini adalah respons notifikasi untuk operasi Konfigurasi Pengukuran Jarak. Objek ini berisi data tentang apakah perangkat Responder berhasil memulai pengukuran jarak dengan teknologi pengukuran jarak yang diminta berdasarkan konfigurasi yang diberikan.
RFU 0x0C Operasi dengan ID Data ini tidak digunakan dan dicadangkan untuk penggunaan pada masa mendatang.
Hentikan Pengukuran Jarak 0x0D Operasi Stop Ranging yang dikirim oleh perangkat Initiator berisi informasi tentang teknologi pengukuran jarak yang harus dihentikan oleh perangkat Responder.
Berhenti Merespons Jarak 0x0D Ini adalah respons notifikasi untuk operasi Stop Ranging. Berisi data apakah operasi penghentian untuk teknologi pengukuran jarak tertentu berhasil atau tidak.

Tabel 8: Operasi Pencarian Presisi.

Operasi Permintaan Kemampuan Pengukuran Jarak

Tabel 9 menentukan pesan Permintaan Kemampuan Pengukuran Jarak.

Octet Jenis data Deskripsi Nilai
0 uint8 ID Data 0x0A - Operasi Permintaan Kemampuan Pengukuran Jarak
1 uint8 Panjang data di waktu/bulan/tempat/tanggal tertentu
2 array byte Kunci autentikasi satu kali 8 byte pertama HMAC-SHA256(Kunci Akun, Nomor versi utama protokol || nonce terakhir yang dibaca dari karakteristik || ID Data || Panjang Data || Data Tambahan).
10 array byte Data Tambahan Pesan Ranging Capability Request seperti yang ditentukan dalam spesifikasi Ranging: Out-of-band message sequence and payload (header dan payload)

Tabel 9: Permintaan Kemampuan Pengukuran Jarak.

Operasi Respons Kemampuan Pengukuran Jarak

Tabel 10 mendefinisikan pesan Respons Kemampuan Pengukuran Jarak.

Octet Jenis data Deskripsi Nilai
0 uint8 ID Data 0x0A: Respons Kemampuan Pengukuran Jarak
1 uint8 Panjang data di waktu/bulan/tempat/tanggal tertentu
2 array byte Kunci autentikasi satu kali 8 byte pertama HMAC-SHA256(Kunci Akun, Nomor versi utama protokol || nonce terakhir yang dibaca dari karakteristik || ID Data || Panjang data || Data Tambahan || 0x01).
10 array byte Data Tambahan Pesan Ranging Capability Response seperti yang ditentukan dalam spesifikasi Ranging: Out-of-band message sequence and payload (header dan payload)

Tabel 10: Respons Kemampuan Pengukuran Jarak.

Operasi Konfigurasi Pengukuran Jarak

Tabel 11 mendefinisikan pesan Konfigurasi Pengukuran Jarak.

Octet Jenis data Deskripsi Nilai
0 uint8 ID Data 0x0B - Set Ranging Configuration
1 uint8 Panjang data di waktu/bulan/tempat/tanggal tertentu
2 array byte Kunci autentikasi satu kali 8 byte pertama HMAC-SHA256(Kunci Akun, Nomor versi utama protokol || nonce terakhir yang dibaca dari karakteristik || ID Data || Panjang Data || Data Tambahan).
10 array byte Data Tambahan Pesan Ranging Configuration seperti yang ditentukan dalam spesifikasi Ranging: Out-of-band message sequence and payload (header dan payload)

Tabel 11: Konfigurasi Pengukuran Jarak.

Operasi Respons Konfigurasi Pengukuran Jarak

Tabel 12 menentukan pesan Respons Konfigurasi Pengukuran Jarak.

Octet Jenis data Deskripsi Nilai
0 uint8 ID Data 0x0B - Set Ranging Configuration Response
1 uint8 Panjang data di waktu/bulan/tempat/tanggal tertentu
2 array byte Kunci autentikasi satu kali 8 byte pertama HMAC-SHA256(Kunci Akun, Nomor versi utama protokol || nonce terakhir yang dibaca dari karakteristik || ID Data || Panjang data || Data Tambahan || 0x01).
10 array byte Data Tambahan Pesan Ranging Configuration Response seperti yang ditentukan dalam spesifikasi Ranging: Out-of-band message sequence and payload (header dan payload)

Tabel 12: Respons Konfigurasi Pengukuran Jarak.

Hentikan operasi Pengukuran Jarak

Tabel 13 menentukan pesan Stop Ranging.

Octet Jenis data Deskripsi Nilai
0 uint8 ID Data 0x0D - Penghentian Pengukuran Jarak
1 uint8 Panjang data di waktu/bulan/tempat/tanggal tertentu
2 array byte Kunci autentikasi satu kali 8 byte pertama HMAC-SHA256(Kunci Akun, Nomor versi utama protokol || nonce terakhir yang dibaca dari karakteristik || ID Data || Panjang data).
10 array byte Data Tambahan Pesan Stop Ranging seperti yang ditentukan dalam spesifikasi Ranging: Out-of-band message sequence and payload (header dan payload)

Tabel 13: Berhenti Mengukur Jarak.

Operasi Stop Ranging Response

Tabel 14 menentukan pesan Stop Ranging Response.

Octet Jenis data Deskripsi Nilai
0 uint8 ID Data 0x0D - Respons Penghentian Pengukuran Jarak
1 uint8 Panjang data di waktu/bulan/tempat/tanggal tertentu
2 array byte Kunci autentikasi satu kali 8 byte pertama HMAC-SHA256(Kunci Akun, Nomor versi utama protokol || nonce terakhir yang dibaca dari karakteristik || ID Data || Panjang data || Data Tambahan || 0x01).
10 array byte Data Tambahan Pesan Stop Ranging Response seperti yang ditentukan dalam spesifikasi Ranging: Out-of-band message sequence and payload (header dan payload)

Tabel 14: Berhenti Merespons Rentang.

Perlindungan dari pelacakan yang tidak diinginkan dengan Penemuan yang Presisi

Jika mode perlindungan dari pelacakan yang tidak diinginkan diaktifkan, seperti yang dijelaskan di bagian perlindungan dari pelacakan yang tidak diinginkan, alur yang sama yang berlaku untuk melewati pemeriksaan autentikasi untuk pesan dering juga berlaku untuk semua pesan Pencarian Presisi yang ditentukan dalam dokumen ini untuk perangkat yang ingin mendukung fitur ini.

Spesifikasi Teknologi Penentuan Jarak untuk Penemuan Presisi

Bagian ini berisi detail yang khusus untuk teknologi pengukuran jarak.

Spesifikasi ultra-wideband (UWB)

Detail spesifik UWB.

Tingkat Penemuan Presisi

Sesi Precision Finding yang menggunakan UWB sebagai teknologi pengukuran jarak dapat melihat informasi jarak dan arah. Interval pengukuran jarak harus minimal 240 md, dengan 96 md lebih disarankan untuk panduan yang optimal.

ID Konfigurasi

Data konfigurasi di luar band yang dipertukarkan untuk UWB tidak berisi kumpulan lengkap parameter yang dapat dikonfigurasi yang diperlukan UWB untuk memulai sesi pengukuran jarak UWB. Beberapa parameter dipilih secara implisit oleh ID konfigurasi yang dipilih.

Setiap ID konfigurasi adalah serangkaian parameter konfigurasi UWB yang telah ditentukan sebelumnya yang didokumentasikan secara publik. Untuk kasus penggunaan Pencarian Presisi, perangkat responder harus mendukung config Id 6, dan secara opsional config Id 3.

Inisiator dan Responder UWB

Untuk kasus penggunaan Precision Finding, perangkat yang dicatat sebagai perangkat Pemulai dalam dokumen ini akan menjadi responder UWB, dan perangkat yang dicatat sebagai perangkat Responder dalam dokumen ini akan menjadi pemulai UWB. Hal ini karena perangkat inisiator UWB mengonsumsi lebih sedikit daya daripada perangkat responder UWB, dan dalam sebagian besar kasus, perangkat Responder akan menjadi perangkat periferal dengan baterai terbatas.

Artinya, perangkat Responder harus menunjukkan bahwa perangkat tersebut mendukung peran inisiator UWB dalam pesan Respons Kemampuan Pengukuran Jarak.

  • Channel 9 harus didukung
  • Untuk panduan yang optimal, interval pengukuran jarak 96 md direkomendasikan, jika tidak, interval 240 md harus didukung.
  • Durasi slot 1 md direkomendasikan untuk menghemat baterai, tetapi 2 md juga didukung.
  • Chip UWB harus kompatibel dengan FIRA v1.2 + P-STS.
  • BPRF bersifat wajib, HPRF direkomendasikan, tetapi opsional. Mode yang didukung atau dipilih ditentukan oleh indeks pembuka yang didukung atau dipilih.
  • Jenis keamanan sesi: P-STS
Spesifikasi BLE Channel Sounding (CS)

Detail spesifik BLE CS.

Tingkat Penemuan Presisi

Sesi Precision Finding yang menggunakan CS sebagai teknologi pengukuran jarak hanya akan menghasilkan pengukuran jarak, dan arah tidak diberikan saat ini.

Koneksi yang diperlukan antar-perangkat

Sesi Pencarian Presisi menggunakan Channel Sounding tidak akan berfungsi jika perangkat tidak terhubung. Bonding yang sudah ada antara perangkat pemrakarsa dan perangkat responder diperlukan. Spesifikasi ini tidak menyediakan cara untuk membuat koneksi antara perangkat. Sebagai gantinya, developer kasus penggunaanlah yang harus membuat hubungan antara perangkat ini.

Tindakan yang diperlukan oleh pihak responden untuk CS

Tidak seperti UWB, yang mengharuskan kedua perangkat memanggil API pengukuran jarak mulai dan berhenti UWB secara eksplisit, untuk CS, hanya perangkat pemrakarsa yang diperlukan untuk memulai pengukuran jarak CS dengan memanggil stack Bluetooth, dan inisialisasi lainnya di sisi responder terjadi dalam band menggunakan Bluetooth (BT). Artinya, setelah menerima pesan Konfigurasi Pengukuran Jarak atau pesan Berhenti Mengukur Jarak untuk CS, sisi responder tidak perlu melakukan apa pun jika BT diaktifkan, selain membalas dengan notifikasi pesan Respons Konfigurasi Pengukuran Jarak. Perangkat responder berpotensi menggunakan pesan tersebut sebagai pemicu untuk memperbarui UI jika ada layar, atau terlepas dari adanya layar, pesan tersebut dapat digunakan untuk memberikan respons visual tentang status perangkat, misalnya mengedipkan LED perangkat.

RTT NAN Wi-Fi

Detail spesifik RTT NAN Wi-Fi.

Tingkat Penemuan Presisi

Sesi Precision Finding yang menggunakan Wi-Fi NAN RTT sebagai teknologi pengukuran jarak akan menyebabkan pengukuran hanya jarak, arah tidak diberikan saat ini.

RSSI BLE

Detail spesifik RSSI BLE.

Tingkat Penemuan Presisi

Sesi Penemuan Presisi yang hanya menggunakan BLE RSSI sebagai teknologi pengukuran jarak tidak akan dapat memperoleh informasi jarak atau arah, karena BLE RSSI bukan teknologi pengukuran jarak yang akurat. Sebagai gantinya, pengguna akan melihat panduan yang menunjukkan bahwa perangkat dekat atau perangkat jauh.

Frame yang diiklankan

Setelah penyediaan, Penyedia diharapkan mengiklankan frame FHN setidaknya sekali setiap 2 detik. Jika frame Sambungan Cepat diiklankan, Penyedia harus menyisipkan frame FHN dalam iklan Sambungan Cepat reguler. Misalnya, setiap dua detik, Penyedia harus mengiklankan tujuh iklan Fast Pair dan satu iklan FHN.

Daya pancar Bluetooth yang dilakukan untuk iklan FHN harus disetel ke minimal 0 dBm.

Frame FHN membawa kunci publik yang digunakan untuk mengenkripsi laporan lokasi oleh klien yang mendukung yang berkontribusi ke jaringan urun daya. Dua jenis kunci kurva elips tersedia: kunci 160-bit yang sesuai dengan frame BLE 4 lama, atau kunci 256-bit yang memerlukan BLE 5 dengan kemampuan iklan yang diperluas. Implementasi Provider menentukan kurva mana yang digunakan.

Frame FHN disusun sebagai berikut.

Octet Nilai Deskripsi
0 0x02 Panjang
1 0x01 Nilai jenis data flag
2 0x06 Data tanda
3 0x18 atau 0x19 Panjang
4 0x16 Nilai jenis data data layanan
5 0xAA UUID layanan 16-bit
6 0xFE ...
7 0x40 atau 0x41 Jenis frame FHN dengan indikasi mode perlindungan dari pelacakan yang tidak diinginkan
8..27 ID sementara 20 byte
28 Hash tanda

Tabel 15: Frame FHN yang mendukung kurva 160-bit.

Tabel 16 menunjukkan offset byte dan nilai untuk kurva 256-bit.

Octet Nilai Deskripsi
0 0x02 Panjang
1 0x01 Nilai jenis data flag
2 0x06 Data tanda
3 0x24 atau 0x25 Panjang
4 0x16 Nilai jenis data data layanan
5 0xAA UUID layanan 16-bit
6 0xFE ...
7 0x40 atau 0x41 Jenis frame FHN dengan indikasi mode perlindungan dari pelacakan yang tidak diinginkan
8..39 ID sementara 32 byte
40 Hash tanda

Tabel 16: Frame FHN yang mendukung kurva 256-bit.

Penghitungan ID sementara (EID)

Angka acak dibuat dengan mengenkripsi struktur data berikut menggunakan AES-ECB-256 dengan kunci identitas sementara:

Octet Kolom Deskripsi
0 - 10 Padding Nilai = 0xFF
11 K Eksponen periode rotasi
12 - 15 TS[0]...TS[3] Penghitung waktu suar, dalam format big-endian 32-bit. Bit terendah K dihapus.
16 - 26 Padding Nilai = 0x00
27 K Eksponen periode rotasi
28 - 31 TS[0]...TS[3] Penghitung waktu suar, dalam format big-endian 32-bit. Bit terendah K dihapus.

Tabel 17: Konstruksi angka pseudorandom.

Hasil komputasi ini adalah angka 256-bit, yang dilambangkan dengan r'.

Untuk penghitungan lainnya, SECP160R1 atau SECP256R1 digunakan untuk operasi kriptografi kurva elips. Lihat definisi kurva di SEC 2: Recommended Elliptic Curve Domain Parameters, yang mendefinisikan Fp, n, dan G yang dirujuk berikutnya.

r' kini diproyeksikan ke kolom hingga Fp dengan menghitung r = r' mod n. Terakhir, hitung R = r * G, yang merupakan titik pada kurva yang merepresentasikan kunci publik yang digunakan. Beacon mengiklankan Rx, yang merupakan koordinat x dari R, sebagai ID sementara.

Flag yang di-hash

Kolom tanda hash dihitung sebagai berikut (bit dirujuk dari yang paling signifikan hingga yang paling tidak signifikan):

  • Bit 0-4: Dicadangkan (disetel ke nol).
  • Bit 5-6 menunjukkan level baterai perangkat sebagai berikut:
    • 00: Indikasi level baterai tidak didukung
    • 01: Level baterai normal
    • 10: Level baterai rendah
    • 11: Level baterai sangat rendah (baterai perlu segera diganti)
  • Bit 7 disetel ke 1 jika beacon berada dalam mode perlindungan dari pelacakan yang tidak diinginkan, dan 0 jika tidak.

Untuk menghasilkan nilai akhir byte ini, byte tersebut di-XOR dengan byte paling tidak signifikan dari SHA256(r).

Perhatikan bahwa r harus diselaraskan dengan ukuran kurva. Tambahkan nol sebagai bit paling signifikan jika representasinya lebih pendek dari 160 atau 256 bit, atau bit paling signifikan harus dipangkas jika representasinya lebih besar dari 160 atau 256 bit.

Jika suar tidak mendukung indikasi level baterai, dan tidak dalam mode perlindungan dari pelacakan yang tidak diinginkan, suar tersebut diizinkan untuk menghilangkan byte ini sepenuhnya dari iklan.

Enkripsi dengan EID

Untuk mengenkripsi pesan m, orang yang melihat (telah membaca Rx dari beacon) akan melakukan hal berikut:

  1. Pilih angka acak s dalam Fp, seperti yang ditentukan di bagian Penghitungan EID.
  2. Compute S = s * G.
  3. Hitung R = (Rx, Ry) dengan substitusi dalam persamaan kurva dan pilih nilai Ry arbitrer dari kemungkinan hasil.
  4. Hitung kunci AES 256-bit k = HKDF-SHA256((s * R)x) dengan (s * R)x adalah koordinat x dari hasil perkalian kurva. Salt tidak ditentukan.
  5. Misalkan URx dan LRx adalah 80-bit atas dan bawah dari Rx, masing-masing, dalam format big-endian. Dengan cara yang sama, tentukan USx dan LSx untuk S.
  6. Compute nonce = LRx || LSx.
  7. Compute (m’, tag) = AES-EAX-256-ENC(k, nonce, m).
  8. Mengirim (URx, Sx, m’, tag) ke pemilik, mungkin melalui layanan jarak jauh yang tidak tepercaya.

Dekripsi nilai yang dienkripsi dengan EID

Klien pemilik, yang memiliki EIK dan eksponen periode rotasi, mendekripsi pesan sebagai berikut:

  1. Mengingat URx, dapatkan nilai counter waktu beacon yang menjadi dasar URx. Hal ini dapat dilakukan oleh nilai Rx komputasi klien pemilik untuk nilai counter waktu suar untuk masa lalu dan masa depan yang baru-baru ini.
  2. Mengingat nilai penghitung waktu suar yang menjadi dasar URx, hitung nilai r yang diantisipasi seperti yang ditentukan di bagian Penghitungan EID.
  3. Hitung R = r * G, dan verifikasi kecocokan dengan nilai URx yang diberikan oleh pelapor.
  4. Hitung S = (Sx, Sy) dengan substitusi dalam persamaan kurva dan pilih nilai Sy arbitrer dari kemungkinan hasil.
  5. Hitung k = HKDF-SHA256((r * S)x) dengan (r * S)x adalah koordinat x dari hasil perkalian kurva.
  6. Compute nonce = LRx || LSx.
  7. Compute m = AES-EAX-256-DEC(k, nonce, m’, tag).

Rotasi ID

Alamat BLE yang dapat diselesaikan (RPA) atau tidak dapat diselesaikan (NRPA) harus digunakan untuk mengiklankan frame FHN. RPA diperlukan untuk perangkat LE Audio (LEA) dan direkomendasikan untuk perangkat lain, kecuali tag pelacak yang tidak menggunakan penggabungan.

Iklan Sambungan Cepat, iklan FHN, dan alamat BLE yang sesuai harus dirotasi secara bersamaan. Rotasi harus terjadi setiap rata-rata 1.024 detik. Titik yang tepat saat beacon mulai mengiklankan ID baru harus diacak dalam jendela.

Pendekatan yang direkomendasikan untuk mengacak waktu rotasi adalah dengan menyetelnya ke waktu rotasi yang diantisipasi berikutnya (jika tidak ada pengacakan yang diterapkan) ditambah faktor waktu acak positif dalam rentang 1 hingga 204 detik.

Saat perangkat dalam mode perlindungan dari pelacakan yang tidak diinginkan, alamat BLE iklan FHN harus diperbaiki, tetapi RPA untuk iklan FP yang tidak dapat ditemukan (seperti Fast Pair) harus terus dirotasi. Anda dapat menggunakan alamat yang berbeda untuk protokol yang berbeda.

Pemulihan dari kehilangan daya

Penyelesaian ID sementara sangat terkait dengan nilai clock-nya pada waktu iklan, jadi penting bagi Penyedia untuk dapat memulihkan nilai clock-nya jika terjadi kehilangan daya. Sebaiknya Penyedia menulis nilai clock saat ini ke memori non-volatile setidaknya sekali sehari, dan saat waktu booting, Penyedia memeriksa NVM untuk melihat apakah ada nilai yang dapat digunakan untuk inisialisasi. Resolver ID sementara akan menerapkan resolusi selama periode waktu yang cukup untuk memungkinkan penyimpangan jam yang wajar dan pemulihan kehilangan daya jenis ini.

Penyedia tetap harus berupaya semaksimal mungkin untuk meminimalkan perbedaan waktu, karena periode waktu penyelesaian terbatas. Setidaknya satu metode sinkronisasi jam tambahan harus diterapkan (mengiklankan frame Fast Pair yang tidak dapat ditemukan atau menerapkan aliran pesan).

Panduan penerapan Sambungan Cepat

Bagian ini menjelaskan aspek khusus penerapan Fast Pair di Penyedia yang mendukung FHN.

Pedoman khusus tag pelacak lokasi

  • Jika Penyedia sudah disambungkan, tetapi FHN belum disediakan dalam waktu 5 menit (atau jika update OTA diterapkan saat perangkat disambungkan, tetapi FHN belum disediakan), Penyedia harus dikembalikan ke konfigurasi pabriknya dan menghapus kunci akun yang tersimpan.
  • Setelah Penyedia disambungkan, alamat MAC-nya tidak boleh berubah hingga FHN disediakan atau hingga 5 menit berlalu.
  • Jika kunci identitas sementara dihapus dari perangkat, perangkat harus melakukan reset ke setelan pabrik dan menghapus kunci akun yang tersimpan juga.
  • Penyedia harus menolak upaya penyambungan Bluetooth normal dan hanya menerima penyambungan Fast Pair.
  • Penyedia harus menyertakan mekanisme yang memungkinkan pengguna menghentikan sementara iklan tanpa mereset perangkat ke setelan pabrik (misalnya, menekan kombinasi tombol).
  • Setelah kehilangan daya, perangkat harus mengiklankan frame Sambungan Cepat yang tidak dapat ditemukan hingga pemanggilan read beacon parameters berikutnya. Hal ini memungkinkan Seeker mendeteksi perangkat dan menyinkronkan waktu meskipun terjadi perbedaan waktu yang signifikan.
  • Saat mengiklankan frame Sambungan Cepat yang tidak dapat ditemukan, indikasi UI tidak boleh diaktifkan.
  • Frame Sambungan Cepat yang dapat ditemukan tidak boleh diiklankan saat Provider disediakan untuk FHN.
  • Penyedia tidak boleh mengekspos informasi identitas apa pun secara tidak diautentikasi (misalnya, nama atau ID).

Pedoman khusus perangkat Bluetooth Klasik

Bagian ini menjelaskan aspek khusus perangkat Bluetooth klasik yang mendukung FHN.

Penyediaan FHN untuk perangkat yang sudah disambungkan

Penyedia tidak selalu disiapkan untuk FHN saat melakukan penyandingan dengan Pencari, tetapi beberapa saat setelah itu. Dalam hal ini, Penyedia mungkin tidak memiliki alamat MAC BLE terbaru yang diperlukan untuk membuat koneksi GATT. Penyedia harus mendukung setidaknya salah satu cara berikut agar Pencari mendapatkan alamat BLE-nya saat sudah disambungkan:

  • Penyedia dapat secara berkala mengiklankan data akun Fast Pair yang memungkinkan Pencari menemukan alamat BLE-nya melalui pemindaian BLE.
    Pendekatan ini cocok untuk Penyedia yang tidak menerapkan aliran pesan.
  • Penyedia dapat memberikan data ini melalui aliran pesan Sambungan Cepat melalui Bluetooth klasik.
    Pendekatan ini cocok untuk Penyedia yang tidak mengiklankan frame Sambungan Cepat saat terhubung ke Pencari melalui Bluetooth.

Mendukung kedua pendekatan ini akan meningkatkan peluang pengguna dapat menyediakan perangkat untuk FHN.

Aliran pesan Sambungan Cepat

Penyedia dapat menerapkan aliran pesan Sambungan Cepat dan menggunakannya untuk memberi tahu Pencari tentang Informasi perangkat. Menerapkan aliran pesan memungkinkan fitur tertentu seperti yang dijelaskan di bagian ini.

Penyedia harus mengirim pesan informasi perangkat sekali setiap kali saluran RFCOMM aliran pesan dibuat.

Versi firmware (kode informasi perangkat 0x09) dan kemampuan pelacakan

Saat update firmware menambahkan dukungan FHN ke Penyedia, Seeker yang terhubung dapat memberi tahu pengguna tentang hal tersebut dan menawarkan untuk menyediakan FHN. Jika tidak, pengguna harus membuka daftar perangkat Bluetooth secara manual untuk memulai penyediaan FHN.

Untuk mengizinkannya, Penyedia harus menggunakan properti Versi firmware (kode 0x09) untuk melaporkan nilai string yang merepresentasikan versi firmware. Selain itu, Penyedia harus mendukung protokol yang memungkinkan Pencari mengetahui perubahan Kemampuan karena update firmware.

Octet Jenis Data Deskripsi Nilai
0 uint8 Peristiwa informasi perangkat 0x03
1 uint8 Versi firmware 0x09
2 - 3 uint16 Panjang data tambahan berbeda-beda
var array byte String versi berbeda-beda

Tabel 18: Peristiwa informasi perangkat: versi firmware yang diupdate.

Setelah menerima permintaan update kemampuan (0x0601), jika Penyedia telah mengaktifkan dukungan untuk pelacakan FHN, Penyedia harus merespons seperti yang ditunjukkan dalam tabel 12.

Octet Jenis Data Deskripsi Nilai
0 uint8 Peristiwa sinkronisasi kemampuan perangkat 0x06
1 uint8 Pelacakan FHN 0x03
2 - 3 uint16 Panjang data tambahan 0x0007
4 uint8 Status penyediaan FHN 0x00 jika tidak disediakan; 0x01 jika disediakan oleh akun mana pun
5 - 10 array byte Alamat MAC BLE perangkat saat ini berbeda-beda

Tabel 19: Peristiwa sinkronisasi kemampuan perangkat: menambahkan kemampuan pelacakan.

ID sementara saat ini (kode informasi perangkat 0x0B)

Penyedia dapat menggunakan ID sementara saat ini (kode 0x0B) untuk melaporkan nilai EID dan clock saat ini saat Penyedia disediakan untuk FHN, guna menyelaraskan Pencari jika terjadi perbedaan waktu (misalnya, karena baterai habis). Jika tidak, Seeker akan memulai koneksi yang lebih mahal dan kurang andal untuk tujuan ini.

Octet Jenis Data Deskripsi Nilai
0 uint8 Peristiwa informasi perangkat 0x03
1 uint8 ID sementara saat ini 0x0B
2 - 3 uint16 Panjang data tambahan 0x0018 atau 0x0024
4 - 7 array byte Nilai clock Contoh: 0x13F9EA80
8 - 19 atau 31 array byte EID saat ini Contoh: 0x1122334455667788990011223344556677889900

Tabel 20: Peristiwa informasi perangkat: sinkronisasi jam.

Reset ke setelan pabrik

Untuk perangkat yang mendukung reset ke setelan pabrik: jika reset ke setelan pabrik dilakukan, Penyedia harus menghentikan pengiriman sinyal dan menghapus kunci identitas sementara serta semua kunci akun yang disimpan, termasuk kunci akun pemilik.

Setelah reset ke setelan pabrik (baik manual maupun terprogram), Penyedia tidak boleh langsung mengiklankan Fast Pair, untuk mencegah alur penyambungan dimulai segera setelah pengguna menghapus perangkat.

Pencegahan pelacakan yang tidak diinginkan

Perangkat FHN bersertifikasi juga harus memenuhi persyaratan dalam versi penerapan spesifikasi lintas platform untuk Mendeteksi Pelacak Lokasi yang Tidak Diinginkan (DULT).

Pedoman yang relevan khusus untuk FHN agar mematuhi spesifikasi DULT:

  • Semua perangkat yang kompatibel dengan FHN harus didaftarkan di Konsol Perangkat di Sekitar, dan mengaktifkan kemampuan "Temukan Hub".
  • Perangkat harus menerapkan layanan dan karakteristik Non-Pemilik Aksesori yang ditentukan dalam versi penerapan spesifikasi DULT, termasuk operasi Informasi Aksesori dan Kontrol non-pemilik.
  • Selama periode kompatibilitas mundur, sebagaimana ditentukan dalam spesifikasi DULT, tidak ada perubahan pada frame yang diiklankan sebagaimana ditentukan dalam dokumen ini.
  • "Mode perlindungan dari pelacakan yang tidak diinginkan" yang ditentukan dalam dokumen ini dipetakan ke "status terpisah" yang ditentukan oleh spesifikasi DULT.
  • Panduan untuk menerapkan opcode Informasi Aksesori:
    • Get_Product_Data harus menampilkan ID model yang diberikan oleh konsol, yang diisi dengan angka nol agar sesuai dengan persyaratan 8 byte. Misalnya, ID model 0xFFFFFF ditampilkan sebagai 0x0000000000FFFFFF.
    • Get_Manufacturer_Name dan Get_Model_Name harus cocok dengan nilai yang diberikan di konsol.
    • Get_Accessory_Category dapat menampilkan nilai "Pelacak Lokasi" umum jika tidak ada kategori lain yang lebih sesuai dengan jenis perangkat.
    • Get_Accessory_Capabilities harus menunjukkan dukungan untuk dering serta pencarian ID BLE.
    • Get_Network_ID harus menampilkan ID Google (0x02).
  • Panduan untuk menerapkan opcode Get_Identifier:
    • Operasi hanya akan menampilkan respons yang valid selama 5 menit setelah pengguna mengaktifkan mode 'identifikasi', yang memerlukan kombinasi penekanan tombol. Sinyal visual atau audio harus menunjukkan kepada pengguna bahwa penyedia memasuki mode tersebut. Petunjuk khusus model untuk mengaktifkan mode tersebut harus diberikan kepada Google sebagai persyaratan untuk sertifikasi dan setidaknya 10 hari sebelum ada update atau modifikasi pada petunjuk tersebut.
    • Respons dibuat sebagai: 10 byte pertama ID sementara saat ini, diikuti dengan 8 byte pertama HMAC-SHA256(recovery key, the truncated current ephemeral identifier).
  • Panduan untuk menerapkan ID melalui NFC:
    • Sebagai URL, gunakan find-my.googleapis.com/lookup.
    • Sebagai parameter e, gunakan respons yang sama seperti yang dibuat untuk Get_Identifier, yang dienkode dalam hex.
    • Sebagai parameter pid, gunakan respons yang sama seperti yang dibuat untuk Get_Product_Data, yang dienkode dalam hex.
  • Perangkat harus menyertakan pembuat suara dan mendukung fungsi dering. Sesuai spesifikasi DULT, pembuat suara harus memancarkan suara dengan kekerasan puncak minimum 60 Phon sebagaimana ditentukan oleh ISO 532-1:2017.
  • Panduan untuk menerapkan opcode Sound_Start:
    • Perintah ini akan memicu dering di semua komponen yang tersedia.
    • Volume maksimum yang didukung harus digunakan.
    • Durasi dering yang direkomendasikan adalah 12 detik.
  • Tag pelacak harus menyertakan mekanisme yang memungkinkan pengguna menghentikan iklan untuk sementara tanpa mereset perangkat ke setelan pabrik (misalnya, menekan kombinasi tombol).
    • Petunjuk penonaktifan harus didokumentasikan di URL yang tersedia secara publik dan diberikan kepada Google sebagai persyaratan untuk mendapatkan sertifikasi dan setidaknya 10 hari sebelum ada pembaruan atau modifikasi pada petunjuk tersebut.
    • URL harus mendukung pelokalan. Bergantung pada klien, bahasa akan diberikan sebagai parameter kueri ("hl=en") atau menggunakan header HTTP "accept-language".

Panduan protokol yang dapat dialihkan

  • Hanya satu protokol yang boleh digunakan dalam satu waktu. Pastikan tidak lebih dari satu jaringan dapat beroperasi di perangkat secara bersamaan. Persyaratan ini diperlukan untuk memastikan tidak ada pencampuran data pengguna sensitif antara berbagai protokol.
  • Sebaiknya sertakan alur kerja reset total ke dalam perangkat yang memungkinkan pengguna menyiapkan ulang perangkat dengan jaringan yang berbeda.
  • Proses mengupdate perangkat ke jaringan harus mudah digunakan dan adil di antara jaringan. Pengguna harus dapat memilih jaringan yang ingin digunakan tanpa memberikan preferensi ke salah satu jaringan. Alur ini harus disetujui oleh tim Google.

Update firmware

Proses dan distribusi update OTA harus dikelola oleh partner menggunakan alur kerja aplikasi Seluler atau Web mereka sendiri.

Sambungan Cepat mendukung pengiriman notifikasi kepada pengguna, yang menginformasikan update OTA yang tersedia. Untuk menggunakan mekanisme ini:

  • Versi firmware terbaru harus diupdate di Konsol Perangkat Terdekat.
  • Aplikasi pendamping harus disetel di Konsol Perangkat di Sekitar. Harus mendukung maksud update firmware.
  • Penyedia harus menerapkan karakteristik GATT Revisi firmware.

Untuk mencegah pelacakan, akses ke karakteristik Revisi firmware harus dibatasi. Seeker akan membaca status penyediaan terlebih dahulu dan memberikan kunci autentikasi, seperti yang ditentukan dalam spesifikasi ini, lalu membaca revisi firmware. Hal ini akan dilakukan melalui koneksi yang sama. Jika upaya dilakukan untuk membaca revisi firmware, dan Penyedia tidak terikat atau operasi terautentikasi berhasil diselesaikan melalui koneksi yang sama, Penyedia harus menampilkan error tidak terautentikasi.

Kompatibilitas

Jaringan Hub Pencari memerlukan layanan lokasi dan Bluetooth yang diaktifkan. Memerlukan layanan seluler atau koneksi internet. Berfungsi di Android 9 atau yang lebih baru dan di negara tertentu untuk pengguna yang memenuhi syarat usia.

Log perubahan

Versi FHN Tanggal Komentar
v1 Rilis awal spesifikasi FHN untuk akses awal.
v1.1 Feb 2023
  • Menambahkan indikasi cleartext mode perlindungan dari pelacakan yang tidak diinginkan.
  • Menambahkan opsi untuk melewati autentikasi permintaan dering saat dalam mode perlindungan dari pelacakan yang tidak diinginkan.
v1.2 Apr 2023
  • Memperbarui definisi AK pemilik.
  • Menambahkan rekomendasi untuk memulihkan dari kehilangan daya dalam tag locator.
  • Menambahkan klarifikasi untuk pengacakan alamat MAC.
  • Menambahkan klarifikasi tentang rotasi alamat MAC saat dalam mode perlindungan dari pelacakan yang tidak diinginkan.
  • Menambahkan panduan tentang cara menonaktifkan tag pencari lokasi.
v1.3 Des 2023
  • Menambahkan klarifikasi tentang identifikasi informasi yang terekspos oleh tag pelacak.
  • Menambahkan persyaratan untuk menerapkan spesifikasi pencegahan pelacakan yang tidak diinginkan.
  • Menambahkan panduan untuk perangkat protokol yang dapat diubah.