Kode Autentikasi Pesan

Streaming pesan digunakan untuk mengonfigurasi Pengalihan Audio. Baca bagian Pesan pengalihan audio. Untuk konfigurasi penting ini, Penyedia harus memastikan bahwa pesan dikirim oleh GMSCore (modul Sambungan Cepat) dan bukan aplikasi lain di Pencari Kerja.

Membuat MAC (kode autentikasi pesan)

FP Seeker menambahkan kode autentikasi pesan untuk pesan konfigurasi perangkat menggunakan HMAC-SHA256. MAC pesan terdiri dari 8 byte pertama dari:

 sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, message)))))

di mana

  1. K dihasilkan oleh concat(kunci akun, ZEROs 48 byte).
  2. message adalah data tambahan dari aliran pesan.
  3. nonce dihasilkan oleh concat(session_nonce, message_nonce); nonce sesi dan nonce pesan ditentukan di bagian berikut.
  4. opad adalah padding luar berukuran 64 byte, yang terdiri dari byte berulang dengan nilai 0x5C.
  5. ipad adalah padding dalam berukuran 64 byte, yang terdiri dari byte berulang bernilai 0x36.

Nonce sesi dan nonce pesan

Untuk mencegah serangan replay, Penyedia perlu memastikan bahwa nonce tidak diulang. Karena mempertahankan sinkronisasi jam atau penghitung di Penyedia dan Pencari Kerja tidaklah mudah, Penyedia menghasilkan nonce sesi (per koneksi), yang dibagikan dengan semua pesan selama koneksi, sementara Pencari menghasilkan nonce pesan (per pesan), yang dihasilkan secara acak untuk setiap pesan. Nonce untuk menghasilkan MAC setiap pesan adalah kombinasi nonce sesi dan nonce pesan, yaitu concat(session_nonce, message_nonce).

Kita menambahkan nonce sesi ke grup peristiwa Informasi perangkat:

Nama Grup Pesan Nilai
Peristiwa informasi perangkat 0x03
Nama Kode Pesan Nilai
Nonce sesi 0x0A

Nonce sesi harus dibuat dan dikirim ke Pencari saat RFCOMM terhubung:

Oktet Jenis Data Deskripsi Nilai
0 uint8 Peristiwa informasi perangkat 0x03
1 uint8 Nonce sesi 0x0A
2 - 3 uint16 Panjang data tambahan 0x0008
4 - 11 nonce sesi bervariasi

Untuk mengirim pesan ketika MAC diperlukan, Pencari Kerja akan mengirim nonce pesan dan MAC bersama dengan pesan tersebut.

Oktet Jenis Data Deskripsi Nilai
0 uint8 Grup pesan bervariasi
1 uint8 Kode pesan bervariasi
2 - 3 uint16 Panjang data tambahan(panjang data tambahan + 16) bervariasi
4 - t Data tambahan bervariasi
n + 1 - n + 8 Nonce pesan bervariasi
n + 9 - n + 16 Kode autentikasi pesan bervariasi

Memverifikasi MAC (kode autentikasi pesan)

Setelah menerima pesan yang berisi kode autentikasi pesan, Penyedia akan memverifikasinya menggunakan fungsi yang sama dengan fungsi yang menghasilkan. Artinya, MAC yang diterima harus sama dengan 8 byte{i> <i}pertama

 sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(section_nonce, message_nonce, message)))))

dalam hal ini:

  1. K dihasilkan oleh concat(account key, 48-byte ZEROs), dan Penyedia harus melintasi semua kunci akun yang disimpan untuk memverifikasi MAC.
  2. message adalah data tambahan (tidak termasuk nonce pesan dan MAC) dari aliran pesan.

Jika MAC benar, Penyedia harus mengikuti instruksi pesan tersebut. Jika tidak, Penyedia harus mengirimkan NAK dengan alasan error, 0x3 - tidak diizinkan karena kode autentikasi pesan yang salah.