امتيازات مشغِّل شبكة الجوّال في UICC

قدّم Android 5.1 آلية لمنح امتيازات خاصة لواجهات برمجة التطبيقات. ما يتناسب مع مالكي تطبيقات بطاقات الدوائر المُدمَجة العامة (UICC). تشير رسالة الأشكال البيانية نظام Android الأساسي يحمّل الشهادات المخزنة على UICC ويمنح الإذن موقعة من خلال هذه الشهادات لإجراء اتصالات بمجموعة من واجهات برمجة التطبيقات الخاصة.

تم توسيع هذه الميزة في Android 7.0 لتتوافق مع مصادر مساحة التخزين الأخرى في UICC قواعد امتياز مشغل شبكة الجوال، زيادة عدد مشغِّلي شبكات الجوّال الذين يمكنهم استخدام واجهات برمجة التطبيقات. كمرجع لواجهة برمجة التطبيقات، راجع CarrierConfigManager؛ للحصول على التعليمات راجع مشغل شبكة الجوال الإعدادات:

وتتمتع هذه الآلية بالتحكم الكامل في واجهة UICC، توفر طريقة آمنة ومرنة لإدارة التطبيقات من مشغّل شبكة الجوّال (MNO) على قنوات توزيع التطبيقات العامة (مثل Google Play) الاحتفاظ بامتيازات خاصة على الأجهزة ودون الحاجة إلى توقيع التطبيقات باستخدام شهادة النظام الأساسي لكل جهاز أو التثبيت المسبق كتطبيق نظام.

القواعد في UICC

تتوافق مساحة التخزين في UICC مع شركة GlobalPlatform مواصفات التحكُّم في الوصول إلى العناصر الآمنة معرّف التطبيق (AID) على البطاقة هي A00000015141434C00، والقيمة العادية GET DATA يستخدم الأمر لجلب القواعد المخزنة على البطاقة. يمكنك تعديل هذه القواعد. من خلال تحديثات البطاقة عبر شبكة غير سلكيّة (OTA).

التسلسل الهرمي للبيانات

تستخدم قواعد UICC التسلسل الهرمي للبيانات التالي (الحرف المكون من حرفين مجموعة الأرقام الموجودة بين قوسين هي علامة الكائن). كل قاعدة هي REF-AR-DO (E2) وتتألف من سلسلة من REF-DO وAR-DO:

  • يحتوي REF-DO (E1) على DeviceAppID-REF-DO أو تسلسل من DeviceAppID-REF-DO وPKG-REF-DO
    • تخزِّن DeviceAppID-REF-DO (C1) خوارزمية SHA-1. توقيع الشهادة (20 بايت) أو SHA-256 (32 بايت)
    • PKG-REF-DO (CA) هو اسم الحزمة الكامل سلسلة محددة في ملف البيان، بترميز ASCII، الحد الأقصى للطول هو 127 بايت.
  • تم توسيع نطاق "AR-DO" (E3) ليشمل PERM-AR-DO (DB)، وهو وحدة بت من 8 بايت قناع يمثل 64 إذنًا منفصلاً.

في حال عدم توفّر PKG-REF-DO، يعني ذلك أي تطبيق تم توقيعه من خلال الشهادة. تم منحه إذن الوصول وإلا يجب أن يكون كل من الشهادة واسم الحزمة مطابقة.

مثال على القاعدة

اسم التطبيق هو com.google.android.apps.myapp و شهادة SHA-1 في سلسلة سداسية عشرية هي:

AB:CD:92:CB:B1:56:B2:80:FA:4E:14:29:A6:EC:EE:B6:E5:C1:BF:E4

القاعدة الموجودة على UICC في السلسلة السداسية هي:

E243 <= 43 is value length in hex
  E135
    C114 ABCD92CBB156B280FA4E1429A6ECEEB6E5C1BFE4
    CA1D 636F6D2E676F6F676C652E616E64726F69642E617070732E6D79617070
  E30A
    DB08 0000000000000001

الوصول إلى دعم ملفات القواعد

يتيح Android 7.0 إمكانية قراءة قواعد امتيازات مشغّل شبكة الجوّال من أذونات الوصول. ملف قاعدة (ARF).

يحاول نظام Android الأساسي أولاً اختيار تطبيق قاعدة الوصول (ARA) رقم التعريف الشخصي (ARA) A00000015141434C00. إذا لم يتم العثور على AID في UICC، يعود إلى ARF من خلال تحديد PKCS15 AID A000000063504B43532D3135 يقرأ Android بعد ذلك ملف قواعد التحكم بالوصول (ACRF) على 0x4300 ويبحث عن الإدخالات مع AID FFFFFFFFFFFF. يتم تجاهل الإدخالات التي تحتوي على معرّفات AID مختلفة، ولذلك مع قواعد لحالات الاستخدام الأخرى.

مثال على محتوى ACRF في سلسلة سداسية عشرية:

30 10 A0 08 04 06 FF FF FF FF FF FF 30 04 04 02 43 10

مثال على محتوى ملف شروط التحكّم بالوصول (ACCF):

30 16 04 14 61 ED 37 7E 85 D3 86 A8 DF EE 6B 86 4B D8 5B 0B FA A5 AF 81

في المثال أعلاه، 0x4310 هو عنوان ACCF، والذي يحتوي على تجزئة الشهادة 61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81 حملة التطبيقات الموقعة من خلال هذه الشهادة تم منحها امتيازات مشغِّل شبكة الجوّال.

واجهات برمجة التطبيقات التي تم تفعيلها

يتوافق Android مع واجهات برمجة التطبيقات التالية.

مدير الاتصال الهاتفي

معاودة الاتصال الهاتفي

تتضمن TelephonyCallback واجهات مع طريقة معاودة الاتصال إرسال إشعار إلى تطبيق الاتصال عند تغيير الولايات المسجَّلة:

مدير الاشتراكات

مدير الرسائل القصيرة SMS

  • طريقة السماح للمتصل بإنشاء رسائل SMS واردة جديدة: injectSmsPdu
  • طريقة إرسال رسالة SMS تستند إلى النص بدون كتابتها في رسالة SMS sendTextMessageWithoutPersisting

إدارة إعدادات مشغّل شبكة الجوال

  • طريقة إشعار الضبط التي تم تغييرها: notifyConfigChangedForSubId
  • طريقة الحصول على إعدادات مشغّل شبكة الجوّال للاشتراك التلقائي: getConfig
  • طريقة الحصول على إعدادات مشغّل شبكة الجوّال للاشتراك المحدّد: getConfigForSubId

للحصول على التعليمات، يُرجى الاطّلاع على ضبط مشغّل شبكة الجوّال

إدارة تقرير الأخطاء

طريقة لبدء تقرير خطأ الاتصال، وهو إصدار متخصص من تقرير الأخطاء الذي يتضمن فقط معلومات لتصحيح الأخطاء المتعلقة بالاتصال المشكلات: startConnectivityBugreport

مدير NetworkStats

مدير رسائل SMS

مدير ImsRcsManager

إدارة توفير المتطلبات اللازمة

مدير EuiccManager

طريقة التبديل إلى (تفعيل) الاشتراك المحدّد: switchToSubscription

CarrierMessagingService

الخدمة التي تتلقّى مكالمات من النظام عند إرسال رسائل قصيرة SMS ورسائل وسائط متعددة جديدة أو المستلمة. لتوسيع هذه الفئة، يجب الإفصاح عن الخدمة في ملف البيان باستخدام android.Manifest.permission#BIND_CARRIER_MESSAGING_SERVICE مع تضمين فلتر أهداف باستخدام #SERVICE_INTERFACE اتخاذ القرار. وتشمل الطُرق ما يلي:

  • طريقة تصفية رسائل SMS الواردة: onFilterSms
  • طريقة اعتراض الرسائل النصية القصيرة SMS المُرسَلة من الجهاز: onSendTextSms
  • طريقة اعتراض رسائل SMS الثنائية التي يتم إرسالها من الجهاز: onSendDataSms
  • طريقة اعتراض رسائل SMS الطويلة المُرسَلة من الجهاز: onSendMultipartTextSms
  • طريقة اعتراض رسائل الوسائط المتعددة المُرسَلة من الجهاز: onSendMms
  • طريقة تنزيل رسائل الوسائط المتعددة التي تم استلامها: onDownloadMms

خدمة مشغّل شبكة الجوّال

هي خدمة تعرض الوظائف الخاصة بمشغّل شبكة الجوّال للنظام. إلى توسيع هذه الفئة، أو الإفصاح عن الخدمة في ملف بيان التطبيق باستخدام إذن android.Manifest.permission#BIND_CARRIER_SERVICES و ضمِّن فلتر أهداف مع الإجراء CARRIER_SERVICE_INTERFACE. في حال توفّر ربط طويل الأمد للخدمة، يجب ضبط من android.service.carrier.LONG_LIVED_BINDING إلى true في البيانات الوصفية للخدمة.

تربط المنصة CarrierService بعلامات خاصة للسماح شركة النقل بطريقة خاصة حزمة تطبيقات وضع الاستعداد وهذا يستثني تطبيق خدمة مشغّل شبكة الجوّال من تقييد استخدام التطبيقات في وضع عدم النشاط ويزيد من احتمال بقائها في وضع التشغيل عندما يكون الجهاز الذاكرة منخفضة. ومع ذلك، إذا تعطّل تطبيق خدمة مشغّل شبكة الجوّال لأي سبب من الأسباب، يفقد التطبيق جميع الامتيازات المذكورة أعلاه إلى أن تتم إعادة تشغيل التطبيق وتتم عملية الربط إعادة تأسيسه. لذلك، من الضروري الحفاظ على ثبات تطبيق خدمة مشغّل شبكة الجوّال.

تتضمّن الطرق في CarrierService ما يلي:

  • لإلغاء الإعدادات الخاصة بمشغّل شبكة الجوّال وضبطها: onLoadConfig
  • لإبلاغ النظام بتغيير متعمّد قادم في شبكة مشغّل شبكة الجوّال من خلال تطبيق مشغل شبكة الجوال: notifyCarrierNetworkChange

مقدِّم خدمات الاتصال الهاتفي

واجهات برمجة التطبيقات لموفّر المحتوى للسماح بالتعديلات (إدراج، حذف، تحديث، طلب) إلى قاعدة بيانات الاتصالات الهاتفية. يتم تحديد حقول القيم عند Telephony.Carriers لمزيد من التفاصيل، راجع مرجع الفئة Telephony

اقتراح شبكة Wi-Fi

عند إنشاء عنصر WifiNetworkSuggestion، استخدِم ما يلي: الطرق لضبط معرّف الاشتراك أو مجموعة اشتراك:

نظام Android الأساسي

في واجهة UICC يتم اكتشافها، تُنشئ المنصة كائنات UICC داخلية تضمين قواعد امتيازات مشغل شبكة الجوال كجزء من UICC. UiccCarrierPrivilegeRules.java ويحمِّل القواعد ويحلّلها من بطاقة UICC ويخزّنها في ذاكرة التخزين المؤقت. فعندما هناك حاجة إلى التحقق من الامتياز، يقارن UiccCarrierPrivilegeRules شهادة المتصل بقواعدها الخاصة واحدة تلو الأخرى. إذا تمت إزالة UICC، يتم إتلاف القواعد إلى جانب كائن UICC.

التحقُّق

للتحقّق من صحة التنفيذ من خلال مجموعة اختبار التوافق (CTS) باستخدام CtsCarrierApiTestCases.apk، يجب أن يكون لديك واجهة UICC للمطوّر بها قواعد UICC أو دعم ARF الصحيح اطلب من بائع شريحة SIM الذي تختاره إعداد واجهة UICC للمطوّر، ARF الصحيح كما هو موضح في هذا القسم واستخدام واجهة UICC تلك لإجراء الاختبارات. تشير رسالة الأشكال البيانية لا تتطلب UICC خدمة شبكة جوّال نشطة لاجتياز اختبارات CTS.

تجهيز UICC

على نظام التشغيل Android 11 والإصدارات الأقدم، CtsCarrierApiTestCases.apk هو موقَّعة من قِبل aosp-testkey بقيمة تجزئة 61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81

بدءًا من نظام التشغيل Android 12، سيكون CtsCarrierApiTestCases.apk موقَّعة من قِبل cts-uicc-2021-testkey، قيمة التجزئة CE:7B:2B:47:AE:2B:75:52:C8:F9:2C:C2:91:24:27:98:83:04:1F:B6:23:A5:F1:94:A8:2C:9B:F1:5D:49:2A:A0

لإجراء اختبارات واجهة برمجة التطبيقات لمشغّل شبكة الجوّال من CTS في Android 12، يحتاج الجهاز إلى استخدام شريحة SIM مع مشغّل شبكة جوّال CTS الامتيازات التي تستوفي المتطلبات المحددة في أحدث إصدار من الطرف الثالث مواصفات ملف اختبار GSMA TS.48.

ويمكن أيضًا استخدام شريحة SIM نفسها للإصدارات التي تسبق الإصدار 12 من نظام التشغيل Android.

تعديل الملف الشخصي لشريحة SIM الخاصة بـ CTS

  1. الإضافة: امتيازات مشغّل شبكة الجوال CTS في الوصول إلى تطبيق قاعدة الوصول الرئيسي (ARA-M) أو ARF. يجب أن يكون كلا التوقيعين تم ترميزها في قواعد امتيازات مشغّل شبكة الجوّال:
    1. التجزئة 1(SHA1): 61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81
    2. تجزئة 2(SHA256): CE:7B:2B:47:AE:2B:75:52:C8:F9:2C:C2:91:24:27:98:83:04:1F:B6:23:A5:F1:94:A8:2C:9B:F1:5D:49:2A:A0
  2. الإنشاء: ملفات ADF USIM الأساسية (EFs) غير متوفرة في TS.48 ومطلوبة لـ CTS:
    1. EF_MBDN (6FC7)، حجم السجل: 28، رقم السجل: 4
      • قانع
        1. Rec1: 566F696365204D61696CFFFFFFFF06915155555555FF...FF
        2. Rec2-n: FF...FF
    2. EF_EXT6 (6FC8)، حجم السجل:13، رقم السجل: 1
      • المحتوى: 00FF...FF
        1. EF_MBI (6FC9)، حجم السجل: 4، رقم السجل: 1
      • المحتوى: Rec1: 01010101
        1. EF_MWIS (6FCA)، حجم السجل: 5، رقم السجل: 1
      • المحتوى: 0000000000
  3. تعديل: جدول خدمة USIM: تفعيل الخدمات رقم 47 ورقم 48
    1. EF_UST (6F38)
      • المحتوى: 9EFFBF1DFFFE0083410310010400406E01
  4. التعديل: ملفات DF-5GS وDF-SAIP
    1. DF-5GS - EF_5GS3GPPLOCI (USIM/5FC0/4F01)
      • المحتوى: FFFFFFFFFFFFFFFFFFFFFFFFFF42F618FFFFFE01
    2. DF-5GS - EF_5GSN3GPPLOCI (USIM/5FC0/4F02)
      • المحتوى: FFFFFFFFFFFFFFFFFFFFFFFFFF42F618FFFFFE01
    3. DF-5GS - EF SUCI_Calc_Info (USIM/5FC0/4F07)
      • المحتوى: A0020000FF…FF
    4. DF-SAIP - EF SUCI_Calc_Info_USIM (USIM/5FD0/4F01)
      • المحتوى: A0020000FF…FF
  5. التعديل: استخدِم سلسلة اسم مشغّل شبكة الجوّال Android CTS. في EFs ذات الصلة التي تتضمن هذا التصنيف:
    1. EF_SPN (USIM/6F46)
      • المحتوى: 01416E64726F696420435453FF..FF
    2. EF_PNN (USIM/6FC5)
      • المحتوى: Rec1 430B83413759FE4E934143EA14FF..FF

مطابقة بنية الملف الشخصي للاختبار

نزِّل أحدث إصدار من البُنى العامة التالية للملفات الشخصية للاختبار ومطابقتها. لن يتم تخصيص قاعدة امتياز مشغّل شبكة الجوّال في هذه الملفات الشخصية أو إجراء تعديلات أخرى الواردة أعلاه.

إجراء الاختبارات

ولتسهيل الأمر، تدعم CTS رمزًا مميّزًا للجهاز يحدّ من إجراء اختبارات ليتم إجراؤها فقط على الأجهزة التي تم إعدادها باستخدام الرمز المميز نفسه. مجموعة أدوات اختبار البيانات (CTS) من واجهة برمجة تطبيقات مشغّل شبكة الجوّال اختبار إمكانية استخدام الرمز المميّز للجهاز sim-card-with-certs. على سبيل المثال: يمنع الرمز المميز التالي الخاص بالجهاز إجراء اختبارات واجهة برمجة تطبيقات مشغِّل شبكة الجوّال على الجهاز فقط abcd1234:

cts-tradefed run cts  --device-token abcd1234:sim-card-with-certs

عند إجراء اختبار بدون استخدام رمز مميّز للجهاز، يتم إجراء الاختبار على جميع الأجهزة.

الأسئلة الشائعة

كيف يمكن تعديل الشهادات في واجهة UICC؟

ج: استخدام الآلية الحالية لتعديل معلومات البطاقة عبر الهواء.

هل يمكن لتطبيق UICC العمل مع قواعد أخرى؟

الجواب: لا بأس في وضع قواعد أمان أخرى على واجهة المستخدم في كاليفورنيا (UICC) تحت رقم AID نفسه. تعمل المنصة على فلترة هذه النتائج تلقائيًا.

ماذا يحدث عند إزالة UICC لتطبيق يعتمد على أو الشهادات عليها؟

ج: يفقد التطبيق امتيازاته بسبب القواعد المرتبطة تم إتلاف UICC عند إزالة UICC.

هل هناك حدّ أقصى لعدد الشهادات في واجهة UICC؟

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

هل هناك حدّ أقصى لعدد واجهات برمجة التطبيقات التي يمكننا استخدامها في تنفيذ هذه العملية؟ الطريقة؟

الجواب: لا، ولكن نحصر النطاق بواجهات برمجة التطبيقات المتعلقة بمشغّل شبكة الجوّال.

هل هناك بعض واجهات برمجة التطبيقات ممنوعة من استخدام هذه الطريقة؟ إذا كان الأمر كذلك، فكيف لفرضها؟ (أي، هل لديك اختبارات للتحقق من واجهات برمجة التطبيقات مع هذه الطريقة؟)

ج: اطّلِع على قسم "التوافق مع سلوك واجهة برمجة التطبيقات" ضِمن نظام التوافق مع Android مستند تعريف (CDD) ولدينا بعض اختبارات CTS للتأكد من أن عدم تغيير نموذج أذونات واجهات برمجة التطبيقات.

كيف تعمل هذه الميزة مع ميزة شرائح SIM المتعددة؟

ج: يتم استخدام شريحة SIM التلقائية التي حدّدها المستخدم.

هل يؤدي ذلك بأي شكل من الأشكال إلى التفاعل أو التداخل مع إمكانية الوصول إلى شريحة العنصر الآمن الأخرى التكنولوجيات، مثل SeeK؟

الجواب: على سبيل المثال، يستخدم SeeK معرّف AID نفسه الوارد في واجهة UICC. لذا فإن القواعد معًا ويتم تصفيتها إما باستخدام SeeK أو UiccCarrierPrivileges.

ما هو الوقت المناسب للتحقّق من امتيازات مشغّل شبكة الجوّال؟

ج: بعد تحميل حالة شريحة SIM للبث.

هل يمكن للمصنّعين الأصليين للأجهزة إيقاف جزء من واجهات برمجة تطبيقات مشغّل شبكة الجوّال؟

الجواب: لا. نحن نعتقد أنّ واجهات برمجة التطبيقات الحالية هي الحدّ الأدنى من عدد الحِزم، ونخطط لاستخدام قناع البت للتحكّم في الدقة بشكل أدق في المستقبل.

هل يلغي setOperatorBrandOverride جميع النماذج الأخرى؟ من عامل تشغيل سلاسل الأسماء؟ على سبيل المثال، SE13 أو UICC SPN أو NITZ المستندة إلى الشبكة؟

نعم، يحظى إلغاء العلامة التجارية لمنظِّم الجولات بالأولوية القصوى. وعند ضبطها، يتم إلغاء "الكل". الأشكال الأخرى لسلاسل أسماء عوامل التشغيل.

ما هو وظيفة استدعاء طريقة injectSmsPdu؟

ج: تسهّل هذه الطريقة الاحتفاظ بنسخة احتياطية من الرسائل القصيرة أو استعادتها في السحابة الإلكترونية. تشير رسالة الأشكال البيانية يؤدي استدعاء injectSmsPdu إلى تفعيل وظيفة الاستعادة.

بالنسبة إلى تصفية الرسائل القصيرة SMS، هل تستند المكالمة "onFilterSms" إلى هل تريد فلترة منفذ UDH للرسائل القصيرة؟ أو هل يمكن لتطبيقات مشغّل شبكة الجوّال الوصول إلى جميع رسائل SMS الواردة؟

ج: يمكن لمشغّلي شبكة الجوّال الوصول إلى جميع بيانات الرسائل القصيرة.

إضافة DeviceAppID-REF-DO للدعم يبدو أن 32 بايت غير متوافق مع مواصفات GP الحالية (والذي يتيح 0 أو 20 بايت فقط)، فلماذا هل تنفذ هذا التغيير؟ ليست خوارزمية SHA-1 كافية لتجنب الاصطدامات؟ هل اقترحت هذا التغيير في GP بالفعل، إذ يمكن غير متوافق مع الأنظمة القديمة مع ARA-M/ARF الحالي؟

ج: تقدّم هذه الإضافة خوارزمية SHA-256 لتوفير أمان مستدام في المستقبل. لـ DeviceAppID-REF-DO بالإضافة إلى خوارزمية SHA-1، التي يتم استخدامها حاليًا هو الخيار الوحيد في معيار GP SEAC. ننصح بشدة باستخدام خوارزمية SHA-256.

إذا كانت قيمة DeviceAppID هي 0 (فارغة)، هل يتم تطبيق القاعدة على جميع تطبيقات الأجهزة التي لا تشملها قاعدة محدّدة؟

ج: تتطلّب واجهات برمجة تطبيقات مشغّل شبكة الجوّال ملء الحقل DeviceAppID-REF-DO. فعندما يكون فارغًا لأغراض الاختبار، لا ننصح باستخدامه وعمليات النشر.

وفقًا للمواصفات التي وضعتها، تم استخدام PKG-REF-DO من قِبل نفسها، بدون DeviceAppID-REF-DO، يجب قبولها. لَكِنْ فإنه لا يزال موصوفًا في الجدول 6-4 من المواصفات على أنه تمديد تعريف REF-DO. هل هذا عن قصد؟ كيف تعمل التعليمات البرمجية السلوك عند استخدام PKG-REF-DO فقط في REF-DO؟

أ: خيار استخدام PKG-REF-DO كقيمة واحدة تمت إزالة عنصر في REF-DO في أحدث إصدار. يجب أن تحدث السمة PKG-REF-DO فقط مع DeviceAppID-REF-DO

نفترض أنّه يمكننا منح إمكانية الوصول إلى جميع الأذونات المستندة إلى مشغّل شبكة الجوّال أو لديهم تحكم أكثر دقة. إذا كان الأمر كذلك، فما الذي يحدد التعيين بين البت القناع والأذونات الفعلية؟ هل تريد الحصول على إذن واحد لكل صف؟ إذن واحد لكل الطريقة؟ هل 64 إذنًا منفصلاً كافية على المدى الطويل؟

الجواب: هذا الخيار مخصّص للمستقبل، ونرحب بالاقتراحات.

هل يمكنك التعرّف أكثر على DeviceAppID لنظام Android؟ تحديدًا؟ هذه هي قيمة تجزئة SHA-1 (20 بايت) للناشر الشهادة المستخدمة لتوقيع التطبيق المعين، لذا يجب ألا يعكس الاسم الغرض؟ (قد يكون الاسم مربكًا للعديد من القراء لأنّ القاعدة هي تسري على جميع التطبيقات الموقَّعة باستخدام شهادة الناشر نفسها).

ج: تتوافق شهادات التخزين DeviceAppID مع المواصفات الحالية. وقد حاولنا تقليل تغييرات المواصفات لتقليل حاجز الاعتماد. لمعرفة التفاصيل، يُرجى الاطّلاع على القواعد في UICC.