¿Cuál es el mejor enfoque para cifrar un archivo de base de datos SQLite en .Net/C#? Estoy usando el contenedor sqlite-dotnet2.Cifrar base de datos SQLite en C#
Existen herramientas como SQLite Encryption Extension y SQLite Crypt, pero ambas no son gratuitas, mientras que mi proyecto está bajo GPL.
El enfoque ingenuo que pensé utilizar fue dejar SQLite manejar un archivo temporal, luego cifrarlo en la salida del programa, y sobrescribir (cero) el original. El inconveniente obvio es que si el programa falla (y mientras se está ejecutando), se puede acceder al DB de texto sin formato.
¿Hay una mejor manera de abordar esto? ¿Puedo pasar una secuencia encriptada al wrapper (en lugar de usar SQLiteConnection.CreateFile)?
[edit] Tal vez estoy pensando demasiado en esto. ¿Es suficiente usar la opción Contraseña en la cadena de conexión? ¿Sería el archivo cifrado correctamente en ese caso (o es una protección más débil)?
> Hay herramientas como SQLite Encryption Extension y SQLite Crypt, pero ambas no son gratuitas, mientras que mi proyecto está bajo GPL. No hemos intentado utilizarlo con .NET todavía, pero estoy en el equipo de desarrollo de [SQLCipher] [1], que es básicamente una versión gratuita y libre de SQLite que proporciona cifrado de base de datos transparente. Lo recomendaría para su uso en configuraciones de aplicaciones móviles y/o autónomas, donde es deseable una base de datos incorporada. [1]:.? Http://github.com/sjlombardo/sqlcipher –
... y la versión .NET de SQLCipher también es ahora un producto comercial :( – Cocowalla