2016-11-14 1 views
2

Je veux créer une bibliothèque statique qui effectuera certaines opérations sensibles à la sécurité. Il est important pour moi que les autres applications qui utilisent ma bibliothèque statique ne puissent pas accéder aux données de la bibliothèque statique.Bac à sable séparé pour la bibliothèque statique ios cacao touch

En fait, il est important que les données que je sauvegarde sur le disque et aussi dans la mémoire au moment de l'exécution ne soient pas accessibles via l'application hôte. Donc, mes questions sont que comment puis-je fournir un sandbox séparé pour la bibliothèque statique afin que l'application hôte ne peut pas accéder à ces informations.

Je sais que certaines bibliothèques sensibles à la sécurité ont des fichiers .a et je me demande comment elles assurent la sécurité de leur application. Voici un lien vers paypal iOS SDK:

https://github.com/paypal/PayPal-iOS-SDK

Mise à jour

Selon lien ci-dessous de développeur, nous pouvons utiliser la touche-boxing sable au fichier droit pour permettre la boxe-sable. Il est dit que les applications iOS sont en sandbox par défaut. Mais qu'en est-il des bibliothèques statiques iOS? Soit ils sont en boîte de sable aussi? Si non, comment pouvons-nous le bac à sable?

https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AboutEntitlements.html

Mise à jour

Dans OS Android lorsque vous développez une bibliothèque de projet, vous pouvez définir une balise dans le manifest de ce projet pour forcer Android OS pour exécuter les codes de la bibliothèque dans le processus séparé (D'ailleurs, le processus hôte ne peut pas accéder à la mémoire d'exécution du processus de bibliothèque). Donc je pense que nous devrions avoir une option équivalente pour ce comportement sur iOS aussi.

Mise à jour

S'il vous plaît noter que nous voulons protéger les données agains l'application hôte, même lors de l'exécution. L'un des gros problèmes concerne l'accès aux données des éléments de l'interface via la réflexion. supposons que quelqu'un entre ses données de cartes dans Paypal SDK et l'hôte peut accéder aux données saisies par réflexion. Ensuite, les développeurs de l'application hôte peuvent accéder à toutes les informations de la carte et à ses données d'authentification et les utiliser pour leurs usages.

+0

L'Enclave de sécurité iOS serait-elle utile? [article] (https://blog.trailofbits.com/2016/06/28/start-using-the-secure-enclave-crypto-api/), [guide] (https://www.apple.com/ business/docs/iOS_Security_Guide.pdf) –

+0

Je ne comprends pas votre commentaire, pouvez-vous préciser plus? –

+0

L'Enclave de sécurité iOS peut générer une paire de clés sécurisée pour vous, dont la partie privée ne peut jamais quitter l'Enclave de sécurité, mais comme je pense à travers cela, il n'est pas clair que cela aiderait votre situation. Vous pouvez envelopper votre bibliothèque dans une application distincte, qui serait bien sûr en bac à sable, et utiliser un [schéma d'URL personnalisé] (https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter- AppCommunication/Inter-AppCommunication.html # // apple_ref/doc/uid/TP40007072-CH6-SW1) pour la communication entre votre application et l'application de la bibliothèque. –

Répondre

1

Les bibliothèques et les frameworks appartiennent à l'application d'hébergement. En particulier, le code d'une lib statique est inclus dans le binaire de l'application, et il n'y a pas de séparation. Vous ne pouvez pas créer un sandbox séparé pour une lib, aussi.

Votre bibliothèque statique peut protéger ses données en chiffrant ses fichiers sur disque avec une clé symétrique. Mais un attaquant peut extraire la clé de votre lib et peut déchiffrer les données.

+0

Alors, comment paypal et d'autres sociétés financières qui partagent un fichier .a à des développeurs tiers fournissent la sécurité requise? –

+0

Je ne sais pas. Je pense qu'ils utilisent des méthodes éprouvées (par exemple TSL/HTTPS) pour la communication avec leurs serveurs et mettent des données privées dans le trousseau. Je sais qu'ils n'ont pas de bac à sable. Lier une bibliothèque statique revient à ajouter des fichiers .o à l'application. (Note: Vous créez des bibliothèques statiques avec un outil appelé 'ar' (1), forme abrégée pour _archive_). – clemens

+0

Veuillez noter que nous voulons protéger les données contre l'application hôte. Si nous enregistrons les données dans le trousseau, l'application hôte peut également y accéder - bien sûr, le problème principal n'est pas ici, car nous pouvons les chiffrer via une clé sécurisée du serveur. Le principal problème est lorsque l'hôte peut accéder à quel utilisateur entrer dans la troisième interface de la bibliothèque. supposons que quelqu'un entre ses données de cartes dans Paypal SDK et l'hôte peut accéder aux données saisies par réflexion. –