.Net/C#でSQLiteデータベースファイルを暗号化するための最良のアプローチは何ですか?私は sqlite-dotnet2 ラッパーを使用しています。
SQLite Encryption Extension や SQLite Crypt のようなツールがありますが、私のプロジェクトがGPLの下にある間は、どちらも無料ではありません。
私が使用しようと思った素朴なアプローチは、SQLiteに一時ファイルを処理させ、プログラムの終了時に暗号化して、元のファイルを上書き(ゼロアウト)することでした。明らかな欠点は、プログラムがクラッシュした場合(および実行中に)、プレーンテキストのDBにアクセスできることです。
これにアプローチするより良い方法はありますか? (SQLiteConnection.CreateFileを使用する代わりに)暗号化されたストリームをラッパーに渡すことはできますか?
[編集]多分私はこれを考えすぎています。接続文字列でパスワードオプションを使用するだけで十分ですか?その場合、ファイルは適切に暗号化されますか(または保護が弱くなりますか)?
暗号化を含むSystem.Data.Sqlite
ラッパーを使用することをお勧めします。それはうまく機能し、使いやすく、完全なADO.Net実装です。ラッパーは https://system.data.sqlite.org から入手でき、開発者はこのフォーラムで暗号化の使用方法を次のように説明しています: https://web.archive .org/web/20100207030625/http://sqlite.phxsoftware.com/forums/t/130.aspx 。ヒント-パスワードプロパティを設定するだけです。彼はまた、フォーラムの他の場所でMicrosoft CryptoAPIを使用して暗号化を行う方法についても説明しています。
私は試してみます http://code.google.com/p/csharp-sqlite/ 、それはMITライセンスの下でC#でSQLite3.6.16を書き直したものです。微調整するのは簡単だと思います。
EDIT:以下の注で説明されているように、sqlcipher暗号化もサポートしています
UPDATE:Google Codeが読み取られたため、プロジェクトは独自のWebサイトに移動しました https://system.data.sqlite.org/ index.html/doc/trunk/www/index.wiki