Каковы кодеки шифрования SQLite с наибольшей производительностью в Botan?

При использовании шифрования Botan с botansqlite3, каковы оптимальные параметры конфигурации для производительности?

ИЛИ ЖЕ

Как я могу настроить Botansqlite3 для использования CAST5?

Я в настоящее время использую 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

Я считаю, что мне нужно найти замены для BLOCK_CIPHER_STR, PBKDF_STR, MAC_STR, KEY_SIZE и IV_DERIVATION_KEY_SIZE, чтобы перенастроить BotanSqlite3 для использования другого кодека.

Я нашел обширный сравнительный тест производительности кодека Botan здесь:
http://panthema.net/2008/0714-cryptography-speedtest-comparison/crypto-speedtest-0.1/results/cpu-sidebyside-comparison-3×2.pdf#page=5

Тем не менее, тестирование было проведено непосредственно с Botan, а не с botansqlite3, как я собираюсь его использовать. Глядя на графики, хорошим кандидатом кажется CAST5 с точки зрения производительности.

  • Размер рассматриваемой базы данных составляет 300 КБ, в основном это поля типа INTEGER с некоторыми текстовыми объектами.
  • Я настраиваю Botan в соответствии с предложением OlivierJG о славе botansqlite3, используя объединение

    ‘./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 ++ с поддержкой нескольких кодеков.

2

Решение

Вы можете заставить CAST-128 (или, как я его назвал, CAST5) работать, это блочный шифр.

Лучшая ставка — выше с различной конфигурацией размера ключа.

Twofish довольно быстро.

Спасибо Olivier JG за отличный код.

2

Другие решения

Других решений пока нет …