الخصائص
خدمة "الإقران السريع"
يتوفَّر لدى موفِّر ميزة "الإقران السريع" خدمة 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 |
الأعلام
|
تختلف | إلزامي |
من 2 إلى 7 | uint48 |
يمكنك تنفيذ أحد الإجراءين التاليين:
|
تختلف | إلزامي |
من 8 إلى 13 | uint48 |
عنوان BR/EDR للباحث | تختلف | مشاركة العرض فقط في حال ضبط رمز الترميز 1 أو 3 |
n - 15 | قيمة عشوائية (قيمة عشوائية) | تختلف | إلزامي |
الجدول 1.2.1: الطلب الأولي (النوع 0x00). تم فك تشفيره من ملف Encrypted يمكنك تقديم الطلب في الجدول 1.1.
ثُمانِي واحد | نوع البيانات | الوصف | القيمة | إلزامي؟ |
---|---|---|---|---|
0 | uint8 |
نوع الرسالة | 0x10 = طلب اتخاذ إجراء |
إلزامي |
1 | uint8 |
الأعلام
|
تختلف | إلزامي |
من 2 إلى 7 | uint48 |
يمكنك تنفيذ أحد الإجراءين التاليين:
|
تختلف | إلزامي |
8 | uint8 |
مجموعة الرسائل | تختلف | إلزامي في حال ضبط الترميز Bit 0 |
9 | uint8 |
رمز الرسالة | تختلف | إلزامي في حال ضبط الترميز Bit 0 |
10 | uint8 |
حسب العلامات:
|
تختلف | إلزامي في حال ضبط الترميزَين 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 |
نوع الرسالة | أحد الخيارات التالية:
|
من 1 إلى 3 | unit32 |
مفتاح مرور مكوّن من 6 أرقام | تختلف |
من 4 إلى 15 | قيمة عشوائية (قيمة عشوائية) | تختلف |
الجدول 2.2: مجموعة مفاتيح المرور الأولية إصدار غير مشفّر من الجدول 2.1.
الميزة: مفتاح الحساب
بعد الإقران، سيكتب الباحث عن الإقران السريع مفتاح حساب في ميزة "الإقران السريع" مزوِّد الخدمة
ثُمانِي واحد | نوع البيانات | الوصف | القيمة |
---|---|---|---|
من 0 إلى 15 | uint128 |
مفتاح الحساب (مشفّر) | تختلف |
عند تلقّي طلب كتابة، على موفِّر ميزة "الإقران السريع" ما يلي:
- فك تشفير مفتاح الحساب باستخدام المفتاح السري المشترك الذي تم إنشاؤه من الخطوة 4 في
الإجراء.
- بالنسبة إلى مقدّمي الخدمات الذين يحتاجون إلى إنشاء روابط (شائعة):
- قبل فك التشفير، تحقق من أنه تم استخدام المفتاح السرّي المشترك لفك تشفير طلب مفتاح المرور من الخطوة 12. في حال عدم تجاوز هذه الخطوة سري، تجاهل هذه الكتابة والإنهاء.
- في هذه المرحلة، لن يتم استخدام المفتاح السرّي المشترك (K في الإجراء). مرة أخرى لهذا الاقتران. أي طلبات تكون مشفّرة مع هذا المفتاح دون إعادة تشغيل الإجراء، ينبغي رفض.
- بالنسبة إلى مقدّمي الخدمات الذين يحتاجون إلى إنشاء روابط (شائعة):
- تأكَّد من أنّ القيمة التي تم فك تشفيرها تبدأ بـ
0x04
. إذا لم يكن الأمر كذلك، فتجاهل هذا الكتابة والاستقالة. - التحقق مما إذا كانت قائمة مفاتيح الحساب المحفوظة تحتوي على مساحة للملفات الجديدة
- إذا لم يكن الأمر كذلك، احذف آخر قيمة تم استخدامها من القائمة.
- أضِف القيمة الجديدة إلى القائمة.
يتم استخدام مفاتيح الحساب في القائمة أثناء عملية الإقران باستخدام المفتاح.
الميزة: مراجعة البرامج الثابتة
وتتيح هذه الخاصية للباحث قراءة مراجعة البرامج الثابتة مزوِّد الخدمة حسب الحاجة. يُفترض أن تعرض دائمًا البيانات التالية:
ثُمانِي واحد | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 - var | utf8s |
رمز مراجعة البرامج الثابتة | تختلف |
يجب أن يتم تغليفه في سلسلة utf8 واحدة حتى لو كان هناك أكثر من سلسلة. برامج ثابتة (على سبيل المثال، 3 برامج ثابتة للسمّاعة اليسرى والسماعة اليمنى والحافظة) في موفّر الخدمة ويمكن أيضًا للموفر عرض السلاسل المحددة للحالات الخاصة:
status-updated: إذا كان موفّر الخدمة يحدِّث حاليًا برامج ثابتة جديدة. وبدلاً من ذلك، يمكن للموفر إرجاع إصدار البرامج الثابتة المرحلية.
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:
|
الجدول 3.2: البيانات الأولية: أن يتم فك تشفيرها من البيانات المشفرة في الجدول 3.1.
عند طلب إشعار (على سبيل المثال، اطلب اسمًا مخصصًا عبر Bit 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 بايت تبدأ من البيانات[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)، مشتركة_سرّية هي من الخطوة 4 في الإجراء.
- تبلغ المساحة المتروكة الخارجية 64 بايت، وهي تتكون من وحدات بايت متكررة يتم تقييمها
0x5C
- تبلغ المساحة المتروكة الداخلية في جهاز ipad 64 بايت، وهي تتكون من وحدات بايت متكررة يتم تقييمها
0x36
استخدم أول 8 بايت من HMAC-SHA256 كبادئة للبيانات حزمة البيانات.
عند تلقّي طلب كتابة، على موفِّر ميزة "الإقران السريع" ما يلي:
- تحقق من تكامل البيانات عن طريق التحقق من أول 8 بايت من HMAC-SHA256.
فك تشفير البيانات المشفرة باستخدام AES-CTR، حيث يتم إنشاء كل جزء باستخدام
clearBlock[i] = encryptedBlock[i] ^ AES(key, concat((uint8) i, 0x00000000000000, nonce))
أين
- exportBlock[i] هو أمر بدء كتلة 16 بايت من البيانات المشفرة[i * 16]. يمكن أن يكون حجم الحظر الأخير أقل من 16 بايت.
- يتم إنشاء مفتاح AES أو تحديده من خلال عملية تأكيد الاتصال، مثل:
- في تدفق التسمية 1، وهو من ECDH، ولن يتم استخدامها مرة أخرى لهذا الاقتران. أي طلبات تكون مشفّرة باستخدام هذا المفتاح دون إعادة تشغيل الإجراء مرفوض.
- في تدفق التسمية 2، فهو مفتاح الحساب.
نفِّذ concat(clearBlock[0], clearBlock[1],...) لإنشاء البيانات الأولية.