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