الخصائص

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

يجب أن يتوفّر لدى موفّر الإقران السريع خدمة 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 رقم تعريف الطراز يختلف

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

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

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

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

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

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

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

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

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

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

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

الجدول 1.1: طلب مشفّر، مكتوب وفقًا للميزة من قِبل "الباحث".

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

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

ثُمانِي واحد نوع البيانات الوصف القيمة إلزامي؟
0 uint8 نوع الرسالة 0x10 = طلب إجراء إلزامي
1 uint8 علامات
  • البت 0 (MSB): 1 إذا كان إجراء جهاز، و0 في الحالات الأخرى.
  • البت 1: 1 إذا كانت متبوعة بـ خاصية بيانات إضافية، أو 0 إذا لم يكن الأمر كذلك.
  • البت 2 - 7 محجوزان للاستخدام المستقبلي، وسيتم تجاهله.
تختلف إلزامي
من 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: الرد الأوّلي: يتم تشفير البيانات لإنشاء استجابة مشفَّرة في الجدول 1.4.

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

الجدول 1.4: رد مشفَّر، يرسله مقدّم الخدمة إلى المستخدم من خلال الإشعار.

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

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

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

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

ثُمانِي واحد نوع البيانات الوصف القيمة
0 uint8 نوع الرسالة أحد الخيارات التالية:
  • 0x02 = مفتاح المرور للباحث
  • 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. تحديث الحالة: إذا كان موفّر الخدمة يُجري حاليًا تحديثًا إلى برامج ثابتة جديدة. بدلاً من ذلك، يمكن لموفّر المحتوى عرض إصدار البرامج الثابتة المرحلية.

  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 لا يتم استخدام هذا الحقل في تشفير 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 بايت تبدأ من البيانات[i * 16]. يمكن أن يكون حجم المقطع الأخير أقل من 16 بايت.
  3. نفِّذ concat(cryptBlock[0], encryptedBlock[1],...) لإنشاء البيانات المشفرة.

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

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

    أين

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