2

Botansqlite3 で Botan 暗号化を使用する場合、パフォーマンスの最適な構成設定は何ですか?

また

CAST5 を使用するように Botansqlite3 を構成するにはどうすればよいですか?

現在 AES を使用していますが、遅すぎます。私のユースケースはゲームです。

ゲームのデータ (エンド ユーザーのデータではない) を保護するための弱いまたは中程度の暗号化を探しているので、セキュリティはパフォーマンスよりも重要です。

ここに私の現在の BotanSqlite3 codec.h があります

/*These constants can be used to tweak the codec behavior as follows */

//BLOCK_CIPHER_STR: Cipher and mode used for encrypting the database
//make sure to add "/NoPadding" for modes that use padding schemes
const string BLOCK_CIPHER_STR = "Twofish/XTS";

//PBKDF_STR: Key derivation function used to derive both the encryption
//and IV derivation keys from the given database passphrase
const string PBKDF_STR = "PBKDF2(SHA-160)";

//SALT_STR: Hard coded salt used to derive the key from the passphrase.
const string SALT_STR = "&g#nB'9]";

//SALT_SIZE: Size of the salt in bytes (as given in SALT_STR)
const int SALT_SIZE = 64/8; //64 bit, 8 byte salt

//MAC_STR: CMAC used to derive the IV that is used for db page
//encryption
const string MAC_STR = "CMAC(Twofish)";

//PBKDF_ITERATIONS: Number of hash iterations used in the key derivation
//process.
const int PBKDF_ITERATIONS = 10000;

//KEY_SIZE: Size of the encryption key. Note that XTS splits the key
//between two ciphers, so if you're using XTS, double the intended key
//size. (ie, "AES-128/XTS" should have a 256 bit KEY_SIZE)
const int KEY_SIZE = 512/8; //512 bit, 64 byte key. (256 bit XTS key)

//IV_DERIVATION_KEY_SIZE: Size of the key used with the CMAC (MAC_STR)
//above.
const int IV_DERIVATION_KEY_SIZE = 256/8; //256 bit, 32 byte key

//This is definited in sqlite.h and very unlikely to change
#define SQLITE_MAX_PAGE_SIZE 32768

別のコーデックを使用するように BotanSqlite3 を再構成するには、BLOCK_CIPHER_STR、PBKDF_STR、MAC_STR、KEY_SIZE、および IV_DERIVATION_KEY_SIZE の代替を見つける必要があると思います。

Botanコーデックのパフォーマンスの広範な比較テストをここで見つけました。 5

ただし、テストは、Botansqlite3 を使用するつもりではなく、直接 Botan で行われました。チャートを見ると、パフォーマンスの観点からは CAST5 が適切な候補のようです。

  • 問題のデータベースは 300KB で、ほとんどが INTEGER フィールドで、いくつかのテキスト BLOB があります。
  • 融合を使用して、botansqlite3の名声のOlivierJGが提案したようにボタンを構成しています

    './configure.py --no-autoload --enable-modules=twofish,xts,pbkdf2,cmac,sha1 --gen-amalgamation --cc=msvc --os=win32 --cpu=x86 --disable-共有 --disable-asm'

参考文献:

http://github.com/OlivierJG/botansqlite3 - botansqlite3 は SQLite3 用の暗号化コーデックで、Botan の任意のアルゴリズムを暗号化に使用できます

http://www.sqlite.org - sqlite3 はクロスプラットフォームの SQL データベースです

http://botan.randombit.net/ - botan は、多数のコーデックをサポートする C++ 暗号化ライブラリです。

4

1 に答える 1

2

CAST-128 (または私が呼んでいた CAST5) を機能させることができます。これはブロック暗号です。

最善の策は、キー サイズの構成が異なる上記の方法です。

Twofish は非常に高速です。

すべての優れたコードを提供してくれた「Olivier JG」に感謝します。

于 2013-11-02T19:52:28.480 に答える