Ab 2020 ist der glaubwürdigste und flexibelste verwendete Algorithmus
derjenige, der seine Stärke bei jeder Hardware am wahrscheinlichsten optimiert,
ist Argon2id oder Argon2i .
Es bietet das erforderliche Kalibrierungswerkzeug, um optimierte Festigkeitsparameter unter Berücksichtigung einer Ziel-Hashing-Zeit und der verwendeten Hardware zu finden.
- Argon2i ist auf speichergieriges Hashing spezialisiert
- Argon2d ist auf CPU-gieriges Hashing spezialisiert
- Argon2id verwendet beide Methoden.
Speichergieriges Hashing würde gegen die Verwendung von GPUs zum Knacken helfen.
Die Implementierung von Spring Security / Bouncy Castle ist nicht optimiert und relativ wochenlang, wenn man bedenkt, was der Angreifer verwenden könnte. Vgl.: Federdokumentation
Die aktuelle Implementierung verwendet Bouncy Castle, das Parallelität / Optimierungen, die Passwort-Cracker bewirken, nicht ausnutzt, sodass eine unnötige Asymmetrie zwischen Angreifer und Verteidiger besteht.
Die glaubwürdigste Implementierung, die für Java verwendet wird, ist die von mkammerer .
ein Wrapper-Glas / eine Bibliothek der offiziellen nativen Implementierung, die in Rust geschrieben wurde.
Es ist gut geschrieben und einfach zu bedienen.
Die eingebettete Version bietet native Builds für Linux, Windows und OSX.
Als Beispiel wird es von jpmorganchase in seinem Tessera- Sicherheitsprojekt verwendet, das zur Sicherung von Quorum , seiner Cryptocurency-Implementierung von Ethereum, verwendet wird.
Hier ist der Beispielcode von tessera.
Die Kalibrierung kann mit de.mkammerer.argon2.Argon2Helper # findIterations durchgeführt werden
Der SCRYPT- und Pbkdf2-Algorithmus kann auch durch Schreiben eines einfachen Benchmarks kalibriert werden. Aktuelle minimale sichere Iterationswerte erfordern jedoch höhere Hashing-Zeiten.