Ciekaw jestem, czy ktoś ma jakieś rady lub punkty odniesienia, jeśli chodzi o określenie, ile iteracji jest „wystarczająco dobrych” podczas korzystania z PBKDF2 (szczególnie z SHA-256). Z pewnością „wystarczająco dobre” jest subiektywne i trudne do zdefiniowania, różni się w zależności od profilu ryzyka &, a to, co jest „wystarczająco dobre” dzisiaj, prawdopodobnie nie będzie „wystarczająco dobre” jutro ...
Pozostaje jednak pytanie co przemysł uważa obecnie za „wystarczająco dobre”? Jakie punkty odniesienia są dostępne do porównania?
Niektóre źródła, które znalazłem:
- Wrzesień 2000 - zalecane ponad 1000 rund (źródło: RFC 2898)
- luty 2005 - AES w Kerberos 5 „domyślnie” wynosi 4096 rund SHA-1. (źródło: RFC 3962)
- wrzesień 2010 - ElcomSoft twierdzi, że iOS 3.x używa 2000 iteracji, iOS 4.x używa 10000 iteracji, pokazuje, że BlackBerry używa 1 (dokładny algorytm haszowania nie jest określony) (źródło: ElcomSoft)
- maj 2011 - LastPass używa 100 000 iteracji SHA-256 (źródło: LastPass)
- czerwiec 2015 - StableBit używa 200 000 iteracji SHA-512 (źródło: StableBit CloudDrive Nuts & Bolts)
- Sierpień 2015 - CloudBerry używa 1000 iteracji SHA-1 (źródło: CloudBerry Lab Security Consideration (pdf))
Byłbym wdzięczny za wszelkie dodatkowe odniesienia lub opinie na temat tego, w jaki sposób ustaliłeś, ile iteracji było „wystarczająco dobrych” dla Twojej aplikacji.
Jako dodatkowe tło rozważam PBKDF2-SHA256 jako metodę używaną do haszowania haseł użytkowników w celu przechowywania w bezpiecznej witrynie internetowej. Moja planowana sól PBKDF2 to: losowa sól na użytkownika (przechowywana w przejrzystym miejscu z każdym rekordem użytkownika) XOR z solą globalną. Celem jest zwiększenie kosztów brutalnego wymuszania haseł i uniknięcie ujawniania par użytkowników z identycznymi hasłami.
Odniesienia:
- RFC 2898: PKCS # 5: Password- Based Cryptography Specification v2.0
- RFC 3962: Advanced Encryption Standard (AES) Encryption for Kerberos 5
- PBKDF2: funkcja wyprowadzania klucza na podstawie hasła v2