Password Hashing
Keith A. Watson, CISSP, CISA
CERIAS, Purdue University
Overview
Definitions
History
History of Password Hashing
More History of Password Hashing
Unix
Solaris, BSD, Linux, Others
$1$Dfhck4Sz$R3AdHbg7339gHtdgF0MBJ/
Cracking UNIX Passwords
Cracking All Kinds of Password
Shadow Password Systems
-r-------- 1 root sys 453 Jan 27 2008 /etc/shadow
Past (Current) Issues with �Password Hashing
Issues with Passwords
Password Hashes
Properties of Good�Password Hashing
Ad Hoc Techniques for Password Hashing
Note: Do NOT do the following!
Cryptographic Hashes
Password Hashes
PBKDF2
Bcrypt
Scrypt
Performance Considerations
user system total real
MD5: 0.000000 0.000000 0.000000 ( 0.000773)
SHA1: 0.000000 0.000000 0.000000 ( 0.000648)
SHA512: 0.000000 0.000000 0.000000 ( 0.000759)
BCrypt cost = 2: 0.130000 0.000000 0.130000 ( 0.124469)
BCrypt cost = 10: 6.290000 0.000000 6.290000 ( 6.294274)
Scrypt: 11.670000 0.050000 11.720000 ( 11.719417)
Based on code from http://www.binarylogic.com/2008/11/22/storing-nuclear-launch-codes-in-your-app-enter-bcrypt-for-authlogic
Software Libraries
Frameworks
Django: PBKDF2 with SHA-256
Rails: Bcrypt
.NET 4 Framework: PBKDF2
PHP: confusing info, use phpass
Avoiding the Issue?
Authentication Outsourcing
Summary
References
More References