UICC operatör ayrıcalıkları

Android 5.1, evrensel entegre devre kartı (UICC) uygulamalarının sahipleriyle alakalı API'lere özel ayrıcalıklar verme mekanizması sunmuştur. İ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ği UICC operatör ayrıcalığı kuralları için diğer depolama kaynaklarını destekleyecek şekilde genişletti ve API'leri kullanabilen operatörlerin sayısını önemli ölçüde artırdı. 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 kontrole sahiptir. Bu nedenle bu mekanizma, cihazlarda özel ayrıcalıkları korurken ve uygulamaları cihaz başına platform sertifikasıyla imzalama veya sistem uygulaması olarak önceden yükleme gerekmeden, genel uygulama dağıtım kanallarında (Google Play gibi) barındırılan mobil ağ operatöründen (MNO) uygulamaları yönetmenin güvenli ve esnek bir yolunu sunar.

UICC'deki kurallar

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

Veri hiyerarşisi

UICC kuralları aşağıdaki veri hiyerarşisini kullanır (parantez içindeki iki karakterli harf ve sayı kombinasyonu, nesne etiketidir). Her kural REF-AR-DO (E2) şeklindedir ve REF-DO ile AR-DO'ın bir birleşiminden oluşur:

  • 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), sertifikanın SHA-1 (20 bayt) veya SHA-256 (32 bayt) imzasını saklar.
    • 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, önce erişim kuralı uygulaması (ARA) AID A00000015141434C00'yi seçmeye çalışır. UICC'de AID'yi bulamazsa PKCS15 AID'yi A000000063504B43532D3135 seçerek ARF'ye geri döner. 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. Bu nedenle, diğer kullanım alanlarına yönelik kurallar birlikte var 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, sertifika karmasını 61:ED:37:7E:85:D3:86:A8:DF:EE:6B:86:4B:D8:5B:0B:FA:A5:AF:81 içeren ACCF adresidir. Uygulamalar imzalayan kullanıcılara operatör ayrıcalıkları verildi.

Etkin API'ler

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

Telefon Yöneticisi

TelephonyCallback

TelephonyCallback, kayıtlı durumlar değiştiğinde arayan uygulamayı bilgilendirmek için geri çağırma yöntemi içeren arayüzlere sahiptir:

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 Operatör Yapılandırması başlıklı makaleyi inceleyin.

BugreportManager

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

NetworkStatsManager

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 izniyle beyan edin ve #SERVICE_INTERFACE işlemini içeren bir intent filtresi ekleyin. Kullanabileceğiniz yöntemler şunlardır:

Operatör Hizmeti

Operatöre özgü işlevleri sisteme sunan hizmet. Bu sınıfı genişletmek için hizmeti uygulama manifest dosyasında android.Manifest.permission#BIND_CARRIER_SERVICES izniyle beyan edin ve CARRIER_SERVICE_INTERFACE işlemini 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, operatör hizmeti işleminin özel bir uygulama bekleme havuzunda çalışmasına izin vermek için CarrierService'ü özel işaretlerle bağlar. Bu, operatör hizmet uygulamasının uygulama boşta kalma kısıtlamasından muaf tutulmasını sağlar ve cihaz belleği düşük olduğunda uygulamanın etkin kalma olasılığını artırır. Ancak operatör hizmeti uygulaması herhangi bir nedenle kilitlenirse uygulama yeniden başlatılıp bağlama yeniden kurulana kadar yukarıdaki tüm ayrıcalıkları kaybeder. Bu nedenle, kargo hizmeti uygulamasını kararlı tutmak son derece önemlidir.

CarrierService'teki yöntemler şunlardır:

  • Operatöre özgü yapılandırmaları geçersiz kılmak ve ayarlamak için: onLoadConfig
  • Operatör uygulaması tarafından yapılacak bir operatör ağı değişikliği hakkında sistemi bilgilendirmek için: notifyCarrierNetworkChange

Telefon hizmeti sağlayıcı

Telefon veritabanında değişiklik (ekle, sil, güncelle, sorgu) yapılmasına olanak tanıyan içerik sağlayıcı API'leri. Değer alanları Telephony.Carriers adresinde tanımlanır. Daha fazla bilgi için Telephony sınıf referansına bakın.

WifiNetworkSuggestion

WifiNetworkSuggestion nesnesi oluştururken abonelik kimliği veya abonelik grubu ayarlamak için aşağıdaki yöntemleri kullanın:

Android platformu

Platform, algılanan bir UICC'de UICC'nin bir parçası olarak operatör ayrıcalık kurallarını içeren dahili UICC nesneleri oluşturur. 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, iletebilir. UICC kaldırılırsa kurallar, UICC nesnesi ile birlikte yok edilir.

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, bu bölümde açıklandığı şekilde doğru ARF'ye sahip bir geliştirici UICC hazırlamasını isteyin ve testleri çalıştırmak için bu UICC'yi kullanın. UICC'nin CTS testlerini geçmesi için etkin hücresel hizmet gerekmez.

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'den itibaren CtsCarrierApiTestCases.apk, cts-uicc-2021-testkey tarafından imzalanır. Karma değeri 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'dir.

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ştirme

  1. Ekle: Erişim kuralı uygulama ana dosyasına (ARA-M) veya ARF'ye CTS operatör ayrıcalıkları. 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.
  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. Kayıt1: 566F696365204D61696CFFFFFFFF0691515555555FF…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: Kayıt1: 01010101
        1. EF_MWIS (6FCA), kayıt boyutu: 5, kayıt numarası: 1
      • İçerik: 0000000000
  3. Değiştirme: USIM hizmet tablosu: 47 ve 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ştirme: Bu tanımı içeren ilgili EF'lerde Android CTS taşıyıcı adı dizesini kullanın:
    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.

Test çalıştırma

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ının olması sorun değildir. Platform bunları otomatik olarak filtreler.

UICC, üzerindeki sertifikalara dayanan bir uygulama için kaldırıldığında ne olur?

C: UICC kaldırıldığında UICC ile ilişkili kurallar yok edildiğinden uygulama ayrıcalıklarını kaybeder.

UICC'deki sertifika sayısıyla ilgili bir sınır var mı?

C: Platform, sertifika sayısını sınırlamaz. Ancak kontrol doğrusal olduğu için çok fazla kural, kontrolde gecikmeye neden olabilir.

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ırlandırıyoruz.

Bu yöntemi kullanması yasaklanan bazı API'ler var mı? Varsa bunları nasıl uyguluyorsunuz? (yani, bu yöntemle hangi API'lerin desteklendiğini doğrulamak için testleriniz var mı?)

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.

Bu özellik, çok SIM kartlı cihazlarda nasıl çalışır?

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 kurallar birlikte bulunur ve SEEK veya UiccCarrierPrivileges tarafından filtrelenir.

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. Mevcut API'lerin minimum düzeyde olduğuna inanıyoruz ve gelecekte daha ayrıntılı kontrol için bit maskesini kullanmayı planlıyoruz.

setOperatorBrandOverride, operatör ad dizelerinin diğer TÜM biçimlerini geçersiz kılar 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. injectSmsPdu çağrısı, geri yükleme işlevini etkinleştirir.

SMS filtreleme için onFilterSms çağrısı, SMS UDH bağlantı noktası filtrelemesine dayalı mı? Yoksa operatör uygulamalarının gelen TÜM SMS'lere erişimi var mı?

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

DeviceAppID-REF-DO sürümünün destek olarak 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? Mevcut ARA-M/ARF ile geriye dönük uyumlu olmayabileceği için bu değişikliği GP'ye önerdiniz mi?

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ına mı uyguluyorsunuz?

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ı.

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? REF-DO içinde yalnızca PKG-REF-DO kullanıldığında kod 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, iki 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?

C: Bu özellik gelecek için ayrılmıştır. Önerilerinizi bekliyoruz.

Android için DeviceAppID'u daha ayrıntılı olarak tanımlayabilir misiniz? 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 aynı yayıncı sertifikasıyla imzalanan tüm uygulamalar için geçerli olduğundan bu ad birçok okuyucu için kafa karıştırıcı olabilir.)

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.