رمز مصادقة الرسالة

تُستخدم أحداث بث الرسائل لضبط إعدادات ميزة "تبديل الصوت"، ويمكنك الاطّلاع على مقالة رسائل تبديل الصوت. بالنسبة إلى هذه الإعدادات المهمة، يحتاج موفّر الخدمة إلى التأكّد من إرسال الرسالة بواسطة وحدة "الإقران السريع" (GMSCore) وليس من أي تطبيق آخر على Searchker.

إنشاء رمز مصادقة الرسائل (MAC)

يضيف FP Seeker رمز مصادقة الرسائل لرسائل إعداد الجهاز باستخدام بروتوكول HMAC-SHA256. يتكون عنوان MAC للرسالة من أول 8 بايت مما يلي:

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

أين

  1. يتم إنشاء K بواسطة concat(مفتاح الحساب، 48 بايت من الصفر).
  2. message هي البيانات الإضافية لمصدر الرسائل.
  3. يتم إنشاء nonce من خلال concat(session_nonce, message_nonce)، ويتم تحديد nonce الخاص بالجلسة وnonce في القسم التالي.
  4. opad هو 64 بايت من المساحة المتروكة الخارجية، ويتألف من وحدات بايت متكررة بقيمة 0x5C.
  5. يتضمّن ipad مساحة تبلغ 64 بايت من المساحة المتروكة، ويتألف من وحدات بايت متكرّرة قيمتها 0x36.

الأرقام الخاصة بالجلسة والرسالة رقم واحد

لمنع هجمة إعادة تشغيل، يحتاج موفّر الخدمة إلى التأكّد من عدم تكرار إحدى الحالات. نظرًا لأنّ الحفاظ على مزامنة الساعة أو المزامنة العكسية في كلٍ من "مقدِّم الخدمة" و"Seeker" ليس أمرًا مباشرًا، ينشئ "مقدِّم الخدمة" nonce الخاص بالجلسة (لكلّ اتصال)، وتتم مشاركته مع جميع الرسائل أثناء الاتصال، بينما ينشئ "الباحث" الرسالة بشكل غير مباشر (لكل رسالة)، والتي يتم إنشاؤها عشوائيًا لكل رسالة. ويكون الرقم الخاص بإنشاء عنوان MAC لكل رسالة هو دمج nonce الخاص بالجلسة وnonce الخاص بالرسالة، أي concat(session_nonce,message_nonce).

نضيف رقم جلسة إلى مجموعة أحداث معلومات الجهاز:

اسم مجموعة الرسائل القيمة
حدث معلومات الجهاز 0×03
اسم رمز الرسالة القيمة
رقم غير الجلسة 0×0 أمبير

يجب إنشاء nonce الخاص بالجلسة وإرساله إلى Seeker عند اتصال RFCOMM:

ثُمانِي واحد نوع البيانات الوصف القيمة
0 uint8 حدث معلومات الجهاز 0×03
1 uint8 رقم غير الجلسة 0×0 أمبير
من 2 إلى 3 uint16 طول البيانات الإضافية 0x0008
من 4 إلى 11 رقم غير خاص بالجلسة تختلف

لإرسال رسالة عندما يكون MAC مطلوبًا، يرسل "الباحث" رسالة nonce وMAC مع الرسالة.

ثُمانِي واحد نوع البيانات الوصف القيمة
0 uint8 مجموعة الرسائل تختلف
1 uint8 رمز الرسالة تختلف
من 2 إلى 3 uint16 طول البيانات الإضافية(طول البيانات الإضافي + 16) تختلف
من 4 إلى n البيانات الإضافية تختلف
n + 1 - n + 8 عدم إرسال رسالة تختلف
n + 9 - n + 16 رمز مصادقة الرسائل تختلف

التحقّق من MAC (رمز مصادقة الرسائل)

وعند استلام رسالة تتضمّن رمز مصادقة الرسالة، يتحقّق الموفّر منها باستخدام الوظيفة نفسها كدالة الإنشاء. أي، يجب أن يكون عنوان MAC الذي تم استلامه مساويًا لأول 8 بايت من

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

المكان:

  1. تم إنشاء K بواسطة concat(account key, 48-byte ZEROs)، وسيجتاز الموفر جميع مفاتيح الحساب المخزنة للتحقق من MAC.
  2. message هي البيانات الإضافية (باستثناء رموز الرسائل وMAC) في ساحة مشاركات الرسائل.

إذا كان عنوان MAC صحيحًا، فسيتبع الموفر إرشادات الرسالة. في الحالات الأخرى، يرسل الموفر NAK مع سبب الخطأ، 0x3 - غير مسموح به بسبب وجود رمز غير صحيح لمصادقة الرسالة.