Skip to content

Update default configuration for Pbkdf2PasswordEncoder #10489

@Sc00bz

Description

@Sc00bz

Expected Behavior

Pbkdf2PasswordEncoder should not let you generate a hash longer than the hash function. This should either return an error or reduce the output size to match the hash output size: 160 for SHA1, 256 for SHA256, and 512 for SHA512.

Current Behavior

Pbkdf2PasswordEncoder doesn't prevent bad settings.

Context

Pbkdf2PasswordEncoder defaults to SHA1 and 256 bits of output. This causes the defender to waste time generating the last 96 bits of output that an attacker is just going to ignore. Also PBKDF2-SHA1 with 185k iterations does not meet the bare minimum for good settings:
PBKDF2-SHA512: 120,000
PBKDF2-SHA256: 350,000
PBKDF2-SHA1: 720,000

I suggest you at least change PBKDF2's default to SHA512 and 120k iterations or more. Also you could change matches() to truncate the hash to save time on checking.

Metadata

Metadata

Assignees

Labels

in: cryptoAn issue in spring-security-cryptotype: enhancementA general enhancement

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions