UICC operatör ayrıcalıkları

Android 5.1, API'lere özel ayrıcalıklar vermek için bir mekanizma sundu. evrensel entegre devre kartı (UICC) uygulamalarının sahipleriyle ilgilidir. İlgili içeriği oluşturmak için kullanılan Android platformu, UICC'de depolanan sertifikaları yükler ve bazı özel API'lere çağrı yapmak için bu sertifikalarla imzalanan

Android 7.0, bu özelliğin kapsamını UICC için diğer depolama kaynaklarını destekleyecek şekilde genişletti operatör ayrıcalığı kurallarının önemli ölçüde API'leri kullanabilecek operatörlerin sayısını artırarak. API referansı için: CarrierConfigManager'a bakın; görmek için Operatöre göz atın Yapılandırma.

Operatörler UICC üzerinde tam denetime sahip olduğundan bu mekanizma Uygulamaları mobil ağ operatöründen (MNO) yönetmenin güvenli ve esnek bir yolu genel uygulama dağıtım kanallarında (Google Play gibi) barındırılırken cihazlarda özel ayrıcalıkları koruyarak ve uygulamaları cihaz başına platform sertifikası veya sistem uygulaması olarak önceden yükleme.

UICC'deki kurallar

UICC'deki depolama alanı Küresel Platform Güvenlik Unsuru Erişim Denetimi spesifikasyonu. Uygulama tanımlayıcı Karttaki (AID) A00000015141434C00, standart ise GET DATA komutu, kartta depolanan kuralları getirmek için kullanılır. Bu kuralları güncelleyebilirsiniz online kart (OTA) güncellemeleri aracılığıyla.

Veri hiyerarşisi

UICC kuralları aşağıdaki veri hiyerarşisini kullanır (iki karakterden oluşan harf ve parantez içindeki sayı kombinasyonu nesne etiketidir). Her kural REF-AR-DO (E2) ve şu birleştirme işleminden oluşur: REF-DO ve AR-DO:

  • REF-DO (E1) şunu içeriyor: DeviceAppID-REF-DO veya şunların birleşimi DeviceAppID-REF-DO ve PKG-REF-DO.
    • DeviceAppID-REF-DO (C1) SHA-1'i depolar (20 bayt) veya SHA-256 (32 bayt) imzası.
    • PKG-REF-DO (CA), tam paket adıdır manifestte tanımlı dize, ASCII kodlamalı, maksimum uzunluk 127 bayttır.
  • AR-DO (E3) genişletildi PERM-AR-DO (DB), 8 bayt bit gösteren bir maske içerir.

PKG-REF-DO yoksa sertifika tarafından imzalanan tüm uygulamalar Erişim izni verildiğinde, Aksi takdirde, hem sertifika hem de paket adı eşleşmesini sağlar.

Kural örneği

Uygulama adı: com.google.android.apps.myapp ve Onaltılık dizedeki SHA-1 sertifikası:

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

Onaltılık dizedeki UICC'deki kural şu şekildedir:

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

Erişim kuralı dosyası desteği

Android 7.0, erişimden operatör ayrıcalık kurallarını okuma desteğini ekledi kural dosyasına (ARF) bakın.

Android platformu ilk olarak erişim kuralı uygulamasını seçmeyi dener. (ARA) YARDIM: A00000015141434C00. Bulmazsa UICC'deki AID'yi, PKCS15 AID seçildiğinde ARF'ye geri döner A000000063504B43532D3135 Android daha sonra 0x4300 adresindeki erişim denetimi kuralları dosyasını (ACRF) kontrol eder ve girişleri arar FFFFFFFFFFFF AID ile. Farklı AID'lere sahip girişler yoksayılır. kuralları bir arada mevcut olabilir.

Onaltılık dizedeki örnek ACRF içeriği:

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

Örnek erişim denetimi koşulları dosyası (ACCF) içeriği:

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

Yukarıdaki örnekte 0x4310, ACCF'nin adresidir ve sertifika karmasını içeriyorsa 61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81. Uygulamalar imzalayan kullanıcılara operatör ayrıcalıkları verildi.

Etkin API'ler

Android aşağıdaki API'leri destekler.

Telefon Yöneticisi

Telefonla Geri Arama

TelephonyCallback, için geri çağırma yöntemine sahip arayüzlere sahip kayıtlı durumlar değiştiğinde arama uygulamasını bilgilendir:

Abonelik Yöneticisi

Sms Yöneticisi

  • Arayanın yeni gelen SMS mesajları oluşturmasına izin vermek için kullanılan yöntem: injectSmsPdu değerleridir.
  • SMS'e yazmadan kısa mesaja dayalı bir SMS gönderme yöntemi sağlayıcı: sendTextMessageWithoutPersisting

CarrierConfigManager

Talimatlar için bkz. Operatör Yapılandırması.

Hata Raporu Yöneticisi

Bağlantı hata raporu başlatma yöntemi. yalnızca bağlantılarla ilgili hata ayıklama bilgileri içeren hata raporu sorunlar: startConnectivityBugreport

Ağ İstatistikleri Yöneticisi

ImsMmTelManager

ImsRcsYöneticisi

Temel Hazırlık Yöneticisi

Kullanıcı Adı Yöneticisi

Belirtilen aboneliğe geçiş (etkinleştirme) yöntemi: switchToSubscription

Operatör Mesajlaşma Hizmeti

Yeni SMS ve MMS gönderildiğinde sistemden arama alan hizmet alındı. Bu sınıfı genişletmek için manifest dosyanızda hizmeti android.Manifest.permission#BIND_CARRIER_MESSAGING_SERVICE ve #SERVICE_INTERFACE ile bir intent filtresi ekleyin. eyleme dökülebilir. Yöntemler şunları içerir:

Operatör Hizmeti

Operatöre özgü işlevleri sisteme sunan hizmet. Alıcı: uygulama manifest dosyasında hizmeti android.Manifest.permission#BIND_CARRIER_SERVICES izin ve CARRIER_SERVICE_INTERFACE işlemi içeren bir intent filtresi ekleyin. Hizmetin uzun ömürlü bir bağlaması varsa android.service.carrier.LONG_LIVED_BINDING - Hizmetin meta verilerinde true.

Platform, CarrierService mülkünü özel işaretler ile bağlayarak kargo şirketinin isteğine bağlı olarak özel bir uygulamayı bekleme paketine ekleyin. Bu, operatör hizmeti uygulamasını uygulamanın boşta kalma kısıtlamasına tabi tutulur ve cihaz etkin durumda kalma olasılığını artırır. bellek az. Ancak operatör hizmeti uygulaması herhangi bir nedenle kilitlenirse Uygulama yeniden başlatılana ve bağlama devre dışı bırakılana kadar yukarıdaki tüm ayrıcalıkları kaybeder. yeniden kuruldu. Bu nedenle, kargo hizmeti uygulamasını kararlı tutmak son derece önemlidir.

CarrierService içindeki yöntemler şunlardır:

  • Operatöre özel yapılandırmaları geçersiz kılmak ve ayarlamak için: onLoadConfig
  • Operatör ağı kasıtlı olarak yapılacak bir değişiklik konusunda sistemi operatör uygulaması: notifyCarrierNetworkChange

Telefon hizmeti sağlayıcısı

Değişiklik yapılmasına (ekle, sil, güncelle, sorgula) izin veren içerik sağlayıcı API'leri veri tabanına ekleme yapabilirsiniz. Değer alanları Telephony.Carriers; Ayrıntılı bilgi için Telephony sınıf referansı

Kablosuz Ağ Önerisi

Bir WifiNetworkSuggestion nesnesi oluştururken şunu kullanın: şu yöntemleri deneyebilirsiniz:

Android platformu

Algılanan bir UICC'de, platform oluşturulan dahili UICC nesneleri oluşturur: UICC'nin bir parçası olarak operatör ayrıcalığı kurallarını ekleme. UiccCarrierPrivilegeRules.java kuralları yükler, UICC kartından ayrıştırır ve bellekte önbelleğe alır. Zaman ayrıcalık kontrolü gereklidir; UiccCarrierPrivilegeRules, düzenleyen bir sertifika isteği gönderir. UICC kaldırılırsa kuralları, UICC nesnesiyle birlikte kaldırılır.

Doğrulama

Uygulamayı Uyumluluk Test Paketi (CTS) kullanarak CtsCarrierApiTestCases.apk, doğru UICC kurallarına veya ARF desteğine sahip bir geliştirici UICC'nizin olması gerekir. Tercih ettiğiniz SIM kart tedarikçisinden bir geliştirici UICC'si hazırlamasını isteyin. sağ ARF'yi kullanın ve testleri çalıştırmak için bu UICC'yi kullanın. İlgili içeriği oluşturmak için kullanılan UICC, CTS testlerini geçmek için etkin hücresel hizmet gerektirmez.

UICC'yi hazırlama

Android 11 ve önceki sürümlerde CtsCarrierApiTestCases.apk aosp-testkey tarafından imzalanmış, karma değere sahip 61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81.

Android 12 sürümünden itibaren CtsCarrierApiTestCases.apk, imzalayan: cts-uicc-2021-testkey, karma değer 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.

Android'de CTS operatör API testlerini çalıştırmak için 12, cihazın CTS operatörüne bağlı bir SIM kullanması gerekir en son sürümünde belirtilen gereksinimleri karşılayan, üçüncü taraf GSMA TS.48 Test Profili spesifikasyonu.

Aynı SIM, şu tarihten önceki sürümler için de kullanılabilir: Android 12.

CTS SIM profilini değiştir

  1. Ekle: CTS operatör ayrıcalıkları ana erişim kuralı uygulama ana (ARA-M) veya ARF. Her iki imza da operatör ayrıcalık kurallarında kodlanmış olmalıdır:
    1. Karma1(SHA1): 61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81.
    2. Karma2(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.
    ziyaret edin.
  2. Oluştur: ADF USIM temel dosyaları (EF) şurada mevcut değil: TS.48 ve CTS için gerekenler:
    1. EF_MBDN (6FC7), kayıt boyutu: 28, kayıt numarası: 4
      • İçerik
        1. Rec1: 566F696365204D61696CFFFFFFFF06915155555555FF...FF
        2. Rec2-n: FF...FF
    2. EF_EXT6 (6FC8), kayıt boyutu:13, kayıt numarası: 1
      • İçerik: 00FF...FF
        1. EF_MBI (6FC9), kayıt boyutu: 4, kayıt numarası: 1
      • İçerik: Rec1: 01010101
        1. EF_MWIS (6FCA), kayıt boyutu: 5, kayıt numarası: 1
      • İçerik: 0000000000
  3. Değiştir: USIM hizmet tablosu: 47, n°48 numaralı hizmetleri etkinleştirin
    1. EF_UST (6F38)
      • İçerik: 9EFFBF1DFFFE0083410310010400406E01
  4. Değiştir: DF-5GS ve DF-SAIP dosyaları
    1. DF-5GS - EF_5GS3GPPLOCI (USIM/5FC0/4F01)
      • İçerik: FFFFFFFFFFFFFFFFFFFFFFFFFF42F618FFFFFE01
    2. DF-5GS - EF_5GSN3GPPLOCI (USIM/5FC0/4F02)
      • İçerik: FFFFFFFFFFFFFFFFFFFFFFFFFF42F618FFFFFE01
    3. DF-5GS - EF SUCI_Calc_Info (USIM/5FC0/4F07)
      • İçerik: A0020000FF…FF
    4. DF-SAIP - EF SUCI_Calc_Info_USIM (USIM/5FD0/4F01)
      • İçerik: A0020000FF…FF
  5. Değiştir: Operatör adı dizesini Android CTS kullanın aşağıdaki etiketi içeren ilgili EF'lerde yer alır:
    1. EF_SPN (USIM/6F46)
      • İçerik: 01416E64726F696420435453FF..FF
    2. EF_PNN (USIM/6FC5)
      • İçerik: Rec1 430B83413759FE4E934143EA14FF..FF

Test profili yapısını eşleştirin

Aşağıdaki genel test profili yapılarının en son sürümünü indirin ve eşleştirin. Bu profillerde kişiselleştirilmiş CTS Operatör Ayrıcalığı kuralı veya başka değişiklikler yapılmaz listelenenler gibi.

Testler yapın

Kolaylık sağlaması açısından CTS, testlerinin yalnızca aynı jetonla yapılandırılmış cihazlarda çalıştırılmasını sağlar. Operatör API CTS'si testler, sim-card-with-certs cihaz jetonunu destekliyor. Örneğin, Aşağıdaki cihaz jetonu, operatör API testlerini yalnızca cihaz üzerinde çalışacak şekilde kısıtlıyor abcd1234:

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

Cihaz jetonu kullanmadan bir test çalıştırdığınızda test, cihazlar.

SSS

Sertifikalar UICC'de nasıl güncellenebilir?

Y: Mevcut kart OTA güncelleme mekanizmasını kullanın.

UICC diğer kurallarla bir arada kullanılabilir mi?

Y: UICC'de aynı AID altında başka güvenlik kuralları da olabilir, bunları otomatik olarak filtreler.

Aşağıdakilere dayalı bir uygulama için UICC kaldırıldığında ne olur: var mı?

Y: Uygulama, UICC kaldırıldığında UICC kaldırılır.

UICC'deki sertifika sayısına ilişkin bir sınır var mı?

Y: Platformda sertifika sayısı sınırlı değildir; Ancak doğrusal olduğu için çok fazla kuralda gecikme yaşanabilir.

Bu konuda destekleyebileceğimiz API sayısında bir sınır var mı? yöntemini nasıl kullanır? 'nı inceleyin.

Y: Hayır ancak kapsamı operatörle ilgili API'lerle sınırlıyoruz.

Bu yöntemi kullanması yasaklanan bazı API'ler var mı? Varsa zorunlu tutuyor musunuz? (yani hangi API'lerin, en iyi performans gösteren bu yöntemle desteklenir mi?)

A: Bkz. Android Uyumluluğu'nun API Davranış Uyumluluğu bölümü Tanım Belgesi (CDD). CTS testlerimizin çoğunda API'lerin izin modeli değişmez.

Çoklu SIM özelliğiyle bu özelliğin işleyiş şekli

Y: Kullanıcı tarafından belirtilen varsayılan SIM kullanılır.

Bu herhangi bir şekilde diğer SE erişimiyle etkileşime giriyor veya çakışıyor mu? SEEK gibi çeşitli teknolojilerle ilişkilendirilir.

Y: Örneğin, SEEK, UICC'deki ile aynı AID'yi kullanır. Bu nedenle, bir arada bulunur ve SEEK veya SEEK tarafından filtrelenir. UiccCarrierPrivileges.

Operatör ayrıcalıklarını hangi durumlarda kontrol edebilirsiniz?

A: SIM durumu yüklendikten sonra.

OEM'ler, operatör API'lerinin bir kısmını devre dışı bırakabilir mi?

Y: Hayır. Şu anki API'lerin setin asgari düzeyde olduğunu düşünüyoruz ve daha hassas ayrıntı denetimi için bit maskesi kullanmayı planlayabilirsiniz.

setOperatorBrandOverride, diğer TÜM formları geçersiz kılar mı? operatör adı dizeleri var mı? Örneğin, SE13, UICC SPN veya ağ tabanlı NITZ.

Evet, operatör markasını geçersiz kılma işlemi en yüksek önceliğe sahip. Bu ayarlandığında TÜMÜNÜ geçersiz kılar diğer operatör adı dizeleridir.

injectSmsPdu yöntem çağrısı ne işe yarar?

Y: Bu yöntem bulutta SMS yedeklemesini/geri yüklemeyi kolaylaştırır. İlgili içeriği oluşturmak için kullanılan injectSmsPdu çağrısı, geri yükleme işlevini etkinleştirir.

SMS filtrelemesi için onFilterSms araması, SMS UDH bağlantı noktası filtrelensin mi? Yoksa operatör uygulamalarının gelen TÜM SMS'lere erişimi var mı?

Y: Operatörler tüm SMS verilerine erişebilir.

DeviceAppID-REF-DO sürümünün desteğinin genişletilmesi 32 bayt görünüyor (yalnızca 0 veya 20 bayta izin verir), mevcut GP spesifikasyonuyla uyumsuzdur. Bu değişikliği siz mi yapıyorsunuz? SHA-1, çarpışmaktan kaçınmasını nasıl sağlarsınız? Bu değişikliği GP'ye daha önce önerdiniz mi, çünkü bu geriye dönük olarak uyumsuz olması gerekir?

A: Bu uzantı, geleceğe hazır bir güvenlik sağlamak için SHA-256'yı kullanıma sunar. SHA-1'e ek olarak DeviceAppID-REF-DO için tek seçenektir. SHA-256 kullanmanızı önemle tavsiye ederiz.

DeviceAppID 0 (boş) ise kuralı belirli bir kural kapsamında olmayan tüm cihaz uygulamaları var mı?

Y: Operatör API'leri için DeviceAppID-REF-DO alanının doldurulması gerekir. Boş olması test amaçlıdır ve operasyonel olarak önerilmez dağıtımları. ziyaret edin.

Teknik özelliklerinize göre, PKG-REF-DO yalnızca tarafından kullanılıyor kendisi DeviceAppID-REF-DO olmadan kabul edilmemelidir. Ama Yine de spesifikasyon Tablo 6-4'te "genişletilmiş" REF-DO tanımı. Bu bilinçli olarak mı gönderildi? Kod nasıl REF-DO içinde yalnızca PKG-REF-DO kullanıldığında nasıl davranır?

A: PKG-REF-DO değerini tek bir değer olarak kullanma seçeneği REF-DO klasöründeki öğe son sürümde kaldırıldı. PKG-REF-DO yalnızca şununla birlikte kullanılmalıdır: DeviceAppID-REF-DO.

Operatöre dayalı tüm izinlere erişim verebileceğimizi varsayıyoruz. ve daha hassas kontrol olanağı sunuyor. Öyleyse bit ve tablodaki ve gerçek izinleri nasıl olacak? Sınıf başına bir izin mi? Her biri için bir izin yöntemini nasıl kullanır? 64 ayrı izin uzun vadede yeterli midir? ziyaret edin.

Y: Bu alan ilerisi için ayrılmıştır ve önerilerinizi bekliyoruz.

Android için DeviceAppID öğesini daha ayrıntılı olarak tanımlayabilir misiniz? merak ediyor musunuz? Bu, Yayıncının SHA-1 (20 bayt) karma değeridir o uygulamayı imzalamak için kullandığımızdan, uygulama adının var mı? (Kural, belirli bir başlıktan aynı Yayıncı sertifikasıyla imzalanmış tüm uygulamalar için geçerlidir.)

Y: Sertifikaların depolanması DeviceAppID tarafından desteklenen tekrar deneyin. Çevik yaklaşımın bariyerini azaltmak için spesifikasyon değişikliklerini en aza en iyi uygulamaları görelim. Ayrıntılar için UICC ile ilgili kurallar başlıklı makaleyi inceleyin.