رمز مصادقة الرسالة
تُستخدم بث الرسائل لضبط تبديل الصوت، ويمكنك الاطّلاع على رسائل تبديل الصوت: بالنسبة إلى هذه الإعدادات المهمة، يحتاج موفّر الخدمة للتأكُّد من إرسال الرسالة من خلال وحدة "الإقران السريع" (GMSCore) وليس من خلال تطبيق آخر على Seeker.
إنشاء رمز مصادقة الرسائل (MAC)
يضيف FP Seeker رمز مصادقة الرسائل إلى رسائل إعداد الجهاز باستخدام HMAC-SHA256. يتكون عنوان MAC للرسالة من أول 8 بايت من:
sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, message)))))
أين
- يتم إنشاء K بواسطة concat(account key, 48-byte ZEROs).
- message هي البيانات الإضافية لمصدر الرسائل.
- يتم إنشاء nonce بواسطة concat(session_nonce, message_nonce); جلسة يتم تعريف nonce وmessage nonce في القسم التالي.
- opad هي 64 بايت من المساحة المتروكة الخارجية، وهي تتكون من وحدات بايت متكررة يتم تقديرها
0x5C
- ipad عبارة عن 64 بايت من المساحة المتروكة الداخلية، وهي تتكون من وحدات بايت متكررة يتم تقديرها
0x36
نسبة عدم تسجيل الجلسة والرسالة
لمنع هجوم إعادة التشغيل، يحتاج موفّر الخدمة إلى التأكد من عدم حدوث متكررة. نظرًا للحفاظ على مزامنة الساعة أو العدّاد في كلٍ من موفّر الخدمة وكانت أداة البحث سهلة الاستخدام، ينشئ الموفر الجلسة بدون (لكل اتصال)، التي تتم مشاركتها مع جميع الرسائل أثناء الاتصال، بينما يقوم الباحث بإنشاء الرسالة nonce (لكل رسالة)، والتي يتم إجراؤها بشكل عشوائي يتم إنشاؤه لكل رسالة. الجزء الخاص بإنشاء عنوان MAC لكل رسالة هو الجمع بين رقم الجلسة وعدم الاتصال، أي concat(session_nonce, message_nonce).
أضفنا جلسة تلقائية إلى مجموعة حدث "معلومات الجهاز":
اسم مجموعة الرسائل | القيمة |
---|---|
حدث معلومات الجهاز | 0x03 |
اسم رمز الرسالة | القيمة |
---|---|
عدد مرات الجلسة | 0×0 أمبير |
يجب إنشاء رقم جلسة المراجعة وإرساله إلى الباحث عند إدخال بروتوكول RFCOMM. الربط:
ثُمانِي واحد | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | حدث معلومات الجهاز | 0x03 |
1 | uint8 | عدد مرات الجلسة | 0×0 أمبير |
2 - 3 | uint16 | طول البيانات الإضافية | 0×0008 |
من 4 إلى 11 | رقم الجلسة | تختلف |
لإرسال رسالة عندما يكون عنوان MAC مطلوبًا، سيرسل الباحث رسالة بدون وعنوان 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)))))
حيث:
- تم إنشاء K بواسطة
concat(account key, 48-byte ZEROs)
، وموفّر الخدمة يجتاز جميع مفاتيح الحساب المخزنة للتحقق من عنوان MAC. - message هي البيانات الإضافية (باستثناء رقم الرسالة وعنوان MAC) الخاص ساحة مشاركات الرسائل.
إذا كان عنوان MAC صحيحًا، فسيتبع الموفر تعليمات . وبخلاف ذلك، سيرسل الموفر NAK مع سبب الخطأ، 0x3 - غير مسموح به بسبب وجود رمز غير صحيح لمصادقة الرسالة.