[Cracklib-devel] Security baseline for cracklib (when passwords should be accepted or rejected?)
Brought to you by:
nneul
From: Hubert K. <hk...@re...> - 2013-09-10 16:51:08
|
Hi all! I've done some integration testing with cracklib and discovered that the passwords are rejected or accepted quite arbitrarily. At least I don't see any pattern in it. For example, using English word list, password "1winning1" will be accepted as secure, but passwords ".):winning,!\" or "*~[winning#>;" will be rejected as insecure. The word "winning" has about 10 bits of guessing entropy[1,2,3], so the above passwords have at most 16 (more realistically 12), 40 and 40 bits of guessing entropy respectively. That's a very large gap between false positive (IMO) and false negative. What was the security level to be achieved? What is the acceptable error from this baseline? NIST SP 800-63-1 allows for password based authentication with passwords that have 14 or 20 bits of entropy (for systems needing Level 1 or Level 2 security respectively). While making it possible to check if a password has more entropy than that would be nice, I think those two values would be a good starting point. So, I think that adding a configuration file that allows to set the desirable entropy of passwords would be a good new feature. Adding a new API that allows the programmer to specify the minimal amount of guessing entropy the password needs to have would be a good addition to that. 1: NIST SP 800-63-1, section A.2.2 2: "Testing Metrics for Password Creation Policies by Attacking Large Sets of Revealed Passwords" by Weir et al. (2010) 3: "The science of guessing: analyzing an anonymized corpus of 70 million passwords" by Joseph Bonneau -- Regards, Hubert Kario Quality Engineer, QE BaseOS Security team http://wiki.brq.redhat.com/hkario Email: hk...@re... Web: www.cz.redhat.com Red Hat Czech s.r.o., Purkyňova 99/71, 612 45, Brno, Czech Republic |