Funkcje zabezpieczeń i prywatności w systemie iOS

W tym artykule opisano pracę z zabezpieczeniami i prywatnością w systemie iOS oraz ich wpływ na aplikację platformy Xamarin.iOS.

Firma Apple wprowadziła kilka ulepszeń zarówno w zakresie zabezpieczeń, jak i prywatności w systemie iOS 10 (i nowszych), które pomogą deweloperowi poprawić bezpieczeństwo swoich aplikacji i zapewnić prywatność użytkownika końcowego. W tym artykule omówiono implementację tych funkcji w aplikacji platformy Xamarin.iOS.

Ogólne ulepszenia

W systemie iOS 10 wprowadzono następujące ogólne zmiany dotyczące zabezpieczeń i prywatności:

  • Interfejs API Common Data Security Architecture (CDSA) został przestarzały i powinien zostać zastąpiony interfejsem API SecKey w celu wygenerowania kluczy asymetrycznych.
  • Nowy NSAllowsArbitraryLoadsInWebContent klucz można dodać do pliku Info.plist aplikacji i zezwolić na poprawne ładowanie stron internetowych, podczas gdy ochrona usługi Apple Transport Security (ATS) jest nadal włączona w pozostałej części aplikacji. Aby uzyskać więcej informacji, zobacz dokumentację usługi App Transport Security .
  • Ponieważ nowy Schowek w systemach iOS 10 i macOS Sierra umożliwia użytkownikowi kopiowanie i wklejanie między urządzeniami, interfejs API został rozszerzony, aby umożliwić schowek ograniczony do określonego urządzenia i być znacznikiem czasu wyczyszczone automatycznie w danym momencie. Ponadto nazwane tablice wklejania nie są już utrwalane i powinny zostać zastąpione udostępnionymi kontenerami tablicy wklejanej.
  • W przypadku wszystkich połączeń SSL/TLS szyfrowanie symetryczne RC4 jest teraz domyślnie wyłączone. Ponadto interfejs API bezpiecznego transportu nie obsługuje już protokołu SSLv3 i zaleca się, aby deweloper przestał używać kryptografii SHA-1 i 3DES tak szybko, jak to możliwe.

Uzyskiwanie dostępu do danych użytkownika prywatnego

Aplikacje działające w systemie iOS 10 (lub nowszym) muszą statycznie zadeklarować zamiar uzyskania dostępu do określonych funkcji lub informacji o użytkowniku, wprowadzając co najmniej jeden klucz prywatności w plikach Info.plist , które wyjaśniają użytkownikowi, dlaczego aplikacja chce uzyskać dostęp.

Ważne

Aplikacje, które nie zapewniają wymaganych kluczy, zostaną w trybie dyskretnym zakończone przez system podczas próby uzyskania dostępu do jednej z ograniczonych funkcji lub informacji o użytkowniku bez błędu! Jeśli aplikacja nieoczekiwanie kończy się niepowodzeniem w systemie iOS 10, upewnij się, że określono wszystkie wymagane pliki Info.plist .

Dostępne są następujące klucze związane z prywatnością:

  • Prywatność — Opis użycia usługi Apple Music (NSAppleMusicUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do biblioteki multimediów użytkownika.
  • Prywatność — Opis użycia urządzeń peryferyjnych Bluetooth (NSBluetoothPeripheralUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do funkcji Bluetooth na urządzeniu użytkownika.
  • Prywatność — opis użycia kalendarzy (NSCalendarsUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do kalendarza użytkownika.
  • Prywatność — Aparat opis użycia (NSCameraUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do aparatu urządzenia.
  • Prywatność — opis użycia kontaktów (NSContactsUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do kontaktów użytkownika.
  • Prywatność — opis użycia udziału kondycji (NSHealthShareUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do danych dotyczących kondycji użytkownika. Aby uzyskać więcej informacji, zobacz Dokumentację klasy HKHealthStore firmy Apple.
  • Prywatność — opis użycia aktualizacji kondycji (NSHealthUpdateUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce edytować dane dotyczące kondycji użytkownika. Aby uzyskać więcej informacji, zobacz Dokumentację klasy HKHealthStore firmy Apple.
  • Prywatność — Opis użycia zestawu HomeKit (NSHomeKitUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do danych konfiguracji zestawu HomeKit użytkownika.
  • Prywatność — zawsze opis użycia lokalizacji (NSLocationAlwaysUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce zawsze mieć dostęp do lokalizacji użytkownika.
  • [Przestarzałe] Prywatność — opis użycia lokalizacji (NSLocationUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do lokalizacji użytkownika. UWAGA: ten klucz został przestarzały w systemie iOS 8 (i nowszym). Użyj polecenia NSLocationAlwaysUsageDescription lub NSLocationWhenInUseUsageDescription zamiast tego.
  • Prywatność — lokalizacja w przypadku użycia opisu użycia (NSLocationWhenInUseUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do lokalizacji użytkownika podczas jej działania.
  • [Przestarzałe] Prywatność — opis użycia biblioteki multimediów — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do biblioteki multimediów użytkownika. UWAGA: ten klucz został przestarzały w systemie iOS 8 (i nowszym). Użycie w zamian parametru NSAppleMusicUsageDescription.
  • Prywatność — opis użycia mikrofonu (NSMicrophoneUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do mikrofonu urządzeń.
  • Prywatność — opis użycia ruchu (NSMotionUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do akcelerometru urządzenia.
  • Prywatność — opis użycia biblioteki zdjęć (NSPhotoLibraryUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do biblioteki zdjęć użytkownika.
  • Prywatność — opis użycia przypomnień (NSRemindersUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do przypomnień użytkownika.
  • Prywatność — Opis użycia Siri (NSSiriUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce wysyłać dane użytkownika do Siri.
  • Prywatność — opis użycia rozpoznawania mowy (NSSpeechRecognitionUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce wysyłać dane użytkownika na serwery rozpoznawania mowy firmy Apple.
  • Prywatność — opis użycia dostawcy telewizji (NSVideoSubscriberAccountUsageDescription) — umożliwia deweloperowi opisanie, dlaczego aplikacja chce uzyskać dostęp do konta dostawcy telewizji użytkownika.

Aby uzyskać więcej informacji na temat pracy z kluczami Info.plist, zobacz Dokumentacja klucza listy właściwości informacji firmy Apple.

Ustawianie kluczy prywatności

Zapoznaj się z poniższym przykładem uzyskiwania dostępu do zestawu HomeKit w systemie iOS 10 (i nowszym), deweloper musi dodać NSHomeKitUsageDescription klucz do pliku Info.plist aplikacji i podać ciąg deklarujący, dlaczego aplikacja chce uzyskać dostęp do bazy danych HomeKit użytkownika. Ten ciąg zostanie wyświetlony użytkownikowi przy pierwszym uruchomieniu aplikacji:

An example NSHomeKitUsageDescription alert

Platforma Xamarin.iOS dla programu Visual Studio obecnie nie obsługuje edytowania kluczy prywatności Info.plist z poziomu domyślnego edytora manifestu systemu iOS. Zamiast tego należy użyć ogólnego edytora PList, więc wykonaj następujące czynności:

  1. Kliknij prawym przyciskiem myszy plik Info.plist w Eksplorator rozwiązań i wybierz polecenie Otwórz za pomocą....

  2. Wybierz ogólny edytor PList z listy programów, aby otworzyć plik, a następnie kliknij przycisk OK.

    Select the Generic PList Editor

  3. Kliknij przycisk w + ostatnim wierszu w edytorze, aby dodać nowy wpis do listy. Będzie to nazywane "Właściwością niestandardową" z typem ustawionym na String i pustą wartością.

  4. Kliknij nazwę właściwości, a zostanie wyświetlona lista rozwijana.

  5. Z listy rozwijanej wybierz klucz prywatności (na przykład Prywatność — opis użycia zestawu homekit):

    Select a Privacy key

  6. Wprowadź opis w kolumnie Wartość, aby dowiedzieć się, dlaczego aplikacja chce uzyskać dostęp do danej funkcji lub informacji o użytkowniku:

    Enter a description

  7. Zapisz zmiany w pliku.

Ważne

W powyższym przykładzie niepowodzenie ustawienia NSHomeKitUsageDescription klucza w pliku Info.plist spowoduje, że aplikacja w trybie dyskretnym kończy się niepowodzeniem (zamknięciem przez system w czasie wykonywania) bez błędu podczas uruchamiania w systemie iOS 10 (lub nowszym).

Podsumowanie

W tym artykule opisano zmiany w zabezpieczeniach i prywatności wprowadzone przez firmę Apple w systemie iOS 10 oraz sposób ich wpływu na aplikację platformy Xamarin.iOS.