İleti Kimlik Doğrulama Kodu

Mesaj akışları, Ses Geçişi'ni yapılandırmak için kullanılır. Bkz. Ses geçişi mesajları. Sağlayıcının, bu önemli yapılandırmalar için iletinin GMSCore (Hızlı Eşleme modülü) tarafından gönderildiğinden diğer uygulamaya göz atın.

MAC oluştur (mesaj kimlik doğrulama kodu)

FP Seeker, cihaz yapılandırma mesajları için bir mesaj kimlik doğrulama kodu ekler (HMAC-SHA256 kullanarak). Mesajın MAC'si, aşağıdakilerin ilk 8 baytından oluşur:

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

burada

  1. K, concat(hesap anahtarı, 48 baytlık ZEROs) tarafından oluşturulur.
  2. message, Mesaj akışının ek verileridir.
  3. nonce, concat(session_nonce, Message_nonce); tarafından oluşturulur. oturum tek seferlik rastgele sayı ve ileti tek seferlik rastgele sayısı aşağıdaki bölümde tanımlanmıştır.
  4. opad, 64 baytlık dış dolgudur ve değerli tekrarlanan baytlardan oluşur. 0x5C.
  5. ipad, değerli tekrarlanan baytlardan oluşan 64 baytlık iç dolgudur 0x36.

Oturum tek seferlik rastgele sayısı ve mesaj tek seferlik rastgele sayısı

Sağlayıcı, tekrar oynatma saldırısını önlemek için tek seferlik rastgele bir sayının tekrarlamanın tekrarlanır. Her iki Sağlayıcıda saat veya sayaç senkronizasyonu sürdürüldüğünden, ve Arayan kişi basit değil. Sağlayıcı oturumun tek seferlik rastgele sayısını oluşturuyor. (bağlantı başına) ve bağlantı sırasında tüm iletilerle paylaşılır. Arayan ise mesajı rastgele (mesaj başına) üretir. oluşturulur. Her mesajın MAC'sini oluşturan tek seferlik rastgele sayı Oturum tek seferlik rastgele sayısı ve mesaj tek seferlik rastgele sayısının kombinasyonu, ör. concat(session_nonce, Message_nonce).

Cihaz bilgileri etkinlik grubuna bir oturum tek seferlik rastgele eklenir:

Mesaj Grubu Adı Değer
Cihaz bilgileri etkinliği 0x03
Mesaj Kodu Adı Değer
Oturum tek seferlik rastgele sayısı 0x0A

RFCOMM olduğunda oturum tek seferlik rastgele sayısı oluşturulmalı ve Arayan'a gönderilmelidir. şunları yapar:

Sekiz Veri Türü Açıklama Değer
0 uint8 Cihaz bilgileri etkinliği 0x03
1 uint8 Oturum tek seferlik rastgele sayısı 0x0A
2 - 3 uint16 Ek veri uzunluğu 0x0008
4 - 11 oturum tek seferlik rastgele sayısı değişiklik gösterir

MAC gerekli olduğunda mesaj göndermek için arayan, tek seferlik bir mesaj gönderecektir. ve MAC de görüntülerle bir araya getirir.

Sekiz Veri Türü Açıklama Değer
0 uint8 Mesaj grubu değişiklik gösterir
1 uint8 Mesaj kodu değişiklik gösterir
2 - 3 uint16 Ek veri uzunluğu(ek veri uzunluğu + 16) değişiklik gösterir
4 - n Ek veriler değişiklik gösterir
n + 1 - n + 8 Mesaj tek seferlik rastgele sayısı değişiklik gösterir
n + 9 - n + 16 Mesaj kimlik doğrulama kodu değişiklik gösterir

MAC'i doğrula (mesaj kimlik doğrulama kodu)

Sağlayıcı, mesaj kimlik doğrulama kodunu içeren bir mesaj aldığında oluşturan işlevle aynı işlevi kullanarak bunu doğrulaması gerekir. Yani, alınan MAC, alanın ilk 8 baytına eşit olmalıdır

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

Bu örnekte:

  1. K, concat(account key, 48-byte ZEROs) tarafından oluşturulur ve Sağlayıcı sağlanan tüm hesap anahtarlarını aktarmalıdır.
  2. message şu ek verileri içerir (ileti tek seferlik rastgele sayısı ve MAC'si hariç) Mesaj akışını takip edin.

MAC doğruysa, Sağlayıcı, Sözleşme’nin mesajını alırsınız. Aksi takdirde, Sağlayıcı 0x3 hata nedeni ile bir NAK gönderecektir - nedeniyle izin verilmiyor.