ميزة "شبكة Wi-Fi الخاصة بمشغّل شبكة الجوّال" هي ميزة اتصال تلقائي (باستخدام "هوية مشترك الجوّال الدولي" المشفّرة) متوفّرة في Android 9 والإصدارات الأحدث، وتتيح للأجهزة الاتصال تلقائيًا بشبكات Wi-Fi التي يوفّرها مشغّل شبكة الجوّال. في المناطق المزدحمة أو التي لا يتوفّر فيها سوى تغطية محدودة لشبكة الجوّال، مثل ملعب أو محطة قطار تحت الأرض، يمكن أن تحسّن ميزة "شبكة Wi-Fi الخاصة بمشغّل شبكة الجوّال" تجربة الاتصال بالإنترنت لدى المستخدمين وتخفّف من الازدحام على الشبكة.
تتصل الأجهزة التي تتضمّن ميزة "شبكة Wi-Fi الخاصة بمشغّل شبكة الجوّال" تلقائيًا بشبكات Wi-Fi التي يوفّرها مشغّل شبكة الجوّال والتي تم ضبطها (الشبكات التي تتضمّن شهادة مفتاح عام). عندما يقطع المستخدم الاتصال يدويًا بشبكة Wi-Fi التي يوفّرها مشغّل شبكة الجوّال، يتم إدراج الشبكة في القائمة المحظورة لمدة 24 ساعة (لا يتم الاتصال تلقائيًا). يمكن للمستخدمين الاتصال يدويًا بالشبكات المدرَجة في القائمة المحظورة في أي وقت.
التنفيذ
على الشركات المصنّعة للأجهزة ومشغّلي شبكات الجوّال اتّخاذ الإجراءات التالية لتفعيل ميزة "شبكة Wi-Fi الخاصة بمشغّل شبكة الجوّال".
الشركات المصنّعة
بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 11 والإصدارات الأحدث، استخدِم واجهة برمجة التطبيقات Wi-Fi suggestion API لإضافة ملفات شخصية لشبكة Wi-Fi لكل مشغّل شبكة جوّال.
بالنسبة إلى الأجهزة التي تعمل بنظام التشغيل Android 10 أو الإصدارات الأقدم، أضِف ملفات شخصية لشبكة Wi-Fi من خلال
ضبط المَعلمة carrier_wifi_string_arrayلكل مشغّل شبكة جوّال في
أداة إدارة إعدادات مشغّل شبكة الجوّال.
carrier_wifi_string_array:هي مصفوفة سلاسل، كل إدخال فيها عبارة عن معرّف SSID لشبكة Wi-Fi ونوع بروتوكول EAP مشفّران باستخدام Base64 ومفصولان بفاصلة، حيث يكون نوع بروتوكول EAP عددًا صحيحًا (راجِع سجلّ بروتوكول المصادقة القابل للتوسيع (EAP)). على سبيل المثال، يخصّ الضبط التالي SOME_SSID_NAME باستخدام EAP-AKA و Some_Other_SSID باستخدام EAP-SIM:
config { key: "carrier_wifi_string_array" text_array { item: "U09NRV9TU0lEX05BTUUK,23" item: "U29tZV9PdGhlcl9TU0lECg==,18" } }
في أداة إدارة إعدادات مشغّل شبكة الجوّال، اضبط المَعلمات التالية لكل مشغّل شبكة جوّال:
imsi_key_availability_int:تحدّد هذه المَعلمة ما إذا كان المفتاح المستخدَم لتشفير "هوية مشترك الجوّال الدولي" (IMSI) متاحًا لشبكة WLAN (إذا تم ضبط وحدة البت 1) أو شبكة EPDG (إذا تم ضبط وحدة البت 0) أو كلتيهما (إذا تم ضبط كل من وحدة البت 0 ووحدة البت 1). على سبيل المثال، يشير الضبط التالي إلى أنّ تشفير "هوية مشترك الجوّال الدولي" (IMSI) متاح لشبكة WLAN وليس لشبكة EPDG:
config { key: "imsi_key_availability_int" int_value: 2 }imsi_key_download_url_string:عنوان URL الذي يتم منه تنزيل النموذج الأولي الذي يحتوي على المفتاح العام لمشغّل شبكة الجوّال المستخدَم لتشفير "هوية مشترك الجوّال الدولي" (IMSI). على سبيل المثال، يقدّم الضبط التالي عنوان URL محدّدًا:
config { key: "imsi_key_download_url_string" text_value: "https://www.some_company_name.com:5555/some_directory_name/some_filename.json" }allow_metered_network_for_cert_download_bool: هي علامة تشير إلى ما إذا كان سيتم السماح بتنزيل المفتاح العام لمشغّل شبكة الجوّال عبر شبكة خاضعة للقياس (شبكة جوّال). إذا لم يتم ضبط هذه العلامة، لن يتمكّن جهاز جديد غير متصل بشبكة Wi-Fi من الاتصال بشبكة Wi-Fi التي يوفّرها مشغّل شبكة الجوّال لأنّه لن يُسمح له بتنزيل المفتاح.config { key: "allow_metered_network_for_cert_download_bool" bool_value: true }
مشغّل شبكة الجوّال
لتفعيل ميزة "شبكة Wi-Fi الخاصة بمشغّل شبكة الجوّال"، على مشغّل شبكة الجوّال تفعيل ميزة حماية خصوصية "هوية مشترك الجوّال الدولي" (IMSI) وتقديم مفتاح عام.
حماية خصوصية "هوية مشترك الجوّال الدولي" (IMSI)
يحمي Android سرية الهوية الدائمة للمشترك (IMSI) باستخدام تشفير المفتاح العام. يطبّق Android مواصفات Wireless Broadband Alliance (WBA) لحماية خصوصية "هوية مشترك الجوّال الدولي" (IMSI) لشبكة Wi-Fi. عند تفعيل ميزة حماية خصوصية "هوية مشترك الجوّال الدولي" (IMSI) لاتصال، لا يتم إرسال الهوية الدائمة للمشترك بشكل واضح عبر الأثير.
تشفير الهوية الدائمة
يكون تنسيق الهوية الدائمة المشفّرة على النحو التالي:
- تكون الهوية الدائمة بالتنسيق
<EAP-Method><IMSI>@<NAI realm>. - بادئة EAP-Method هي ثمانية واحدة تحدّد طريقة EAP المستخدَمة للمصادقة:
0: EAP-AKA1: EAP-SIM6: EAP-AKA'
- يكون تنسيق نطاق NAI هو
wlan.mnc<var>XXX</var>.mcc<var>YYY</var>.3gppnetwork.orgحيث يتم استبدالXXXبرمز شبكة الجوّال (MNC) لشريحة SIM، ويتم استبدالYYYبرمز البلد حيث يتم تشغيل شبكة الجوّال (MCC). - يتم تشفير الهوية الدائمة باستخدام مفتاح عام RSA يقدّمه مشغّل شبكة الجوّال. يتم تضمين المفتاح العام في شهادة X.509.
- نظام التشفير هو RSAES-OAEP مع SHA-256 كدالة التجزئة التشفيرية. يضمن نظام التشفير هذا نصًا مشفّرًا فريدًا في كل مرة يتم فيها استخدام النظام، ما يؤدي إلى تجنُّب هوية أخرى مستمرة يمكن تتبُّعها.
- يبلغ طول مفتاح RSA 2048 بت.
- يبلغ حجم المخزن المؤقت للتشفير 256 بايت.
- يتم ترميز النص المشفّر باستخدام Base64.
- يبلغ طول الهوية الدائمة المشفّرة الناتجة 344 بايت.
Encrypted Permanent Identity = Base64(RSAES-OAEP-SHA-256(<EAP-Method><IMSI>@<NAI Realm>))
مُعرّف المفتاح
مُعرّف المفتاح هو زوج من قيمة وسمة اختياريتَين يرفقهما مشغّل شبكة الجوّال بشهادة للسماح للخادم بالعثور على المفتاح الخاص المناسب أثناء المصادقة. أحد الأمثلة على مُعرّف المفتاح هو CertificateSerialNumber=123456. إذا تم تقديم مُعرّف المفتاح، يتم إرساله بشكل واضح كجزء من عملية المصادقة.
التعديلات على طرق مصادقة EAP المستندة إلى شريحة SIM
عند تفعيل ميزة حماية خصوصية "هوية مشترك الجوّال الدولي" (IMSI) على اتصال، لا يُرسِل النظام الهوية الدائمة عند استلام EAP-Request/Identity، بل يردّ بدلاً من ذلك بتسجيل دخول مجهول:
SERVER: EAP-Request/Identity
UE: EAP-Response/Identity AT_IDENTITY=<prefix>|anonymous@<NAI Realm>
<prefix> هو عنصر اختياري. إذا تم ضبط إعدادات مشغّل شبكة الجوّال enable_eap_method_prefix_bool على true، يُعلم الحرف الأول من الهوية (قبل anonymous) الخادم بنوع طريقة EAP المستخدَمة قبل بدء عملية تبادل EAP.
0: EAP-AKA1: EAP-SIM6: EAP-AKA'
إذا تم ضبط إعدادات مشغّل شبكة الجوّال على false، لا يتم تضمين هذه البادئة في الرسالة.
ردًا على ذلك، يُرسِل الخادم رسالة EAP-Request/AKA-Identity ويردّ النظام بالتنسيق التالي:
SERVER: EAP-Request/AKA-Identity AT_ANY_ID_REQ
UE: EAP-Response/AKA-Identity AT_IDENTITY=<prefix>|<Encrypted Permanent Identity>|","|"<attribute>=<value>"
يُعلم الحرف الأول من الهوية الخادم إما بأنّه يتم استخدام هوية مشفّرة أو بنوع طريقة EAP التي تم ضبطها:
\0: هوية دائمة مشفّرة0: EAP-AKA1: EAP-SIM6: EAP-AKA'
زوج قيمة وسمة مُعرّف المفتاح اختياري ولا يتم إلحاقه بنهاية الهوية الدائمة المشفّرة إذا لم يكن قيد الاستخدام.
في هذه المرحلة، يعثر الخادم على المفتاح الخاص من مُعرّف المفتاح (إذا تم تقديمه)، ويفك تشفير الهوية المشفّرة باستخدام المفتاح الخاص لمشغّل شبكة الجوّال، ويتابع تدفق EAP العادي.
بعد المصادقة الناجحة، يمكن للخادم تقديم هوية إعادة مصادقة سريعة أو هوية مؤقتة (اسم مستعار)، يتم استخدامها في الاتصالات اللاحقة. إذا لم يقدّم الخادم أي هويات مؤقتة، يُرسِل النظام الهوية المشفّرة في الاتصال اللاحق.
استرداد شهادة مشغّل شبكة الجوّال وانتهاء صلاحيتها وإبطالها
إذا لم يتم تثبيت أي شهادة في النظام، يستخدم النظام عنوان URL المقدَّم في إعدادات مشغّل شبكة الجوّال imsi_key_download_url_string لتنزيل شهادة باستخدام طريقة GET. لا يستخدم النظام بيانات شبكة الجوّال إلا إذا تم ضبط إعدادات مشغّل شبكة الجوّال allow_metered_network_for_cert_download_bool على true. بخلاف ذلك، لا ينزّل النظام الشهادة إلا عندما يكون اتصال Wi-Fi متاحًا.
يفرض النظام انتهاء صلاحية الشهادة. يبدأ النظام محاولة تجديد الشهادات قبل 21 يومًا من تاريخ انتهاء صلاحية الشهادة، ويستخدم عنوان URL نفسه لتنزيل الشهادة الجديدة.
إذا تعذّر على الخادم فك تشفير الهوية المشفّرة، يُرسِل الخادم رسالة EAP-Request/AKA-Notification مع الرمز AT_NOTIFICATION General Failure (16384) لإنهاء عملية تبادل EAP.
إذا تم إبطال الشهادة أو انتهت صلاحيتها، يُرسِل الخادم رسالة EAP-Request/AKA-Notification مع الرمز AT_NOTIFICATION Certificate Replacement Required (16385) لإنهاء عملية تبادل EAP. ردًا على ذلك، يطبّق النظام أساليب بحث داخلية لتحديد ما إذا كان سيتم إزالة الشهادة ومحاولة تنزيل شهادة جديدة من عنوان URL نفسه.
تقديم المفتاح العام
قدِّم عنوان URL عامًا لخادم، يُفضَّل استخدام HTTP عبر بروتوكول أمان طبقة النقل (TLS)، يستضيف شهادة مشغّل شبكة الجوّال، حيث:
- يمكن استخراج المفتاح العام وتاريخ انتهاء الصلاحية من الشهادة.
تكون المعلومات من الخادم بتنسيق JSON على النحو التالي:
Property: key-identifier Type: String Encoding: UTF-8 Description: Specifies an identifier that the carrier would like to attach to the certificate. Optional: Yes Property: certificate Property alternative name: public-key Type: String Encoding: Base64 Description: The content of the carrier's X.509 certificate. Optional: No Property: key-type Type: String Encoding: UTF-8 Description: Specifies the module that will use the key. The value for type must be either WLAN or EPDG. Optional: Yes. If the key-type property isn't included, then its value defaults to WLAN.في ما يلي مثال على مفتاح عام.
{ "carrier-keys" : [ { "key-identifier" : "CertificateSerialNumber=5xxe06d4", "public-key" : "-----BEGIN CERTIFICATE-----\r\nTIIDRTCCAi2gAwIBAgIEVR4G1DANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJVUzELMAkGA1UE\r\nCBMCTkExCzAJBgNVBAcTAk5BMQswCQYDVQQKEwJOQTELMAkGA1UECxMCTkExEDAOBgNVBAMTB1Rl\r\nc3RiT6N1/w==\r\n-----END CERTIFICATE-----" } ] }