خدمة "الإقران السريع"

على "مقدّم خدمة الإقران السريع" تنفيذ "خدمة الإقران السريع" (المعرّف الفريد العالمي 0xFE2C) الذي يتضمّن الخصائص التالية.

الاسم مشفّر الأذونات معرِّف فريد عالمي (UUID) هل هو إلزامي؟
معرّف النموذج لا قراءة FE2C1233-8366-4814-8EB0-01DE32100BEA إلزامي
الإقران المستنِد إلى المفتاح لا الكتابة والإشعار FE2C1234-8366-4814-8EB0-01DE32100BEA إلزامي
مفتاح المرور لا الكتابة والإشعار FE2C1235-8366-4814-8EB0-01DE32100BEA إلزامي
مفتاح الحساب لا كتابة FE2C1236-8366-4814-8EB0-01DE32100BEA إلزامي
بيانات إضافية لا الكتابة والإشعار FE2C1237-8366-4814-8EB0-01DE32100BEA *C1
قناة تبادل الرسائل في PSM نعم قراءة FE2C1239-8366-4814-8EB0-01DE32100BEA *C2
مفتاح مرور إضافي لا القراءة والكتابة والإشعار FE2C123A-8366-4814-8EB0-01DE32100BEA *C3
FP Device Action لا الكتابة والإشعار FE2C123B-8366-4814-8EB0-01DE32100BEA *C4

إلزامي شرطي

السمة: معرّف الطراز

تتيح هذه السمة لـ "الباحث" قراءة رقم تعريف الطراز حسب الحاجة، خارج نطاق الإعلان عن الجهاز في وضع قابل للاكتشاف. يجب أن تعرض دائمًا البيانات التالية:

ثُمانِي واحد نوع البيانات الوصف القيمة
من 0 إلى 2 uint24 رقم تعريف الطراز يختلف

الخاصية: الإقران المستند إلى المفتاح

تتحكّم هذه السمة في إجراء "الإقران المستنِد إلى مفتاح". في هذا الإجراء، يتم إنشاء مستوى معيّن من الثقة من خلال التحقّق من أنّ "الباحث" و"مقدّم الخدمة" يمتلكان مفتاحًا مشتركًا مسبقًا. يختلف المفتاح في كل حالة:

  • الحالة 1: يعتمد المفتاح المشترك مسبقًا على زوج المفاتيح العامة/الخاصة لمكافحة الانتحال، وزوج المفاتيح العامة/الخاصة الخاص بـ "الباحث" والذي سيتغيّر لكل محاولة إقران.

    • يكون "المزوّد" في وضع الإقران.
    • يتحقّق "الباحث" من أنّ "المزوّد" يمتلك المفتاح الخاص لمكافحة الانتحال.

    يُرجى العِلم أنّه في وضع الإقران، يمكن لمقدّم الخدمة أيضًا الإقران بالطريقة المعتادة، على سبيل المثال، للإقران بجهاز لا يتيح ميزة "الإقران السريع" المستند إلى المفتاح.

  • الحالة 2: المفتاح المشترك مسبقًا هو أحد مفاتيح الحساب.

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

بما أنّ الحالتَين متشابهتان للغاية، باستثناء المفتاح المشترك مسبقًا المستخدَم، يتم دمجهما في الإجراء.

تنسيق البيانات

يمكنك الاطّلاع على الإجراء لمعرفة كيفية استخدام كل تنسيق.

ثُمانِي واحد نوع البيانات الوصف القيمة هل هو إلزامي؟
من 0 إلى 15 uint128 طلب مشفّر يختلف إلزامي
من 16 إلى 79 مفتاح عام يختلف اختياري

الجدول 1.1: طلب مشفّر، يكتبه "الباحث" في السمة

ثُمانِي واحد نوع البيانات الوصف القيمة هل هو إلزامي؟
0 uint8 نوع الرسالة ‫0x00 = طلب إقران مستند إلى مفتاح إلزامي
1 uint8 العلامات
  • البت 0 (البت الأكثر أهمية): تم إيقافه نهائيًا ويتجاهله Seeker.
  • البت 1: 1 إذا طلب "الباحث" من "المزوّد" بدء عملية الربط، ويحتوي هذا الطلب على عنوان BR/EDR الخاص بـ "الباحث". و0 في الحالات الأخرى.
  • البت 2: 1 إذا طلب "الباحث" من "المزوّد" إرسال إشعار بالاسم الحالي. و0 في الحالات الأخرى.
  • البت 3: 1 إذا كان هذا مخصّصًا لكتابة مفتاح الحساب بأثر رجعي. و0 في الحالات الأخرى.
  • البت 4: 1 إذا كان "جهاز البحث" متوافقًا مع جهاز BLE. و0 في الحالات الأخرى.
  • البت 5: 1 إذا كان جهاز "الباحث" متوافقًا مع تكنولوجيا LE Audio. و0 في الحالات الأخرى.
  • يتم حجز البتَّين 6 و7 للاستخدام في المستقبل، ويجب تجاهلهما.
يختلف إلزامي
من 2 إلى 7 uint48 أيٌّ مما يلي:
  • عنوان BLE الحالي لمقدّم الخدمة
  • عنوان هوية مقدّم الخدمة
يختلف إلزامي
8 - 13 uint48 عنوان BR/EDR الخاص بجهاز البحث يختلف Present only if Flags Bit 1 or 3 is set
n - 15 قيمة عشوائية (قيمة عشوائية إضافية) يختلف إلزامي

الجدول 1.2.1: طلب أولي (النوع 0x00). تم فك تشفيرها من "الطلب المشفَّر" في الجدول 1.1.

ثُمانِي واحد نوع البيانات الوصف القيمة هل هو إلزامي؟
0 uint8 نوع الرسالة ‫0x10 = طلب اتخاذ إجراء إلزامي
1 uint8 العلامات يختلف إلزامي
من 2 إلى 7 uint48 أيٌّ مما يلي:
  • عنوان BLE الحالي لمقدّم الخدمة
  • عنوان هوية مقدّم الخدمة
يختلف إلزامي
8 uint8 إرسال رسائل إلى المجموعة يختلف إلزامية إذا تم ضبط البت 0 في البلاغات
9 uint8 رمز الرسالة يختلف إلزامية إذا تم ضبط البت 0 في البلاغات
10 uint8 يعتمد على العلامات:
  • تم ضبط البت 0: طول البيانات الإضافية، أقل من 6
  • تم ضبط البت 1: معرّف البيانات
يختلف إلزامي إذا تم ضبط البت 0 أو 1 في البلاغات
‫11 - n البيانات الإضافية يختلف اختياري
n - 15 قيمة عشوائية (قيمة عشوائية إضافية) يختلف إلزامي

الجدول 1.2.2: طلب البيانات الأولية (النوع 0x10) تم فك تشفيرها من "الطلب المشفَّر" في الجدول 1.1.

ثُمانِي واحد نوع البيانات الوصف القيمة
0 uint8 نوع الرسالة ‫0x01 = ردّ على طلب الإقران المستند إلى المفتاح
‫1 - 6 uint48 عنوان "المزوّد" العلني (BR/EDR) يختلف
من 7 إلى 15 قيمة عشوائية (قيمة عشوائية إضافية) يختلف

الجدول 1.3: الردّ الأوّلي (النوع 0x01) يتم تشفيرها لإنشاء الردّ المشفّر في الجدول 1.4.

ثُمانِي واحد نوع البيانات الوصف القيمة
0 uint8 نوع الرسالة 0x02 = Key-based Pairing Extended Response
1 uint8 العلامات
  • البت 0 (البت الأكثر أهمية): 1 إذا كان جهاز "المزوّد" يعمل بتقنية LE فقط، و0 في الحالات الأخرى. إذا تم ضبط البت 0 على 1، سيفترض جهاز Seeker أنّه تم ضبط البت 1 على 1.
  • البت 1: 1 إذا كان "المزوّد" يفضّل الربط عبر البلوتوث المنخفض الطاقة، و0 في الحالات الأخرى
  • البت 2: 1 إذا كان نوع العنوان الثاني عشوائيًا، و0 إذا كان عامًا.
  • يتم حجز البتات من 3 إلى 7 للاستخدام في المستقبل، ويجب تجاهلها.
يختلف
2 uint8 عدد عناوين مقدّم الخدمة
القيمتان الصالحتان هما 1 و2.
يختلف
من 3 إلى 8 أو
من 3 إلى 14
  • يجب أن يكون العنوان الأول هو عنوان الهوية الأساسي، ويمكن ربطه إذا كان من الأفضل استخدام ربط BR/EDR
  • يجب أن يكون العنوان الثاني هو عنوان قابل للربط للجهاز الثانوي إذا كان الجهاز الثانوي متاحًا
يختلف
‫9 - 15 أو 15 قيمة عشوائية (قيمة عشوائية إضافية) يختلف

الجدول 1.3.2: الردّ الأوّلي (النوع 0x02) يتم تشفيرها لإنشاء الردّ المشفّر في الجدول 1.4.

ثُمانِي واحد نوع البيانات الوصف القيمة
من 0 إلى 15 uint128 ردّ مشفّر يختلف

الجدول 1.4: الرد المشفّر الذي يرسله "المزوّد" إلى "الباحث" من خلال إشعار

الخاصية: مفتاح المرور

تُستخدم هذه السمة أثناء إجراء الإقران المستنِد إلى المفتاح.

ثُمانِي واحد نوع البيانات الوصف القيمة
من 0 إلى 15 uint128 مجموعة مفاتيح مرور مشفّرة يختلف

الجدول 2.1: مجموعة مفاتيح المرور المشفّرة يُرجى الاطّلاع على إجراء "الإقران المستند إلى المفتاح" لمعرفة كيفية الاستخدام.

ثُمانِي واحد نوع البيانات الوصف القيمة
0 uint8 نوع الرسالة أحد الخيارات التالية:
  • ‫0x02 = مفتاح مرور Seeker
  • ‫0x03 = مفتاح مرور مقدّم الخدمة
من 1 إلى 3 unit32 مفتاح مرور مكوّن من 6 أرقام يختلف
من 4 إلى 15 قيمة عشوائية (قيمة عشوائية إضافية) يختلف

الجدول 2.2: مجموعة بيانات مفتاح المرور الأوّلية نسخة تم فك تشفيرها من الجدول 2.1.

الخاصية: مفتاح الحساب

بعد الإقران، سيكتب جهاز "الباحث" في ميزة "الإقران السريع" مفتاح حساب في جهاز "المزوّد" في ميزة "الإقران السريع".

ثُمانِي واحد نوع البيانات الوصف القيمة
من 0 إلى 15 uint128 مفتاح الحساب (مشفّر) يختلف

عند تلقّي طلب كتابة، على "مقدّم خدمة الإقران السريع" تنفيذ ما يلي:

  1. فكّ تشفير مفتاح الحساب باستخدام الرمز السري المشترَك الذي تم إنشاؤه من الخطوة 4 في الإجراء.
    • بالنسبة إلى مقدّمي الخدمات الذين يتطلّبون الربط (شائع):
      • قبل فك التشفير، تأكَّد من استخدام المفتاح السري المشترك لفك تشفير طلب مفتاح المرور من الخطوة 12. إذا لم يتم اجتياز هذه الخطوة باستخدام هذا المفتاح السري، تجاهل هذه الكتابة واخرج.
    • في هذه المرحلة، لن يتم استخدام المفتاح السري المشترك (K في الإجراء) مرة أخرى لعملية الإقران هذه. يجب رفض أي طلبات تأتي مشفرة بهذا المفتاح دون إعادة تشغيل الإجراء.
  2. تأكَّد من أنّ القيمة التي تم فك تشفيرها تبدأ بـ 0x04 أو 0xFF. وإذا لم يكن كذلك، يجب تجاهل هذه الكتابة والخروج.
    • إذا كانت القيمة 0x04:
      • تحقَّق مما إذا كانت قائمة مفاتيح الحساب المحفوظة تتضمّن مساحة للقيمة الجديدة.
      • إذا لم يكن الأمر كذلك، فاحذف القيمة الأقل استخدامًا مؤخرًا من القائمة.
      • أضِف القيمة الجديدة إلى القائمة.
    • إذا كانت القيمة 0xFF:
      • يتم التعامل مع هذه الجلسة على أنّها جلسة إقران مؤقتة ولا يتم تنفيذ أي عملية.
      • يمكن أن يحدث ذلك من خلال عملية كتابة مفتاح الحساب بأثر رجعي.
      • لا تخزِّن المفتاح ولا تستخدِمه في قائمة مفاتيح الحساب أو التشفير أو عمليات احتساب MAC.
      • يتم تفعيل عملية إزالة الربط من خلال حدث أو مهلة محدّدة في الميزة. بالنسبة إلى ميزة "مشاركة الصوت" عبر LE، ننصح بشدة بإزالة رابط BLE ومفتاح الربط بعد 10 دقائق من قطع اتصال الجلسة المؤقتة.

تُستخدم مفاتيح الحسابات في القائمة أثناء الإقران المستند إلى المفتاح.

السمة: بيانات إضافية

يجب أن تتوفّر في هذه الخدمة السمة التالية.

سمة خدمة "الإقران السريع" مشفّر الأذونات معرِّف فريد عالمي (UUID)
البيانات لا الكتابة والإشعار FE2C1237-8366-4814-8EB0-01DE32100BEA
سمة خدمة "الإقران السريع" القديمة (من المقرر إيقافها نهائيًا في 1/1/2021) مشفّر الأذونات معرِّف فريد عالمي (UUID)
البيانات لا الكتابة والإشعار 0x1237

قبل الكتابة أو الإشعار بهذه السمة، يجب إجراء مصافحة من خلال السمة FE2C1234-8366-4814-8EB0-01DE32100BEA للحصول على رمز سري مشترك. سيتم استخدام AES-CTR لتشفير البيانات التي تتدفق من خلال هذه السمة، والتي يتم تحديد الخوارزمية الخاصة بها أدناه. ويُعدّ هذا الوضع أكثر أمانًا للبيانات التي تتجاوز كتلة واحدة بحجم 16 بايت. سيتم استخدام HMAC-SHA256 لضمان صحّة البيانات، وهو معرَّف أيضًا أدناه.

ثُمانِي واحد الوصف القيمة
من 0 إلى 7 أول 8 بايت من HMAC-SHA256 يختلف
من 8 إلى 15 رقم خاص يُستخدم في تشفير AES-CTR. يختلف
‫16 - var البيانات المشفَّرة يختلف

الجدول 3.1: حزمة البيانات التي يرسلها "المزوّد" إلى "الباحث" من خلال إشعار أو يرسلها "الباحث" إلى "المزوّد" من خلال عملية كتابة

ثُمانِي واحد نوع البيانات الوصف القيمة
0 - var byte array البيانات يختلف، ففك ترميزه وفقًا لمعرّف البيانات في الجدول 1.2.2:
  • ‫0x01(اسم مخصّص): utf8s

الجدول 3.2: البيانات الأولية تم فك تشفيرها من البيانات المشفّرة في الجدول 3.1.

عند طلب إشعار (على سبيل المثال، طلب اسم مخصّص من خلال البت 2 في الجدول 1.2.1)، على مزوّد خدمة "الإقران السريع" تنفيذ ما يلي:

  1. أنشِئ 8 بايت عشوائية بطريقة مشفَّرة لـ Nonce.
  2. يتم تشفير البيانات باستخدام AES-CTR، حيث يتم إنشاء كل مجموعة من 16 بايت باستخدام

    encryptedBlock[i] = clearBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))
    

    أين

    1. مفتاح AES هو الرمز السري المشترَك من الخطوة 4 في الإجراء.
    2. ‫clearBlock[i] هي كتلة من 16 بايت تبدأ من data[i * 16]. يمكن أن تكون الكتلة الأخيرة أقل من 16 بايت.
  3. نفِّذ concat(encryptedBlock[0], encryptedBlock[1],...) لإنشاء البيانات المشفّرة.

  4. إنشاء HMAC-SHA256 من خلال

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

    أين

    1. يتم إنشاء K من خلال concat(shared_secret, 48-byte ZEROs)، ويكون shared_secret من الخطوة 4 في الإجراء.
    2. ‫opad هي حشوة خارجية بحجم 64 بايت، وتتألف من بايتات متكررة بقيمة 0x5C.
    3. ‫ipad هو حشو داخلي بحجم 64 بايت، ويتألف من بايتات متكررة بقيمة 0x36.
  5. استخدِم أول 8 بايت من HMAC-SHA256 كبادئة لحزمة البيانات.

عند تلقّي طلب كتابة، على "مقدّم خدمة الإقران السريع" تنفيذ ما يلي:

  1. تحقَّق من سلامة البيانات من خلال مراجعة أول 8 بايت من HMAC-SHA256.
  2. يتم فك تشفير البيانات المشفّرة باستخدام AES-CTR، حيث يتم إنشاء كل كتلة باستخدام

    clearBlock[i] = encryptedBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))
    

    أين

    1. ‫encryptedBlock[i] هي كتلة مكوّنة من 16 بايت تبدأ من encrypted_data[i * 16]. يمكن أن تكون الكتلة الأخيرة أقل من 16 بايت.
    2. يتم إنشاء مفتاح AES أو تحديده من عملية تأكيد الاتصال، على سبيل المثال:
      1. في عملية التسمية 1، يتم الحصول على المفتاح من بروتوكول ECDH، ولن يتم استخدامه مرة أخرى لعملية الإقران هذه. يجب رفض أي طلبات مشفّرة بهذا المفتاح بدون إعادة تشغيل الإجراء.
      2. في مسار التسمية 2، هو مفتاح الحساب.
  3. نفِّذ concat(clearBlock[0], clearBlock[1],...) لإنشاء البيانات الأولية.

الخاصية: معرّف PSM لقناة تبادل الرسائل

يُرجى الاطّلاع على جهاز يتضمّن بلوتوث منخفض الطاقة: قناة تبادل الرسائل PSM

السمة: مفتاح مرور إضافي

يُرجى الاطّلاع على جهاز يتضمّن بلوتوث منخفض الطاقة: مفتاح مرور إضافي.

السمة: إجراء على جهاز FP

سمة خدمة "الإقران السريع" مشفّر الأذونات معرِّف فريد عالمي (UUID)
إجراء الجهاز من خلال ميزة "المطابقة السريعة" لا الكتابة والإشعار FE2C123B-8366-4814-8EB0-01DE32100BEA

ثُمانِي واحد الوصف القيمة
من 0 إلى 7 أول 8 بايت من HMAC-SHA256 يختلف
من 8 إلى 15 رقم خاص يُستخدم في تشفير AES-CTR. يختلف
‫16 - var البيانات المشفَّرة يختلف

الجدول 4.1: حزمة البيانات التي يرسلها "المزوّد" إلى "الباحث" كإشعار، أو التي يرسلها "الباحث" إلى "المزوّد" كعملية كتابة

ثُمانِي واحد نوع البيانات الوصف القيمة
0 - var byte array طلب إجراء أحد الخيارات التالية:
  • قراءة الاسم المخصّص، 0x01
  • اكتب اسمًا مخصّصًا، راجِع الجدول 4.3.1
  • قراءة معلومات المجموعة المنسَّقة، 0x02
  • قراءة ميزات الجهاز، 0x03

الجدول 4.2: البيانات الأولية يتم فك تشفيرها من البيانات المشفّرة في الجدول 4.1 الذي يرسله "الباحث" إلى "مقدّم الخدمة" كعملية كتابة.

ثُمانِي واحد نوع البيانات الوصف القيمة
0 - var byte array الردّ على الإجراء أحد الخيارات التالية:
  • الاسم المخصّص، راجِع الجدول 4.3.1
  • معلومات المجموعة المنسَّقة، راجِع الجدول 4.3.2
  • ميزات الجهاز، راجِع الجدول 4.3.3
  • رمز الخطأ
    • ‫0x80 (طلب غير متوافق)
    • ‫0x81 (طلب غير صالح)

الجدول 4.3: البيانات الأولية يتم فك تشفيرها من البيانات المشفّرة في الجدول 4.1 الذي يرسله "المزوّد" إلى "الباحث" كإشعار.

ثُمانِي واحد نوع البيانات الوصف القيمة
0 uint8 الرقم التعريفي للإجراء 0x01
‫1 - var utf8s اسم مخصّص يختلف

الجدول 4.3.1: تنسيق الاسم المخصّص

ثُمانِي واحد نوع البيانات الوصف القيمة
0 uint8 الرقم التعريفي للإجراء 0x02
1 uint8 نوع عضو المجموعة المنسَّقة في ميزة "الإقران السريع"
  • ‫0x00: المكوّن الأيسر
  • ‫0x01: المكوّن الأيمن
2 uint8 عدد القطع في المجموعة المنسَّقة عدد المكوّنات
3 uint8 ضبط نوع مفتاح حلّ الهوية ‫0x01 (مفتاح SIRK بنص عادي)
‫4 - 19 uint128 ضبط قيمة مفتاح حلّ الهوية بيانات بحجم 16 بايت، راجِع خدمة تحديد المجموعة المنسَّقة

الجدول 4.3.2: تنسيق معلومات المجموعة المنسَّقة

ثُمانِي واحد نوع البيانات الوصف القيمة
0 uint8 الرقم التعريفي للإجراء 0x03
من 1 إلى 2 uint16 ميزات الجهاز
  • البتات من 0 إلى 15: محجوزة، ويجب ضبطها على 0

الجدول 4.3.3: تنسيق ميزات الجهاز

عمليات "الإقران السريع"

تم تحديد عمليتين رئيسيتين لهذه السمة

  • قراءة بيانات "الإقران السريع": قراءة البيانات من "المزوّد"
    1. جهاز البحث: تفعيل إشعارات GATT
    2. المزوّد: تم تسجيل إشعار GATT
    3. جهاز البحث: طلب كتابة GATT، وتحتوي البيانات الأولية على Action ID فقط
    4. مقدّم الخدمة: استجابة الكتابة في بروتوكول GATT
    5. مقدّم الخدمة: إشعار GATT، تحتوي البيانات الأولية على
      • الرقم التعريفي للإجراء
      • بيانات معرّف الإجراء
    6. جهاز البحث: تم تلقّي إشعار GATT
  • ‫كتابة بيانات الإقران السريع: كتابة البيانات في "المزوّد"
    1. جهاز البحث: طلب كتابة GATT، تحتوي البيانات الأولية على
      • الرقم التعريفي للإجراء
      • بيانات معرّف الإجراء
    2. المزوِّد: استجابة GATT للكتابة

رقم تعريف الإجراء المتوافق مع قراءة ميزة "الإقران السريع"

  • ‫0x01 (اسم مخصّص)
  • ‫0x02 (معلومات المجموعة المنسَّقة)
  • ‫0x03 (ميزات الجهاز)

معرّف الإجراء المتوافق مع ميزة "الإقران السريع" للكتابة

إذا لم يفهم "المزوّد" معرّف الإجراء، سيردّ بإشعار GATT يحتوي على "طلب غير متوافق" (0x80) كما هو موضّح في الجدول 4.3.

خوارزمية التشفير

عند طلب إشعار، على مزوّد خدمة "الإقران السريع" تنفيذ ما يلي:

  1. أنشِئ 8 بايت عشوائية بطريقة مشفَّرة لـ Nonce.
  2. يتم تشفير البيانات باستخدام AES-CTR، حيث يتم إنشاء كل مجموعة من 16 بايت باستخدام

    encryptedBlock[i] = clearBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))
    

    أين

    1. مفتاح AES هو الرمز السري المشترَك من الخطوة 4 في الإجراء.
    2. ‫clearBlock[i] هي كتلة مكوّنة من 16 بايت تبدأ من data[i * 16]. يمكن أن تكون الكتلة الأخيرة أقل من 16 بايت.
  3. نفِّذ concat(encryptedBlock[0], encryptedBlock[1],...) لإنشاء البيانات المشفّرة.

  4. إنشاء HMAC-SHA256 من خلال

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

    أين

    1. يتم إنشاء K من خلال concat(shared_secret, 48-byte ZEROs)، ويكون shared_secret من الخطوة 4 في الإجراء.
    2. ‫opad هي حشوة خارجية بحجم 64 بايت، وتتألف من بايتات متكررة بقيمة 0x5C.
    3. ‫ipad هو حشو داخلي بحجم 64 بايت، ويتألف من بايتات متكررة بقيمة 0x36.
  5. استخدِم أول 8 بايت من HMAC-SHA256 كبادئة لحزمة البيانات.

عند تلقّي طلب كتابة، على "مقدّم خدمة الإقران السريع" تنفيذ ما يلي:

  1. تحقَّق من سلامة البيانات من خلال مراجعة أول 8 بايت من HMAC-SHA256.
  2. يتم فك تشفير البيانات المشفّرة باستخدام AES-CTR، حيث يتم إنشاء كل كتلة باستخدام

    clearBlock[i] = encryptedBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))
    

    أين

    1. ‫encryptedBlock[i] هي كتلة مكوّنة من 16 بايت تبدأ من encrypted_data[i * 16]. يمكن أن تكون الكتلة الأخيرة أقل من 16 بايت.
    2. يتم إنشاء مفتاح AES أو تحديده من عملية تأكيد الاتصال، على سبيل المثال:
      1. في عملية التسمية 1، يتم الحصول على المفتاح من بروتوكول ECDH، ولن يتم استخدامه مرة أخرى لعملية الإقران هذه. يجب رفض أي طلبات مشفّرة بهذا المفتاح بدون إعادة تشغيل الإجراء.
      2. في مسار التسمية 2، هو مفتاح الحساب.
  3. نفِّذ concat(clearBlock[0], clearBlock[1],...) لإنشاء البيانات الأولية.

خدمة معلومات الجهاز

يجب أن يتيح مزوّد خدمة "الإقران السريع" أيضًا خدمة "معلومات الجهاز" (UUID 0x180A). يستخدم الباحث عن "الإقران السريع" السمات التالية.

الاسم مشفّر الأذونات معرِّف فريد عالمي (UUID)
مراجعة البرامج الثابتة لا قراءة 0x2A26

السمة: مراجعة البرامج الثابتة

تسمح هذه السمة لـ "الباحث" بقراءة مراجعة البرامج الثابتة لـ "المزوّد" حسب الحاجة. يجب أن يعرض دائمًا البيانات التالية:

ثُمانِي واحد نوع البيانات الوصف القيمة
0 - var utf8s رمز مراجعة البرامج الثابتة يختلف

ويجب أن يتم تضمينها في سلسلة utf8 واحدة حتى إذا كان هناك أكثر من برنامج ثابت واحد (على سبيل المثال، 3 برامج ثابتة لسماعة الأذن اليسرى وسماعة الأذن اليمنى والعلبة) على جهاز "المزوّد". يمكن لموفّر المحتوى أيضًا عرض السلاسل المحدّدة للحالات الخاصة:

  1. status-updating: إذا كان "المزوّد" يحدّث البرامج الثابتة إلى إصدار جديد بدلاً من ذلك، يمكن لمقدّم الخدمة عرض إصدار البرامج الثابتة المرحلية.

  2. ‫status-abnormal: إذا كان مقدّم الخدمة في حالة غير طبيعية على سبيل المثال، حدث خلل بسبب فشل تحديث البرامج الثابتة. ستؤدي هذه القيمة إلى ظهور رسالة في Seeker لإعلام المستخدم بضرورة تحديثه الآن.

يجب أن يفرض "المزوّد" قيودًا على الوصول إلى سمة "مراجعة البرامج الثابتة" لمنع تتبُّع الجهاز. القيود المقترَحة:

  • يجب أن تتمكّن الأجهزة المرتبطة من الوصول في أي وقت
  • يجب أن يتمكّن أي جهاز من الوصول إلى "المزوّد" عندما يكون قابلاً للاكتشاف

إذا كان "مقدّم الخدمة" يتيح استخدام ميزة "مركز العثور"، يجب تنفيذ خطوات إضافية. يمكنك الاطّلاع على تحديثات البرامج الثابتة في "مركز العثور" لمزيد من التفاصيل.