2012-07-13 1 views
0

Je développe une application assez simple, dont l'essentiel est le contenu, qui consiste en de nombreuses informations rassemblées depuis de nombreuses années. Je veux le formater d'une manière agréable à montrer à l'utilisateur. Lorsque l'utilisateur télécharge l'application et la charge d'abord, il va sur le serveur pour récupérer toute la base de données dans le téléphone. Ensuite, il peut voir les éléments importants, et trier/filtrer à travers eux. Pour éviter que quelqu'un prenne ma base de données, je vais utiliser une connexion SSL. Je sais que s'ils le souhaitent, ils peuvent utiliser l'application pour voir chaque élément de contenu un par un, mais il n'y a rien à faire à ce sujet.Cryptage iOS pour utiliser les données Web en toute sécurité

La chose est: J'ai les données dans le nuage (le mien). Je peux le télécharger en toute sécurité en utilisant une connexion SSL (d'autres idées pour sécuriser le transfert?). Quand je l'aurai ici, je l'enregistrerai dans un db (Core Data est le choix évident).

Comment puis-je sécuriser les données dans la base de données interne, donc si l'application est piratée, quelqu'un ne peut pas accéder à la base de données? Je le mettrais dans le porte-clés, mais c'est un db plutôt grand pour ça et ce n'est pas important pour moi. (Ce n'est pas une information sensée, juste une info que je ne veux pas que quiconque obtienne massivement.)

L'autre chose que je peux faire est de ne jamais stocker quoi que ce soit dans l'appareil et que l'utilisateur fasse toujours des appels vers le cloud, mais je pense que cela prendrait trop de temps. Et donnez-lui la possibilité d'enregistrer ses choix favoris sur l'appareil. Mais cela prend trop de temps et il y a le problème de la synchronisation.

C'est une référence que je levais les yeux sur un problème similaire, sans la partie que je demande répondu: How to encrypt iPhone upload and download of info?

Répondre

1

En fait, le seul choix est d'utiliser SqlCipher. Bien sûr, vous devez le porter sur votre iPhone (sauf si quelqu'un d'autre a posté un port depuis la dernière fois que j'ai regardé). Mais ce n'est pas une tâche insurmontable.

Bien sûr, même avec SqlCipher vous avez le défi de stocker la clé en quelque sorte. Il n'y a pas de moyen vraiment sûr de le faire - vous devez utiliser une forme de «sécurité par l'obscurité».

+0

je pouvais stocker la clé dans le trousseau, qui est censé être la partie la plus sûre sur un iPhone (il a le cryptage matériel même) – Daniel

+0

SqlCipher semble assez facile à utiliser! http://sqlcipher.net/ios-tutorial/ Et vous pouvez l'acheter prêt pour iOS maintenant pour 150 dollars. (Je viens juste de rencontrer la compagnie, je la commente simplement parce qu'elle est pertinente pour la réponse et qu'elle pourrait être utile à quelqu'un dans le futur.) – Daniel

1

Pourquoi ne pas simplement avoir des informations de clé privée stockées dans le code, et quand vous voulez télécharger la base de données, demandez-lui simplement d'interroger le serveur avec la clé? De cette façon, vous n'avez pas besoin de vous inquiéter de SSL ou du cryptage dans la partie téléchargement. En ce qui concerne le stockage, je suis d'accord avec Hot Licks, SqlCipher semble être la meilleure et la seule option. Cependant, attention au cryptage, car vous devrez le déclarer à Apple et obtenir toutes sortes de permis d'exportation (http://stackoverflow.com/questions/2135081/does-my-application-contain-encryption).

Hope this helps,

Jonathan

+0

Vous voulez dire la cryptographie à clé publique? – Daniel

+0

@Daniel Je suppose que oui. –

Questions connexes