Kode Autentikasi Pesan

Aliran pesan digunakan untuk mengonfigurasi Pengalihan audio. Lihat Pesan beralih audio. Untuk konfigurasi penting ini, Penyedia perlu untuk memastikan bahwa pesan dikirim oleh GMSCore (modul Sambungan Cepat) dan bukan aplikasi lain di Pencari Kerja.

Membuat MAC (kode autentikasi pesan)

Pencari FP 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, ZERO 48 byte).
  2. message adalah data tambahan dari aliran Pesan.
  3. nonce dibuat oleh concat(session_nonce, message_nonce); sesi nonce dan nonce pesan didefinisikan di bagian berikut.
  4. opad adalah padding luar 64 byte, yang terdiri dari byte berulang yang dinilai 0x5C.
  5. ipad adalah padding dalam 64 byte, yang terdiri dari byte berulang yang dinilai 0x36.

Nonce sesi dan nonce pesan

Untuk mencegah serangan replay, Penyedia harus memastikan bahwa nonce berulang. Karena mempertahankan sinkronisasi jam atau penghitung pada kedua Penyedia dan Pencari tidak mudah, Penyedia membuat nonce sesi (per koneksi), yang dibagikan dengan semua pesan selama koneksi, sedangkan Pencari Kerja menghasilkan nonce pesan (per pesan), yang yang dibuat untuk setiap pesan. Nonce untuk menghasilkan MAC setiap pesan adalah kombinasi nonce sesi dan nonce pesan, yaitu {i>concat(session_nonce<i}, {i>message_nonce<i}).

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 Kerja saat melakukan RFCOMM menghubungkan:

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 akan mengirim pesan nonce dan MAC bersama dengan pesannya.

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 - n Data tambahan bervariasi
n + 1 - n + 8 Nonce pesan bervariasi
n + 9 - n + 16 Kode autentikasi pesan bervariasi

Verifikasi MAC (kode autentikasi pesan)

Setelah menerima pesan dengan kode otentikasi pesan, Penyedia harus memverifikasinya dengan menggunakan fungsi yang sama dengan fungsi yang menghasilkan. Yaitu, MAC yang diterima harus sama dengan 8 byte pertama dari

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

dalam hal ini:

  1. K dibuat oleh concat(account key, 48-byte ZEROs), dan Penyedia harus menelusuri 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, maka Penyedia harus mengikuti instruksi dari untuk membuat pesan email baru. Jika tidak, Penyedia harus mengirimkan NAK dengan alasan kesalahan, 0x3 - tidak dibolehkan karena kode autentikasi pesan salah.