خدمة "الإقران السريع"
على "مقدّم خدمة الإقران السريع" تنفيذ "خدمة الإقران السريع" (المعرّف الفريد العالمي 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 |
إلزامي شرطي
- C1: إذا كان "المزوّد" يتيح ميزة التسمية ولا ينفّذ سمة إجراء جهاز FP
- الشرط الثاني: إذا كان "المزوّد" يتيح استخدام قناة تبادل الرسائل: L2CAP
- C3: إذا كان لدى "مقدّم الخدمة" قناة تواصل داخلية بين المكوّنات
- C4: إذا كان "المزوّد" بحاجة إلى تبادل معلومات إضافية أثناء عملية الإقران، على سبيل المثال، "مزوّد" لا يتوفّر لديه قناة اتصال داخلية بين المكوّنات
السمة: معرّف الطراز
تتيح هذه السمة لـ "الباحث" قراءة رقم تعريف الطراز حسب الحاجة، خارج نطاق الإعلان عن الجهاز في وضع قابل للاكتشاف. يجب أن تعرض دائمًا البيانات التالية:
| ثُمانِي واحد | نوع البيانات | الوصف | القيمة |
|---|---|---|---|
| من 0 إلى 2 | uint24 |
رقم تعريف الطراز | يختلف |
الخاصية: الإقران المستند إلى المفتاح
تتحكّم هذه السمة في إجراء "الإقران المستنِد إلى مفتاح". في هذا الإجراء، يتم إنشاء مستوى معيّن من الثقة من خلال التحقّق من أنّ "الباحث" و"مقدّم الخدمة" يمتلكان مفتاحًا مشتركًا مسبقًا. يختلف المفتاح في كل حالة:
الحالة 1: يعتمد المفتاح المشترك مسبقًا على زوج المفاتيح العامة/الخاصة لمكافحة الانتحال، وزوج المفاتيح العامة/الخاصة الخاص بـ "الباحث" والذي سيتغيّر لكل محاولة إقران.
- يكون "المزوّد" في وضع الإقران.
- يتحقّق "الباحث" من أنّ "المزوّد" يمتلك المفتاح الخاص لمكافحة الانتحال.
يُرجى العِلم أنّه في وضع الإقران، يمكن لمقدّم الخدمة أيضًا الإقران بالطريقة المعتادة، على سبيل المثال، للإقران بجهاز لا يتيح ميزة "الإقران السريع" المستند إلى المفتاح.
الحالة 2: المفتاح المشترك مسبقًا هو أحد مفاتيح الحساب.
- لا يكون "المزوّد" عادةً في وضع الإقران. (ولكن هذا ليس شرطًا، إذ يجب أن يتيح "المزوّد" استخدام مفتاح الحساب حتى في وضع الإقران).
- يتحقّق كل من "الباحث" و"المزوّد" من أنّ الطرف الآخر يمتلك مفتاح الحساب.
بما أنّ الحالتَين متشابهتان للغاية، باستثناء المفتاح المشترك مسبقًا المستخدَم، يتم دمجهما في الإجراء.
تنسيق البيانات
يمكنك الاطّلاع على الإجراء لمعرفة كيفية استخدام كل تنسيق.
| ثُمانِي واحد | نوع البيانات | الوصف | القيمة | هل هو إلزامي؟ |
|---|---|---|---|---|
| من 0 إلى 15 | uint128 |
طلب مشفّر | يختلف | إلزامي |
| من 16 إلى 79 | مفتاح عام | يختلف | اختياري |
الجدول 1.1: طلب مشفّر، يكتبه "الباحث" في السمة
| ثُمانِي واحد | نوع البيانات | الوصف | القيمة | هل هو إلزامي؟ |
|---|---|---|---|---|
| 0 | uint8 |
نوع الرسالة | 0x00 = طلب إقران مستند إلى مفتاح |
إلزامي |
| 1 | uint8 |
العلامات
|
يختلف | إلزامي |
| من 2 إلى 7 | uint48 |
أيٌّ مما يلي:
|
يختلف | إلزامي |
| 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 |
أيٌّ مما يلي:
|
يختلف | إلزامي |
| 8 | uint8 |
إرسال رسائل إلى المجموعة | يختلف | إلزامية إذا تم ضبط البت 0 في البلاغات |
| 9 | uint8 |
رمز الرسالة | يختلف | إلزامية إذا تم ضبط البت 0 في البلاغات |
| 10 | uint8 |
يعتمد على العلامات:
|
يختلف | إلزامي إذا تم ضبط البت 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 |
العلامات
|
يختلف |
| 2 | uint8 |
عدد عناوين مقدّم الخدمة القيمتان الصالحتان هما 1 و2. |
يختلف |
| من 3 إلى 8 أو من 3 إلى 14 |
|
يختلف | |
| 9 - 15 أو 15 | قيمة عشوائية (قيمة عشوائية إضافية) | يختلف |
الجدول 1.3.2: الردّ الأوّلي (النوع 0x02) يتم تشفيرها لإنشاء الردّ المشفّر في الجدول 1.4.
| ثُمانِي واحد | نوع البيانات | الوصف | القيمة |
|---|---|---|---|
| من 0 إلى 15 | uint128 |
ردّ مشفّر | يختلف |
الجدول 1.4: الرد المشفّر الذي يرسله "المزوّد" إلى "الباحث" من خلال إشعار
الخاصية: مفتاح المرور
تُستخدم هذه السمة أثناء إجراء الإقران المستنِد إلى المفتاح.
| ثُمانِي واحد | نوع البيانات | الوصف | القيمة |
|---|---|---|---|
| من 0 إلى 15 | uint128 |
مجموعة مفاتيح مرور مشفّرة | يختلف |
الجدول 2.1: مجموعة مفاتيح المرور المشفّرة يُرجى الاطّلاع على إجراء "الإقران المستند إلى المفتاح" لمعرفة كيفية الاستخدام.
| ثُمانِي واحد | نوع البيانات | الوصف | القيمة |
|---|---|---|---|
| 0 | uint8 |
نوع الرسالة | أحد الخيارات التالية:
|
| من 1 إلى 3 | unit32 |
مفتاح مرور مكوّن من 6 أرقام | يختلف |
| من 4 إلى 15 | قيمة عشوائية (قيمة عشوائية إضافية) | يختلف |
الجدول 2.2: مجموعة بيانات مفتاح المرور الأوّلية نسخة تم فك تشفيرها من الجدول 2.1.
الخاصية: مفتاح الحساب
بعد الإقران، سيكتب جهاز "الباحث" في ميزة "الإقران السريع" مفتاح حساب في جهاز "المزوّد" في ميزة "الإقران السريع".
| ثُمانِي واحد | نوع البيانات | الوصف | القيمة |
|---|---|---|---|
| من 0 إلى 15 | uint128 |
مفتاح الحساب (مشفّر) | يختلف |
عند تلقّي طلب كتابة، على "مقدّم خدمة الإقران السريع" تنفيذ ما يلي:
- فكّ تشفير مفتاح الحساب باستخدام الرمز السري المشترَك الذي تم إنشاؤه من الخطوة 4 في
الإجراء.
- بالنسبة إلى مقدّمي الخدمات الذين يتطلّبون الربط (شائع):
- قبل فك التشفير، تأكَّد من استخدام المفتاح السري المشترك لفك تشفير طلب مفتاح المرور من الخطوة 12. إذا لم يتم اجتياز هذه الخطوة باستخدام هذا المفتاح السري، تجاهل هذه الكتابة واخرج.
- في هذه المرحلة، لن يتم استخدام المفتاح السري المشترك (K في الإجراء) مرة أخرى لعملية الإقران هذه. يجب رفض أي طلبات تأتي مشفرة بهذا المفتاح دون إعادة تشغيل الإجراء.
- بالنسبة إلى مقدّمي الخدمات الذين يتطلّبون الربط (شائع):
- تأكَّد من أنّ القيمة التي تم فك تشفيرها تبدأ بـ
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:
|
الجدول 3.2: البيانات الأولية تم فك تشفيرها من البيانات المشفّرة في الجدول 3.1.
عند طلب إشعار (على سبيل المثال، طلب اسم مخصّص من خلال البت 2 في الجدول 1.2.1)، على مزوّد خدمة "الإقران السريع" تنفيذ ما يلي:
- أنشِئ 8 بايت عشوائية بطريقة مشفَّرة لـ Nonce.
يتم تشفير البيانات باستخدام AES-CTR، حيث يتم إنشاء كل مجموعة من 16 بايت باستخدام
encryptedBlock[i] = clearBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))أين
- مفتاح AES هو الرمز السري المشترَك من الخطوة 4 في الإجراء.
- clearBlock[i] هي كتلة من 16 بايت تبدأ من data[i * 16]. يمكن أن تكون الكتلة الأخيرة أقل من 16 بايت.
نفِّذ concat(encryptedBlock[0], encryptedBlock[1],...) لإنشاء البيانات المشفّرة.
إنشاء HMAC-SHA256 من خلال
sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, encrypted_data)))))أين
- يتم إنشاء K من خلال concat(shared_secret, 48-byte ZEROs)، ويكون shared_secret من الخطوة 4 في الإجراء.
- opad هي حشوة خارجية بحجم 64 بايت، وتتألف من بايتات متكررة بقيمة
0x5C. - ipad هو حشو داخلي بحجم 64 بايت، ويتألف من بايتات متكررة بقيمة
0x36.
استخدِم أول 8 بايت من HMAC-SHA256 كبادئة لحزمة البيانات.
عند تلقّي طلب كتابة، على "مقدّم خدمة الإقران السريع" تنفيذ ما يلي:
- تحقَّق من سلامة البيانات من خلال مراجعة أول 8 بايت من HMAC-SHA256.
يتم فك تشفير البيانات المشفّرة باستخدام AES-CTR، حيث يتم إنشاء كل كتلة باستخدام
clearBlock[i] = encryptedBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))أين
- encryptedBlock[i] هي كتلة مكوّنة من 16 بايت تبدأ من encrypted_data[i * 16]. يمكن أن تكون الكتلة الأخيرة أقل من 16 بايت.
- يتم إنشاء مفتاح AES أو تحديده من عملية تأكيد الاتصال، على سبيل المثال:
- في عملية التسمية 1، يتم الحصول على المفتاح من بروتوكول ECDH، ولن يتم استخدامه مرة أخرى لعملية الإقران هذه. يجب رفض أي طلبات مشفّرة بهذا المفتاح بدون إعادة تشغيل الإجراء.
- في مسار التسمية 2، هو مفتاح الحساب.
نفِّذ 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 |
طلب إجراء | أحد الخيارات التالية:
|
الجدول 4.2: البيانات الأولية يتم فك تشفيرها من البيانات المشفّرة في الجدول 4.1 الذي يرسله "الباحث" إلى "مقدّم الخدمة" كعملية كتابة.
| ثُمانِي واحد | نوع البيانات | الوصف | القيمة |
|---|---|---|---|
| 0 - var | byte array |
الردّ على الإجراء | أحد الخيارات التالية:
|
الجدول 4.3: البيانات الأولية يتم فك تشفيرها من البيانات المشفّرة في الجدول 4.1 الذي يرسله "المزوّد" إلى "الباحث" كإشعار.
| ثُمانِي واحد | نوع البيانات | الوصف | القيمة |
|---|---|---|---|
| 0 | uint8 |
الرقم التعريفي للإجراء | 0x01 |
| 1 - var | utf8s |
اسم مخصّص | يختلف |
الجدول 4.3.1: تنسيق الاسم المخصّص
| ثُمانِي واحد | نوع البيانات | الوصف | القيمة |
|---|---|---|---|
| 0 | uint8 |
الرقم التعريفي للإجراء | 0x02 |
| 1 | uint8 |
نوع عضو المجموعة المنسَّقة في ميزة "الإقران السريع" |
|
| 2 | uint8 |
عدد القطع في المجموعة المنسَّقة | عدد المكوّنات |
| 3 | uint8 |
ضبط نوع مفتاح حلّ الهوية | 0x01 (مفتاح SIRK بنص عادي) |
| 4 - 19 | uint128 |
ضبط قيمة مفتاح حلّ الهوية | بيانات بحجم 16 بايت، راجِع خدمة تحديد المجموعة المنسَّقة |
الجدول 4.3.2: تنسيق معلومات المجموعة المنسَّقة
| ثُمانِي واحد | نوع البيانات | الوصف | القيمة |
|---|---|---|---|
| 0 | uint8 |
الرقم التعريفي للإجراء | 0x03 |
| من 1 إلى 2 | uint16 |
ميزات الجهاز |
|
الجدول 4.3.3: تنسيق ميزات الجهاز
عمليات "الإقران السريع"
تم تحديد عمليتين رئيسيتين لهذه السمة
- قراءة بيانات "الإقران السريع": قراءة البيانات من "المزوّد"
- جهاز البحث: تفعيل إشعارات GATT
- المزوّد: تم تسجيل إشعار GATT
- جهاز البحث: طلب كتابة GATT، وتحتوي البيانات الأولية على
Action IDفقط - مقدّم الخدمة: استجابة الكتابة في بروتوكول GATT
- مقدّم الخدمة: إشعار GATT، تحتوي البيانات الأولية على
- الرقم التعريفي للإجراء
- بيانات معرّف الإجراء
- جهاز البحث: تم تلقّي إشعار GATT
- كتابة بيانات الإقران السريع: كتابة البيانات في "المزوّد"
- جهاز البحث: طلب كتابة GATT، تحتوي البيانات الأولية على
- الرقم التعريفي للإجراء
- بيانات معرّف الإجراء
- المزوِّد: استجابة GATT للكتابة
- جهاز البحث: طلب كتابة GATT، تحتوي البيانات الأولية على
رقم تعريف الإجراء المتوافق مع قراءة ميزة "الإقران السريع"
- 0x01 (اسم مخصّص)
- 0x02 (معلومات المجموعة المنسَّقة)
- 0x03 (ميزات الجهاز)
معرّف الإجراء المتوافق مع ميزة "الإقران السريع" للكتابة
- 0x01 (اسم مخصّص)
- بالنسبة إلى أي أوامر أخرى يتضمّن فيها طلب الكتابة معرّف إجراء متبوعًا ببيانات، على "المزوّد" الردّ بإشعار GATT يحتوي على طلب غير صالح (0x81) كما هو موضّح في الجدول 4.3.
إذا لم يفهم "المزوّد" معرّف الإجراء، سيردّ بإشعار GATT يحتوي على "طلب غير متوافق" (0x80) كما هو موضّح في الجدول 4.3.
خوارزمية التشفير
عند طلب إشعار، على مزوّد خدمة "الإقران السريع" تنفيذ ما يلي:
- أنشِئ 8 بايت عشوائية بطريقة مشفَّرة لـ Nonce.
يتم تشفير البيانات باستخدام AES-CTR، حيث يتم إنشاء كل مجموعة من 16 بايت باستخدام
encryptedBlock[i] = clearBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))أين
- مفتاح AES هو الرمز السري المشترَك من الخطوة 4 في الإجراء.
-
clearBlock[i]هي كتلة مكوّنة من 16 بايت تبدأ منdata[i * 16]. يمكن أن تكون الكتلة الأخيرة أقل من 16 بايت.
نفِّذ
concat(encryptedBlock[0], encryptedBlock[1],...)لإنشاء البيانات المشفّرة.إنشاء HMAC-SHA256 من خلال
sha256(concat((K ^ opad), sha256(concat((K ^ ipad), concat(nonce, encrypted_data)))))أين
- يتم إنشاء K من خلال concat(shared_secret, 48-byte ZEROs)، ويكون shared_secret من الخطوة 4 في الإجراء.
- opad هي حشوة خارجية بحجم 64 بايت، وتتألف من بايتات متكررة بقيمة
0x5C. - ipad هو حشو داخلي بحجم 64 بايت، ويتألف من بايتات متكررة بقيمة
0x36.
استخدِم أول 8 بايت من HMAC-SHA256 كبادئة لحزمة البيانات.
عند تلقّي طلب كتابة، على "مقدّم خدمة الإقران السريع" تنفيذ ما يلي:
- تحقَّق من سلامة البيانات من خلال مراجعة أول 8 بايت من HMAC-SHA256.
يتم فك تشفير البيانات المشفّرة باستخدام AES-CTR، حيث يتم إنشاء كل كتلة باستخدام
clearBlock[i] = encryptedBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))أين
-
encryptedBlock[i]هي كتلة مكوّنة من 16 بايت تبدأ منencrypted_data[i * 16]. يمكن أن تكون الكتلة الأخيرة أقل من 16 بايت. - يتم إنشاء مفتاح AES أو تحديده من عملية تأكيد الاتصال، على سبيل المثال:
- في عملية التسمية 1، يتم الحصول على المفتاح من بروتوكول ECDH، ولن يتم استخدامه مرة أخرى لعملية الإقران هذه. يجب رفض أي طلبات مشفّرة بهذا المفتاح بدون إعادة تشغيل الإجراء.
- في مسار التسمية 2، هو مفتاح الحساب.
-
نفِّذ
concat(clearBlock[0], clearBlock[1],...)لإنشاء البيانات الأولية.
خدمة معلومات الجهاز
يجب أن يتيح مزوّد خدمة "الإقران السريع" أيضًا خدمة "معلومات الجهاز" (UUID 0x180A). يستخدم الباحث عن "الإقران السريع" السمات التالية.
| الاسم | مشفّر | الأذونات | معرِّف فريد عالمي (UUID) |
|---|---|---|---|
| مراجعة البرامج الثابتة | لا | قراءة | 0x2A26 |
السمة: مراجعة البرامج الثابتة
تسمح هذه السمة لـ "الباحث" بقراءة مراجعة البرامج الثابتة لـ "المزوّد" حسب الحاجة. يجب أن يعرض دائمًا البيانات التالية:
| ثُمانِي واحد | نوع البيانات | الوصف | القيمة |
|---|---|---|---|
| 0 - var | utf8s |
رمز مراجعة البرامج الثابتة | يختلف |
ويجب أن يتم تضمينها في سلسلة utf8 واحدة حتى إذا كان هناك أكثر من برنامج ثابت واحد (على سبيل المثال، 3 برامج ثابتة لسماعة الأذن اليسرى وسماعة الأذن اليمنى والعلبة) على جهاز "المزوّد". يمكن لموفّر المحتوى أيضًا عرض السلاسل المحدّدة للحالات الخاصة:
status-updating: إذا كان "المزوّد" يحدّث البرامج الثابتة إلى إصدار جديد بدلاً من ذلك، يمكن لمقدّم الخدمة عرض إصدار البرامج الثابتة المرحلية.
status-abnormal: إذا كان مقدّم الخدمة في حالة غير طبيعية على سبيل المثال، حدث خلل بسبب فشل تحديث البرامج الثابتة. ستؤدي هذه القيمة إلى ظهور رسالة في Seeker لإعلام المستخدم بضرورة تحديثه الآن.
يجب أن يفرض "المزوّد" قيودًا على الوصول إلى سمة "مراجعة البرامج الثابتة" لمنع تتبُّع الجهاز. القيود المقترَحة:
- يجب أن تتمكّن الأجهزة المرتبطة من الوصول في أي وقت
- يجب أن يتمكّن أي جهاز من الوصول إلى "المزوّد" عندما يكون قابلاً للاكتشاف
إذا كان "مقدّم الخدمة" يتيح استخدام ميزة "مركز العثور"، يجب تنفيذ خطوات إضافية. يمكنك الاطّلاع على تحديثات البرامج الثابتة في "مركز العثور" لمزيد من التفاصيل.