الخصائص

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

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

يستخدم تطبيق الإقران السريع Seeker الخصائص التالية.

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

السمة: رقم تعريف الطراز

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

Octet نوع البيانات الوصف القيمة
0 - 2 uint24 رقم تعريف الطراز يختلف

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

الجدول 1.3: الردّ الأوّلي مشفَّرة لإنتاج الردّ المشفَّر في الجدول 1.4.

Octet نوع البيانات الوصف القيمة
0 -15 uint128 ردّ مشفَّر يختلف

الجدول 1.4: الرد المشفّر، الذي يرسله مقدّم الخدمة إلى طالب الخدمة عبر إشعار

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

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

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

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

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

الجدول 2.2: حظر مفتاح المرور الأولي نسخة فك تشفير الجدول 2.1

السمة: مفتاح الحساب

بعد الإقران السريع، ستكتب أداة Fast Pair Seeker مفتاح حساب إلى Fast Pair Provider.

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

عند تلقّي طلب كتابة، يجب أن ينفّذ موفّر الإقران السريع ما يلي:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Octet الوصف القيمة
من 0 إلى 7 أول 8 بايت من HMAC-SHA256 يختلف
‫8 - 15 قيمة Nonce، التي تستخدمها عملية التشفير AES-CTR يختلف
‫16 - var البيانات المشفَّرة يختلف

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

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

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

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

  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],...) لإنشاء البيانات الأولية.