Qual è l'approccio migliore per crittografare un file di database SQLite in .Net/C#? Sto usando il wrapper sqlite-dotnet2.Crittografa il database SQLite in C#
Esistono strumenti come SQLite Encryption Extension e SQLite Crypt, ma entrambi non sono gratuiti, mentre il mio progetto è in GPL.
L'approccio ingenuo che ho pensato di utilizzare è stato consentire a SQLite di gestire un file temporaneo, quindi di crittografarlo all'uscita del programma e sovrascrivere (zero-out) l'originale. Lo svantaggio ovvio è che se il programma si blocca (e mentre è in esecuzione), il DB di testo in chiaro è accessibile.
C'è un modo migliore per avvicinarsi a questo? Posso passare un flusso crittografato al wrapper (invece di usare SQLiteConnection.CreateFile)?
[modifica] Forse sto pensando troppo a questo. È sufficiente usare l'opzione Password nella stringa di connessione? Il file verrà crittografato correttamente in quel caso (o è una protezione più debole)?
> Esistono strumenti come SQLite Encryption Extension e SQLite Crypt, ma entrambi non sono gratuiti, mentre il mio progetto è in GPL. Non abbiamo ancora provato a utilizzarlo con .NET, ma sono nel team di sviluppo di [SQLCipher] [1], che è fondamentalmente una versione gratuita e non ingombra di SQLite che fornisce una crittografia trasparente del database. Lo raccomanderei per l'utilizzo in applicazioni mobili e/o stand-alone in cui è preferibile un db incorporato. [1]:.? Http://github.com/sjlombardo/sqlcipher –
... e la versione .NET di SQLCipher è ora anche un prodotto commerciale :( – Cocowalla