Subject: Password quality

From: "Paul Leach" <[email-masked]>
Date: Mon, 5 May 2003 14:58:23 -0700

> -----Original Message-----
> From: Ken Hornstein [mailto:[email-masked]] 
> Sent: Monday, May 05, 2003 1:50 PM
> To: [email-masked]
> Subject: Re: AES draft... 
> 
> >"A reasonable password cracking dictionary might have 2**21 entries; 
> >complexity rules forcing mixed case, digits and punctuation could 
> >plausibly add 2**11 combinations for each dictionary word, 
> resulting in
> >2**32 possibilities."
> 
> Alright, now I've got a handle on what we're talking about here.
> 
> I just checked my password database on our KDC; we use a 
> dictionary which has a little more than 2**20 entries.  We're 
> using a cracklib-based password quality checker based on code 
> from Matt Crawford; this catches the obvious "add a number to 
> the end of a dictionary word" kinds of things, and all of the 
> obvious mixed case stuff.  So I'm reasonably confident that 
> it would take longer than six hours to break our average 
> password with common hardware today.

(The following is a digression.)

Maybe, but I wouldn't be as sure.

The other Ken's timings were:
"system: Pentium 4 2GHz
compiler: gcc-2.96 -O2
OS: Linux 2.4.18

    Testing krb5 pkbdf2 and openssl sha1....
    10 loops of 5 tests (45056 iterations) took 25.330676 seconds
    average 0.506614s per test, 1.124409e-05s per iteration"

That would say that it takes about 11 microsecs to check one password.
That's about 10**5/sec, so it would take around 20 secs to do everything
in your dictionary. That's 3 times per minute, 180 per hour, 1080 in 6
hours.

If I can get around the quality checker by inserting a digit or
punctuation in the middle of my dictionary word, then if  the added
complexity of so doing increased the number of combinations by less than a
factor of 1080, then it could still be cracked in 6 hours.

Or, even if the quality checker disallowed a password if it was in the
dictionary after removing digits, punctuation and casing, the atackers
dictionary has 4 million words, i.e. three million more than yours --
users will be able to choose one of them without being rejected.

---

From: Ken Hornstein <[email-masked]>
Date: Mon, 05 May 2003 18:15:17 -0400

>factor of 1080, then it could still be cracked in 6 hours.

A valid point, certainly.  Maybe I should check that case on the quality
checker.

>users will be able to choose one of them without being rejected.

But I'm not so sure about this one.  I mean, a million words is already
a lot for a dictionary; I'm not sure where I'd even _get_ three million
more words for mine.  I'm not sure users are going to choose one of them.
It's possible, certainly, but then they still have to contend with the
minimum number of character classes rule.  It's not perfect, but it's
good enough that I'm not losing sleep over it.  Maybe I'm just not
paranoid enough, though.

--Ken