There is no international committee on which function / term is correct or not.
Work factor seems to be a more generic term, and I'd prefer that when talking about the relative amount of work that needs to be performed. That - at least internally - an iteration count is used together with a hash algorithm is an implementation detail.
The work factor doesn'...
Iteration count is a parameter that you can choose directly; likewise memory use and parallelism for other password hashes like Argon2.
These should be tuned according to the user's available resources: how many CPU cores they can use in parallel to log in, how much memory they can use while logging in, and how many seconds they are willing to wait for ...
bcrypt is a password hashing method. That means that it expects a password as input parameter. It has been designed so that it is hard to perform an offline test of guessed passwords by having an explicit work factor.
It accepts (or requires) a salt so that:
repeated passwords do not show up;
that it is impossible to build a (rainbow) table.
Now your ...
The bcrypt KDF does not use the entire block cipher as-is. It relies on a modified version of its key schedule. This is important because blowfish, unlike many other ciphers, has an extremely expensive key schedule. It requires about four kilobytes of fast memory, compared with SHA-1 which is so light that it can almost be computed entirely in x86 registers. ...
If I want to use this approach, do I have any option other than extracting and storing the bcrypt salt somewhere outside the password field?
No. You need to store the bcrypt parameters (salt and iteration count) and the Argon2 parameters.
Why do we use EnhancedHashPassword in nuGet library and chose an SHA algorithm like this?
The Bcrypt uses a 448-bit key that makes a 56-byte password limit. Some libraries can drop parts longer than 56-byte of the passwords or don't accept it. This is not good, therefore before bcrypt a hash is applied to the password. This is the EnhancedHashPassword ...
To calculate a pepperedPassword I can either just concatenate two values:
Bcrypt limits the password. This means that if the password is too long (longer than 56 bytes), it will simply be truncated. If you just attach the pepper to the password, there is a high risk that this will happen. Then the pepper's security gain could even be lost without being ...
A good way to find out what the authors meant would probably be reading their original paper where they introduced bcrypt : https://www.usenix.org/legacy/event/usenix99/provos/provos.pdf
I think comparing bcrypt with e.g. pbkdf2 is not quite fair for bcrypt since it was an earlier construction and ideas like tweakable number of iterations are actually ...
It's generally not a good idea to store passwords of any kind in a database that's not secure, let alone a database that's intended to be publicly available.
Is it secure?
If you don't care about tampering and wrong entries in the database then I guess this setup is okay.
Bcrypt already incorporates a salt to prevent rainbow attacks, so all passwords ...
BCrypt is not a key derivation function, it is a password hashing algorithm.
If you needed to derive a key from a password, bcrypt has no capability to generate a 256-bit key.
On the other hand, people do use actual key derivation functions, e.g.:
as the basis for their own password hashing algorithms.
These key derivation ...