Susceptibility to Brute Force and Dictionary Attacks


#1

STRIP’s encryption engine SQLCipher handles encrypting and decrypting your data, as well as deriving a key from your passphrase when initializing the data (detailed information here). No encryption key derived from your master passphrase is immune to a brute force or dictionary attack, but SQLCipher employs several techniques to hamper such an attack:

When initialized with a passphrase SQLCipher derives the key data using PBKDF2 (OpenSSL’s PKCS5_PBKDF2_HMAC_SHA1). Each database is initialized with a unique random salt in the first 16 bytes of the file. This salt is used for key derivation and it ensures that even if two databases are created using the same password, they will not have the same encryption key. The default configuration uses 64000 iterations for key derivation (this can be changed at runtime using “PRAGMA kdf_iter”).

If your passphrase uses a word from the dictionary, or some attempt at scrambling such a word and replacing characters with similar ones or numbers and symbols (e.g. P@$$w0|2d!), you will still be susceptible to a brute force and dictionary attacks, and possibly even a pattern-matching attack. Thus it’s important to pick a strong passphrase that avoids such techniques.