2011-01-20 6 views
3

Mon client m'a demandé s'il était possible de chiffrer son fichier iOS SQLite.
J'ai vérifié deux ressources:Chiffrement du fichier de base de données SQLite sur iOS

Encrypt & Decrypt Sqlite file (Using Core Data)
http://support.apple.com/kb/HT4175

S'il vous plaît me corriger si je me trompe, le fichier sera crypté afin que personne ne sera en mesure de se fissurer en elle (bien qu'il sera possible pour un cracker déterminé je pense).

Les requêtes Core Data s'exécuteront comme d'habitude, n'est-ce pas? Je veux dire qu'il n'y a pas de pénalité de performance ni une API différente.

Répondre

3

Les liens que vous avez fournis parlent de cryptage du stockage sur l'ensemble du périphérique; Cependant, si l'objectif est que l'utilisateur ne soit pas en mesure d'ouvrir directement le fichier de base de données, cela ne vous aidera pas, car la seule chose qui vous protège est l'accès à vos données en cas de vol de l'appareil. Il repose également sur l'utilisateur pour le configurer, l'application ne peut pas exiger que le stockage de l'appareil est crypté.

Fondamentalement, quelle est la motivation derrière vouloir le stockage crypté?

EDIT:

Sur la base de la chaîne de réponse, je pense en utilisant la variante chiffrée de SqlLite à:

http://sqlcipher.net/

est une bonne solution. Cela crypte le contenu de la base de données avant qu'ils n'atteignent le stockage, ce qui est génial. Un attaquant pourrait être capable de trouver la clé utilisée dans votre code pour déchiffrer la base de données, mais toute couche de défense que vous pouvez ajouter aidera. Je ne pense pas que vous pouvez utiliser cela avec CoreData (comme il est construit au sommet de la INTÉGRÉE dans les bibliothèques SqlLite) mais vous pouvez probablement l'utiliser avec un emballage comme FMDB:

https://github.com/ccgus/fmdb

+0

Mon client veut chiffrer le fichier de base de données afin d'empêcher l'utilisateur d'ouvrir le fichier de base de données directement. Que faire dans ce cas? – Chiron

+0

L'utilisateur ne peut normalement pas accéder au fichier de base de données, à condition de le placer dans le répertoire Bibliothèque. Un utilisateur jailbreaké peut accéder à n'importe quel fichier. Vous ne pouvez pas utiliser CoreData sur un fichier chiffré. Votre meilleur pari pour un compromis pourrait être l'obsfucation - vous pourriez écrire quelques octets sans signification à l'avant du fichier de base de données lorsque l'application a été fermée ou suspendue, et les supprimer lorsque vous vous êtes réveillé à nouveau. L'inconvénient est que si vous obtenez le code erroné, un utilisateur pourrait facilement perdre toutes les données qu'il détenait. –

+0

Qu'en est-il de http://sqlcipher.net/? Cela pourrait-il me servir dans cette situation? devrais-je m'attendre à des obstacles dans l'AppStore si je l'utilise? Est-ce autorisé? – Chiron

Questions connexes