Password strengh meter in KNewPasswordDialog

Christoph Feck christoph at maxiom.de
Thu Apr 4 08:22:46 BST 2013


On Thursday 04 April 2013 00:53:28 Rolf Eike Beer wrote:
> Am Mittwoch 03 April 2013, 14:53:40 schrieb Thiago Macieira:
> > On quarta-feira, 3 de abril de 2013 22.39.47, Rolf Eike Beer 
wrote:
> > > Also punish all passwords harder
> > > that do not contain all types of characters, so a password
> > > containing only lowercase characters and numbers needs to be
> > > much longer than one also containing specials and uppercase
> > > characters.
> > 
> > You do realise that a password isn't truly random if it has to
> > contain all types? I hate when I'm forced to do that.
> > 
> > For example, here are 10 password generated with keepassx with
> > Upper, lower, numbers, minus, underline, and special characters:
> > 
> > Note how there a few without digits. But since they're all
> > randomly-generated using the same method, they all have the same
> > probability.
> > 
> > For custom
> > 
"!@#$%^&*abcdefghijklmnopqrstuvxwyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123
> > 456789", I get:
> > 
> > Out of ten, only three got all four types of characters. All
> > *ten* got a score lower than 75, which is your threshold for the
> > green colour.
> 
> There are 5 types of characters (also in the old algorithm):
> Uppercase, lowercase vowel, lowercase consonant, digits, and
> specials. You are right, and indeed there are 2 changes to the
> algorith that I do: penalize sequences and penalize too few types.
> Especially the later part may need some tweaks. From my point of
> view there is no need to divide lowercase characters in 2 classes,
> in an earlier version of my patch I even removed this.

The distinction between vowels and consonants has been added to try to 
detect normal words. The password "kgnlhtbm" should have a higher 
score compared to "pibatero". In the latter, the changes between 
vowels and consonants make it look like a word (even it isn't, at 
least not in any language I know).

> 
> > I generated 100 10-character passwords by base64 encoding
> > /dev/urandom. With the old algorithm, 65% of the passwords were
> > 100 points, 20% more between 90 and 99 and 10% between 80 and
> > 89. With the new algorithm, only 14 passwords got 100 points,
> > 21% are between 80 and 99 and 40% of them are between 70 and 79
> > points. There was even one entry that got 30 points.
> > 
> > I have to increase the password length to 14 characters to 65% of
> > 100 points. And they're all random.
> 
> I have changed my algorithm in some ways and rechecked: removed
> vowel class, divide by one less than we have character classes,
> and both. Then your random passwords give better results with the
> new algorithm, sometimes even better than with the old one. There
> are a few exceptions (qbF\FdHCy, U2WVF9kLH) that still score worse
> with the new algorithm. One of them has no digit, the other no
> special, so I am not surprised as there are very few transitions
> between character classes in them.
> 
> So, yes, you are absolutely right. Suggestions about how to improve
> that absolutely welcome.
> 
> Eike

Christoph Feck (kdepepo)
KDE Quality Team




More information about the kde-core-devel mailing list