Can scrypt be used as the hashing algorithm for LUKS? Can I tune its parameters? How can I do this?
No, LUKS only supports PBKDF2 as the key derivation function. PBKDF2 is built on a cryptographic hash function, and you can select the hash function with
--hash, as well as the iteration count via
--iter-time. All supported hash functions are equally secure for this use case; a higher iteration count makes the job proportionally harder for the attacker but also make normal mounting correspondingly slower.
There is a registered issue for LUKS to support scrypt. This is a significant change because there is no field in the on-disk format to indicate which key stretching is in use. This has been discussed briefly on the dm-crypt mailing list.
Cracking Scrypt hashes is about 18,000X more expensive than cracking LUKS hashes when run for 200ms, when the attacker is using custom ASICs. To get the same protection by just increasing iterations, you'd have to let LUKS hash your password for an hour. Have fun with that :-)
LUKS should switch to Scrypt as the default, plain and simple. Don't let the comments above confuse you.
You may use whatever hashing algorithm the kernel has in stock, so the answer is in principle yes (if someone bothers to implement it in the kernel) but in practice no.
Short answer - yes, scrypt (see wikipedia) from Tarsnap can be used for LUKS encryption. Further, scrypt has been implemented in Android 4.4+ Ref: Revisiting-android-disk-encryption. However, that doesn't answer the more important question, of how? Guidance on LUKS with scrypt on Linux Mint or Fedora greatly appreciated here.