Fonctionnalités de sécurité et de confidentialité iOS

Cet article traite de l’utilisation de la sécurité et de la confidentialité dans iOS et de leur impact sur une application Xamarin.iOS.

Apple a apporté plusieurs améliorations à la sécurité et à la confidentialité dans iOS 10 (et plus) qui aideront le développeur à améliorer la sécurité de ses applications et à garantir la confidentialité de l’utilisateur final. Cet article traite de l’implémentation de ces fonctionnalités dans une application Xamarin.iOS.

Améliorations générales

Les modifications générales suivantes ont été apportées à la sécurité et à la confidentialité dans iOS 10 :

  • L’API COMMON Data Security Architecture (CDSA) a été déconseillée et doit être remplacée par l’API SecKey pour générer des clés asymétriques.
  • La nouvelle NSAllowsArbitraryLoadsInWebContent clé peut être ajoutée au fichier Info.plist d’une application et permettra aux pages web de se charger correctement alors que la protection ATS (Apple Transport Security) est toujours activée pour le reste de l’application. Pour plus d’informations, consultez notre documentation App Transport Security .
  • Étant donné que le nouveau Presse-papiers dans iOS 10 et macOS Sierra permet à l’utilisateur de copier et coller entre les appareils, l’API a été développée pour permettre à un Presse-papiers d’être limité à un appareil spécifique et d’être horodaté d’être effacé automatiquement à un point donné. En outre, les collages nommés ne sont plus persistants et doivent être remplacés par les conteneurs de collage partagés.
  • Pour toutes les connexions SSL/TLS, le chiffrement symétrique RC4 est désormais désactivé par défaut. En outre, l’API de transport sécurisé ne prend plus en charge SSLv3 et il est recommandé que le développeur cesse d’utiliser le chiffrement SHA-1 et 3DES dès que possible.

Accès aux données utilisateur privées

Les applications s’exécutant sur iOS 10 (ou version ultérieure) doivent déclarer statiquement leur intention d’accéder à des fonctionnalités spécifiques ou des informations utilisateur en entrant une ou plusieurs clés de confidentialité dans leurs fichiers Info.plist qui expliquent à l’utilisateur pourquoi l’application souhaite accéder.

Important

Les applications qui ne fournissent pas les clés requises sont arrêtées en mode silencieux par le système lorsqu’elles tentent d’accéder à l’une des fonctionnalités restreintes ou aux informations utilisateur, sans erreur ! Si une application démarre de façon inattendue sur iOS 10, vérifiez que toutes les informations requises ont été spécifiées.

Les clés associées à la confidentialité suivantes sont disponibles :

  • Confidentialité - Apple Musique description de l’utilisation (NSAppleMusicUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite accéder à la bibliothèque multimédia de l’utilisateur.
  • Confidentialité - Description de l’utilisation des périphériques Bluetooth (NSBluetoothPeripheralUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite accéder au Bluetooth sur l’appareil de l’utilisateur.
  • Confidentialité - Description de l’utilisation des calendriers (NSCalendarsUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite accéder au calendrier de l’utilisateur.
  • Confidentialité - Description de l’utilisation de l’appareil photo (NSCameraUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite accéder à l’appareil photo de l’appareil.
  • Confidentialité - Description de l’utilisation des contacts (NSContactsUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite accéder aux contacts de l’utilisateur.
  • Confidentialité - Description de l’utilisation du partage d’intégrité (NSHealthShareUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite accéder aux données d’intégrité de l’utilisateur. Pour plus d’informations, consultez la référence de la classe HKHealthStore d’Apple.
  • Confidentialité - Description de l’utilisation des mises à jour d’intégrité (NSHealthUpdateUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite modifier les données d’intégrité de l’utilisateur. Pour plus d’informations, consultez la référence de la classe HKHealthStore d’Apple.
  • Confidentialité - Description de l’utilisation de HomeKit (NSHomeKitUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite accéder aux données de configuration HomeKit de l’utilisateur.
  • Confidentialité - Localisation Always Usage Description (NSLocationAlwaysUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite toujours avoir accès à l’emplacement de l’utilisateur.
  • [Déconseillé] Confidentialité - Description de l’utilisation de l’emplacement (NSLocationUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite accéder à l’emplacement de l’utilisateur. REMARQUE : cette clé a été déconseillée dans iOS 8 (et versions ultérieures). Utilisez plutôt NSLocationAlwaysUsageDescription ou NSLocationWhenInUseUsageDescription.
  • Confidentialité - Emplacement lors de l’utilisation de la description de l’utilisation (NSLocationWhenInUseUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite accéder à l’emplacement de l’utilisateur pendant son exécution.
  • [Déconseillé] Confidentialité - Description de l’utilisation de la bibliothèque multimédia - Permet au développeur de décrire pourquoi l’application souhaite accéder à la bibliothèque multimédia de l’utilisateur. REMARQUE : cette clé a été déconseillée dans iOS 8 (et versions ultérieures). Utilisez NSAppleMusicUsageDescription à la place.
  • Confidentialité - Description de l’utilisation du microphone (NSMicrophoneUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite accéder au microphone des appareils.
  • Confidentialité - Description de l’utilisation des mouvements (NSMotionUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite accéder à l’accéléromètre de l’appareil.
  • Confidentialité - Description de l’utilisation de la bibliothèque de photos (NSPhotoLibraryUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite accéder à la bibliothèque de photos de l’utilisateur.
  • Confidentialité - Description de l’utilisation des rappels (NSRemindersUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite accéder aux rappels de l’utilisateur.
  • Confidentialité - Description de l’utilisation de Siri (NSSiriUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite envoyer des données utilisateur à Siri.
  • Confidentialité - Description de l’utilisation de la reconnaissance vocale (NSSpeechRecognitionUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite envoyer des données utilisateur aux serveurs de reconnaissance vocale d’Apple.
  • Confidentialité - Description de l’utilisation du fournisseur tv (NSVideoSubscriberAccountUsageDescription) : permet au développeur de décrire pourquoi l’application souhaite accéder au compte du fournisseur tv de l’utilisateur.

Pour plus d’informations sur l’utilisation des clés Info.plist, consultez la référence de la clé de liste des propriétés d’information d’Apple.

Définition des clés de confidentialité

Prenez l’exemple suivant d’accéder à HomeKit sur iOS 10 (et plus), le développeur devra ajouter la NSHomeKitUsageDescription clé au fichier Info.plist de l’application et fournir une chaîne indiquant pourquoi l’application souhaite accéder à la base de données HomeKit de l’utilisateur. Cette chaîne sera présentée à l’utilisateur la première fois qu’il exécute l’application :

Exemple d’alerte NSHomeKitUsageDescription

Xamarin.iOS pour Visual Studio ne prend actuellement pas en charge la modification des clés de confidentialité Info.plist à partir de l’éditeur de manifeste iOS par défaut. Au lieu de cela, vous devez utiliser l’éditeur PList générique, procédez comme suit :

  1. Cliquez avec le bouton droit sur le fichier Info.plist dans le Explorateur de solutions, puis sélectionnez Ouvrir avec....

  2. Sélectionnez l’éditeur PList générique dans la liste des programmes pour ouvrir le fichier, puis cliquez sur OK.

    Sélectionner l’éditeur PList générique

  3. Cliquez sur le + bouton de la dernière ligne de l’éditeur pour ajouter une nouvelle entrée à la liste. Cette propriété est appelée « Propriété personnalisée », avec le type défini String sur et une valeur vide.

  4. Cliquez sur le nom de la propriété et une liste déroulante s’affiche.

  5. Dans la liste déroulante, sélectionnez une clé de confidentialité (par exemple, Confidentialité - HomeKit Usage Description) :

    Sélectionner une clé de confidentialité

  6. Entrez une description dans la colonne Valeur pour la raison pour laquelle l’application souhaite accéder à la fonctionnalité donnée ou aux informations utilisateur :

    Entrer une description

  7. Enregistrez les modifications du fichier.

Important

Dans l’exemple ci-dessus, l’échec de la définition de la NSHomeKitUsageDescription clé dans le fichier Info.plist entraîne l’échec silencieux de l’application (fermé par le système au moment de l’exécution) sans erreur lors de l’exécution dans iOS 10 (ou version ultérieure).

Résumé

Cet article a abordé les modifications de sécurité et de confidentialité apportées par Apple dans iOS 10 et leur impact sur une application Xamarin.iOS.