Chiffrer la base de données SQLite en C #
Quelle est la meilleure approche pour le cryptage d'un fichier de base de données SQLite .Net/C#? Je suis en utilisant sqlite-dotnet2 wrapper.
Il existe des outils comme SQLite Cryptage Extension et SQLite Cryptemais les deux sont non-libre, alors que mon projet est sous licence GPL.
L'approche naïve, je pensais de l'aide est de les laisser SQLite gérer un fichier temporaire, puis chiffrer sur la sortie du programme, et de les écraser (zéro) l'original. L'inconvénient évident est que si le programme se bloque (et alors qu'il est en cours d'exécution), le texte brut DB est accessible.
Est-il une meilleure façon d'aborder cette question? Puis-je passer un flux chiffré pour l'emballage (au lieu d'utiliser SQLiteConnection.CreateFile) ?
[edit] je suis Peut-être avoir à y penser. Est est suffisante pour utiliser l'option de Mot de passe dans la chaîne de connexion? Serait le fichier chiffré correctement dans ce cas (ou est-ce un faible protection)?
source d'informationauteur dbkk
Vous devez vous connecter pour publier un commentaire.
Je recommande d'utiliser le
System.Data.Sqlite
wrapper, qui inclut le chiffrement. Il fonctionne très bien, il est facile à utiliser, et il est complet ADO.Net la mise en œuvre. Vous pouvez obtenir de l'emballage de https://system.data.sqlite.orget le développeur explique comment utiliser le chiffrement sur ce forum: https://web.archive.org/web/20100207030625/http://sqlite.phxsoftware.com/forums/t/130.aspx. Astuce - vous venez de définir le mot de passe de la propriété. Il décrit également comment il fait le chiffrement à l'aide de Microsoft Crypto API ailleurs dans le forum.Prendre un coup d'oeil à:
http://zetetic.net/software/sqlcipher
Il est open source.
Vous pouvez chek le code de la wxsqlite3.
Je voudrais essayer http://code.google.com/p/csharp-sqlite/c'est la réécriture de SQLite 3.6.16 en C#, sous Licence MIT. Je suppose que ce sera facile de l'ajuster.
EDIT: Comme mentionné dans la note ci-dessous, il supporte aussi sqlcipher de chiffrement
Mise à JOUR: Depuis Google Code ne lire que le projet a été déplacé vers son propre site web https://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki
Cette méthode n'est pas spécifique à SQLite en soi, mais est un général de cryptage de fichier de suggestion.
(1) l'Utilisation TrueCrypt (libre/opensource) pour créer une crypté fichier wrapper. Ce fichier doit être plus grand que prévu max taille de votre base de données.
(2) Lorsque vous montez ce fichier, il apparaîtra comme un disque dur logique dans votre machine.
(3) Gardez vos bases de données sqlite dans cette logique du disque dur.
Monter le lecteur avant de vous accédez à votre base de données via odbc/jdbc ou toute autre méthode.
L'avantage de le faire est: Même si quelqu'un a accès à votre base de données de mot de passe, ils ne peuvent pas accéder au fichier car il est crypté. Ils auront besoin de votre Truecrypt mot de passe pour l'ouvrir.