156 votes

SQLite avec cryptage/protection par mot de passe

Je viens d'apprendre à utiliser SQLite et j'étais curieux de savoir si cela était possible :

  1. Cryptage du fichier de la base de données ?

  2. Protection par mot de passe de l'ouverture de la base de données ?

PS. Je sais qu'il existe cette "SQLite Encryption Extension (SEE)", mais selon la documentation, "La SEE est sous licence logicielle...." et "Le coût d'une licence perpétuelle du code source pour la SEE est de 2000 US $."

0 votes

C'est certainement possible et il existe plusieurs solutions open source en plus de SEE. Parmi elles, l'extension de cryptage fournie avec wxSQLite3. Voir ma réponse à une question similaire pour plus de détails.

2 votes

@RobotMess : Pour être honnête avec vous - aucun de ceux énumérés ici. J'avais des contraintes de temps strictes sur ce projet, donc je devais faire quelque chose de rapide. Je suis allé avec ce que je connaissais le mieux -- AES sur les données brutes avant de les placer dans la DB... Mais ce n'est pas très efficace en termes de consultation, de recherche et de gestion de la base de données.

1 votes

@ahmd0 Hm, est-ce que ça ne rend pas la DB un peu inutile ? Je veux dire, tout ce qu'elle fait maintenant est de s'assurer que les commits sont atomiques.

129voto

OliJG Points 1264

SQLite a des crochets intégrés pour le cryptage qui ne sont pas utilisés dans la distribution normale, mais voici quelques implémentations que je connais :

  • VOIR - La mise en œuvre officielle.
  • wxSQLite - Un wrapper C++ de style wxWidgets qui implémente également le cryptage de SQLite.
  • SQLCipher - Utilise la libcrypto d'openSSL pour l'implémenter.
  • SQLiteCrypt - Mise en œuvre personnalisée, API modifiée.
  • botansqlite3 - botansqlite3 est un codec de cryptage pour SQLite3 qui peut utiliser tous les algorithmes de Botan pour le cryptage.
  • sqleet - une autre implémentation de chiffrement, utilisant les primitives ChaCha20/Poly1305. Notez que wxSQLite mentionné ci-dessus peut l'utiliser comme fournisseur de cryptage.

Le SEE et SQLiteCrypt nécessitent l'achat d'une licence.

Divulgation : J'ai créé botansqlite3.

1 votes

Avez-vous de la documentation sur l'utilisation de Botan pour le cryptage des bases de données SQLite ? Le site web de Botan ne mentionne pas cette fonctionnalité.

6 votes

Botansqlite3 est maintenant distribué indépendamment de Botan.

1 votes

Il existe également litereplica . Il utilise le chiffrement ChaCha, plus rapide que l'AES sur les appareils portables basés sur ARMv7.

22voto

MangeshGhotage Points 40

Vous pouvez protéger la base de données SQLite3 par un mot de passe. Pour la première fois, avant d'effectuer toute opération, définissez le mot de passe comme suit.

SQLiteConnection conn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;");
conn.SetPassword("password");
conn.open();

puis la prochaine fois, vous pourrez y accéder comme

conn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;Password=password;");
conn.Open();

Ceci ne permettra à aucun éditeur GUI de voir vos données. Plus tard, si vous souhaitez changer le mot de passe, utilisez conn.ChangePassword("new_password"); Pour réinitialiser ou supprimer le mot de passe, utilisez conn.ChangePassword(String.Empty);

22 votes

Ne fonctionne pas avec l'open source Sqlite. Aucune idée de l'implémentation, du langage ou de l'API que cela est censé être.

1 votes

Comment puis-je savoir quelle méthode de cryptage ChangePassword utilisé ? AES 128 ? RSA ?

1 votes

RSA 1024 ou 2048 ? Y a-t-il un document qui pourrait donner plus de détails ?

16voto

Rory Points 13087

La bibliothèque .net System.Data.SQLite prévoit également le cryptage.

10 votes

ASP.NET != SQL Server != instance installée de SQL Server

1 votes

Mais System.Data.SQLite ne provient pas de Microsoft. Cette question ne concerne pas .Net, mais si c'était le cas, d'autres compatibilités et incompatibilités seraient importantes.

10voto

Vous pouvez obtenir sqlite3.dll avec le support de cryptage de http://system.data.sqlite.org/ .

1 - Aller à http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki et téléchargez l'un des paquets. La version .NET n'a pas d'importance ici.

2 - Extrait SQLite.Interop.dll du paquet et le renomme en sqlite3.dll . Cette DLL prend en charge le cryptage via des mots de passe en texte clair ou des clés de cryptage.

Le fichier mentionné est natif et ne PAS nécessite le cadre .NET. Il peut avoir besoin de Visual C++ Runtime selon le paquet que vous avez téléchargé.

UPDATE

C'est le paquet que j'ai téléchargé pour le développement 32 bits : http://system.data.sqlite.org/blobs/1.0.94.0/sqlite-netFx40-static-binary-Win32-2010-1.0.94.0.zip

0 votes

Dans mon exemple particulier, j'avais besoin d'un .lib que je pourrais intégrer dans mon exécutable. Je ne pouvais pas avoir de dlls.

2 votes

Veuillez également consulter ce document github.com/rindeal/wxSQLite3-VS qui vous donnera un lib et dll fichier.

3voto

Ulrich Telle Points 136

C'est certainement possible et il existe plusieurs solutions open source en plus de SEE. Parmi elles, l'extension de cryptage fournie avec wxSQLite3. Voir ma réponse à une question similaire pour plus de détails.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X