الخصائص

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

يتوفَّر لدى موفِّر ميزة "الإقران السريع" خدمة GATT التالية.

الخدمة معرِّف فريد عالمي (UUID)
خدمة "الإقران السريع" 0xFE2C

يجب أن تكون لهذه الخدمة الخصائص التالية.

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

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

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

الخدمة معرِّف فريد عالمي (UUID)
خدمة معلومات الجهاز 0x180A

يستخدم تطبيق البحث عن الإقران السريع السمات التالية.

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

الميزة: رقم تعريف النموذج

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

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

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

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

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

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

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

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

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

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

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

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

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

الجدول 1.1: "طلب مشفّر"، مكتوب إلى الخاصية "Seker".

ثُمانِي واحد نوع البيانات الوصف القيمة إلزامي؟
0 uint8 نوع الرسالة 0x00 = طلب الإقران المستنِد إلى المفتاح إلزامي
1 uint8 الأعلام
  • Bit 0 (MSB): تم إيقاف العمل به وتجاهله بواسطة Seeker.
  • Bit 1: 1 إذا طلب "الباحث" بدء عملية الربط، ويحتوي هذا الطلب على عنوان BR/EDR للباحث. 0 في الحالات الأخرى.
  • Bit 2: 1 إذا طلب "الباحث" أن يعلم الموفر بالاسم الحالي. 0 في الحالات الأخرى.
  • Bit 3: 1 إذا كان هذا يخص كتابة مفتاح الحساب بأثر رجعي. 0 في الحالات الأخرى.
  • يتم حجز وحدات البت 4 - 7 للاستخدام المستقبلي، ويجب تجاهلها.
تختلف إلزامي
من 2 إلى 7 uint48 يمكنك تنفيذ أحد الإجراءين التاليين:
  • عنوان BLE الحالي لموفّر الخدمة
  • العنوان العام لمقدِّم الخدمة
تختلف إلزامي
من 8 إلى 13 uint48 عنوان BR/EDR للباحث تختلف مشاركة العرض فقط في حال ضبط رمز الترميز 1 أو 3
n - 15 قيمة عشوائية (قيمة عشوائية) تختلف إلزامي

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

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

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

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

الجدول 1.3: الردّ الأوّلي. مشفّرة لإنشاء استجابة مشفّرة بتنسيق الجدول 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. إذا لم يكن الأمر كذلك، فتجاهل هذا الكتابة والاستقالة.
  3. التحقق مما إذا كانت قائمة مفاتيح الحساب المحفوظة تحتوي على مساحة للملفات الجديدة
  4. إذا لم يكن الأمر كذلك، احذف آخر قيمة تم استخدامها من القائمة.
  5. أضِف القيمة الجديدة إلى القائمة.

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

الميزة: مراجعة البرامج الثابتة

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

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

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

  1. status-updated: إذا كان موفّر الخدمة يحدِّث حاليًا برامج ثابتة جديدة. وبدلاً من ذلك، يمكن للموفر إرجاع إصدار البرامج الثابتة المرحلية.

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

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

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

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

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

سمة خدمة "الإقران السريع" مشفّر الأذونات معرِّف فريد عالمي (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 رقم Nonce، يستخدمه تشفير AES-CTR. تختلف
16 - var البيانات المشفّرة تختلف

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

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

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

عند طلب إشعار (على سبيل المثال، اطلب اسمًا مخصصًا عبر Bit 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 بايت تبدأ من البيانات[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)، مشتركة_سرّية هي من الخطوة 4 في الإجراء.
    2. تبلغ المساحة المتروكة الخارجية 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. exportBlock[i] هو أمر بدء كتلة 16 بايت من البيانات المشفرة[i * 16]. يمكن أن يكون حجم الحظر الأخير أقل من 16 بايت.
    2. يتم إنشاء مفتاح AES أو تحديده من خلال عملية تأكيد الاتصال، مثل:
      1. في تدفق التسمية 1، وهو من ECDH، ولن يتم استخدامها مرة أخرى لهذا الاقتران. أي طلبات تكون مشفّرة باستخدام هذا المفتاح دون إعادة تشغيل الإجراء مرفوض.
      2. في تدفق التسمية 2، فهو مفتاح الحساب.
  3. نفِّذ concat(clearBlock[0], clearBlock[1],...) لإنشاء البيانات الأولية.