Que sont les fichiers d’application dans iOS comme APK dans Android ?


Les fichiers de paquetage d'applications dans iOS sont appelés fichiers .ipa. IPA est l'abréviation de "iOS App Store Package". Chaque fichier .ipa comprend un binaire pour l'architecture ARM et ne peut être installé que sur un appareil iOS.

Un IPA a une structure intégrée pour qu'iTunes et AppStore le reconnaissent, L'exemple ci-dessous montre la structure d'un IPA:


/Payload/
/Payload/Application.app
/iTunesArtwork
/iTunesArtwork@2x
/iTunesMetadata.plist
/WatchKitSupport/WK

Le dossier Payload est ce qui contient toutes les données de l'app. Le fichier iTunes Artwork est une image PNG de 512×512 pixels, contenant l'icône de l'app'tement à afficher dans iTunes et l'app App Store sur l'iPad. Le fichier iTunesMetadata.plist contient divers éléments d'information, allant du nom et de l'ID du développeur's (par exemple, Google), de l'identifiant du paquet, des informations sur le droit d'auteur, du genre, du nom de l'app, de la date de sortie, de la date d'achat, etc.

Contrairement aux fichiers .apk, les fichiers .ipa ne peuvent pas être simplement installés sur un appareil iOS. Il utilise la technologie de gestion des droits numériques (DRM) Fairplay d'apple's, pour empêcher l'installation d'apps iOS sur des appareils non autorisés.

La DRM Fairplay fonctionne davantage comme le SSL. Il fonctionne avec des clés publiques et privées.
Par exemple pour une communication sécurisée avec un serveur, j'utiliserais la clé publique des serveurs pour chiffrer les données à envoyer au serveur. Le serveur utiliserait alors sa'clé privée pour les décrypter.

Lors de la création d'un compte Apple, une paire de clés publique/privée est générée pour votre nom d'utilisateur. Il vous donne ensuite votre clé privée et il conserve votre clé publique (That's why when you first buy or when you restore your iDevice you must activate it with your iTunes account). Lors de l'activation, iTunes envoie un identifiant de machine unique aux serveurs d'Apple. Ils enregistrent votre iDevice dans leurs bases de données (ceci est fait pour limiter le nombre d'appareils autorisés) et transfèrent ensuite votre clé privée à votre iDevice. En gros, lorsque vous achetez une application (gratuite ou payante), Apple génère un en-tête de 4196 octets qui est crypté avec votre clé publique. Seule votre clé privée peut décrypter l'en-tête intégré à l'app.

Donc par exemple, si je copiais une IPA générée pour vous, et que je la mettais sur mon iDevice (ceci en supposant que vous puissiez l'obtenir là, iTunes refuserait de toute façon de la synchroniser), et qu'ensuite j'essayais de l'exécuter, elle se planterait simplement parce que ma clé privée ne serait'pas capable de décrypter l'en-tête. Il convient également de noter que le fichier IPA n'a pas d'en-tête, si vous jetez un coup d'œil au contenu d'un IPA, vous vous rendrez compte qu'il contient un fichier sans extension, prenez l'application Facebook par exemple, elle aura un fichier nommé 'Facebook&apos ;. C'est le binaire de l'app's, et c'est le fichier qui contient l'en-tête chiffré.

Lorsqu'un utilisateur désautorise un ordinateur, iTunes demandera aux serveurs d'Apple de supprimer l'identifiant unique de la machine de leur base de données, et en même temps, il supprimera toutes les clés de l'utilisateur du dépôt de clés chiffrées de l'appareil désautorisé's.