I apologize in advance if this is the wrong community for this post. If so, please point me in the right direction of where I should post this.
I’m thinking of trying out KeePassXC, and, when creating a new database, I came across the following settings:
Some of this is somewhat self explanatory to me (“Encryption Algorithm”, and “Key Derivation Function”), but some of it not so much – namely, “Transform Rounds” (I’m assuming that “Memory Usage”, and “Parallelism” are more specific, not to the database on the whole, but, instead, to the decryption itself within the app, or, maybe, even just for the benchmark). What exactly is “Transform Rounds”? Does it mean that the passwords are encrypted over, and over again, in attempt to protect against dictionary attacks? I haven’t been able to find any concrete information.
Those last three input boxes are all parameters to fine tune the operation of the key derivation function, they control the performance and hardware usage characteristics of how to derive the actual database encryption key from your password in order to make it harder to brute force.
The Transform Rounds input essentially controls how much sequential processing power is needed by repeating a specific part of the KDF more or less often, and thus allows you to determine how long the key derivation will take every time. That’s why there’s a Benchmark button next to it - it will automatically test on your CPU and determine how many rounds are needed to produce a 1 second delay on your hardware. Which is an acceptable time to wait for your database to unlock, but bad news for someone trying to brute force your password, as it limits how many attempts different passwords they can test in a given time.
Memory usage controls the amount of memory the KDF needs, and Parallelism controls how many parallel threads are used, both limiting how many parallel attempts at brute forcing your password a potential attacker can run on any given hardware.
Disclaimer: I’m not a security expert, just a software developer who has come into contact with KDFs quite a bit. If I misrepresented anything above, happy for correction!
Great answer, it is similar to the cost parameter for bcrypt/scrypt and iterations for PBKDF2.