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
- K dihasilkan oleh concat(kunci akun, ZEROs 48 byte).
- message adalah data tambahan dari aliran pesan.
- nonce dihasilkan oleh concat(session_nonce, message_nonce); nonce sesi dan nonce pesan ditentukan di bagian berikut.
- opad adalah padding luar berukuran 64 byte, yang terdiri dari byte berulang dengan nilai
0x5C
. - 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:
- K dihasilkan oleh
concat(account key, 48-byte ZEROs)
, dan Penyedia harus melintasi semua kunci akun yang disimpan untuk memverifikasi MAC. - 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.