GeodSoft logo   GeodSoft

Password Evaluator
Pwcheck.pl Instructions

Overview

Password Evaluator is designed to examine passwords and tentative passwords to look for dictionary words and patterns that a password cracking tool might exploit. It looks for reversed, rotated, keyboard shifted, truncated, dropped letters, substituted characters and other variations on dictionary words both singly and in many combinations. It looks for too many of a single character, keyboard and ASCII sequences, a character repeated too many times without different intervening characters and character patterns that repeat. It looks for phone numbers, dates and social security numbers.

The intent is to find any password that could be found in a dictionary or electronic word list, as well as any plausible programmatic variation of such words, including combinations of two or more words, and combinations of words with patterns that might be generated from character arrays representing the ASCII collating sequence or the keys on a standard keyboard.

The default settings are aggressive in that they attempt to identify passwords to which more transformations have been applied than any contemporary password cracking tool is known to do. It's our belief that for the foreseeable future, brute force cracking of well constructed passwords of sufficient length and character type diversity is not feasible, and for all intents and purposes, a waste of CPU cycles. Any pattern that can be described, or any word that can be varied in a manner that can be described, and any combination of these, are more likely to produce passwords in actual use than a brute force method. Thus, password cracking tools are likely to acquire the capabilities to manufacture large subsets of what have traditionally been thought of as good passwords.

Password evaluator in a CGI form is purely advisory. Users are free to disregard errors as well as warnings, though password evaluator will not display length and strength for any password with one or more "error" conditions. If a user believes the minimum password requirements are too stringent, there are numerous configuration options that will allow them to be relaxed. Shortening the minumum password length, lengthening the minimum or maximum dictionary word lengths, increasing the maximum word length ratio, increasing the allowed number of any maximum character or pattern type, not checking for specific password types, and not checking for words across non letters, will all loosen conditions that generate errors.

With default settings, a password that gets no errors should not be easily cracked with today's cracking tools using default rules and an unabridged dictionary available on line. Password evaluator includes a significant list of common names as well as lists of common passwords. It does not include words drawn from lists related to popular culture or other specialty areas. Thus it will likely miss passwords based on sports, contemporary musical groups and movies, slang, brand names, and other terms in common use today, but not readily available in existing online word lists.

Loosening the conditions that cause errors to be reported will not affect the strength calculation. This is based on password length and character diversity.

A 0 strength password presents no significant challenge to brute force methods. A password with a 1 strength rating may be broken by brute force if the cracker is moderately determined. These descriptions are intentionally vague. The strength ratings are intended solely as relative strength ratings and the decision where to draw the line between 0 and 1 is arbitrary. From 1 and higher, the dividing line for each increase represents a ten times greater resistance to brute force attacks than the preceding. There are no fractional ratings so there is no 1.99 or 2.01. A 3 is more than 10 times stronger than a 1 and less than 1000 times stronger; on average a 3 should be about 100 times stronger than a 1. This arbitrary scale seems appropriate, as the number of CPU cycles necessary to crack a password with brute force jumps significantly with each additional character and each additional character type.

Check Passwords for Windows NT / 2000

Passwords intended for use on Windows NT or 2000 must be checked with the check passwords for Windows NT / 2000 enabled. Checking passwords for Windows systems without checking this option will give totally misleading results. Read about how Windows NT and 2000 store password hashes to understand why.

Because of the unusual way in which Windows NT and 2000 store password hashes, most of the usual recommendations for forming good passwords don't apply. If this option is checked, Password Evaluator, will adjust to Windows password peculiarities. First the password is split into two 7 character pieces which are checked separately. Case is ignored and maximum dictionary word length is set to 2.

With 7 character passwords, even a three character word at the begining of a password will greatly simplify L0phtCrack's task. L0phtCrack is the most widely used password cracker on NT. Begining an NT password with a three character word, effectively reduces the problem to a 4 character brute force attack which L0pthCrack will handle easily.

The highest possible NT password strength is 4 and this will include at least one character typed while holding the ALT key while pressing three digits on the numeric keypad with Num Lock on. It will also include two symbols or punctuation from different parts of the keyboard and a consonant, vowel, and digit. NOTE: Entering non typable characters with the ALT key will create passwords that are not crackable and much stronger than the listed strength. Because no cracking tool uses these characters, and there are so many of them, these passwords will never be cracked unless the cracking tools and assumptions are changed.

The total strength of an NT password will be the strength of the stronger piece. For most purposes the other piece can be ignored; it's not needed and does not matter even it contains errors. Two pieces rated 4 will be somewhat stronger than one piece but this is not especially significant on an exponential scale.

Minumum Password Length

Sets the minumum number of characters allowed in a password. Any password less than this length will generate an error message.

Minumum Dictionary Word Length

Sets the minimum number of characters that Password Evaluator treats as a word. When checking pure alphabetic passwords, it may be advantageous to set this to 4. As password evaluator treats any character sequence that is not fully contained within another as a word, including reversed words, any pronounceable letter sequence has a good chance of containing multiple words though there may not be any practical programmatic way to put these together. For example, "quirehc" contains quire and reversed che. The longer a pronounceable alphabetic sequence becomes, the more likely there will be multiple words contained within it. It's also less likely there will be an easy and general description of the method by which the password was created. Without this, the cracking tools cannot program a method for creating such a password.

Raising the minumum word length to 4 significantly reduces the number of run together and overlapping words in long alpha only sequences. In general it is a bad idea to increase the minimum over three as this prevents Password Evaluator from catching fairly obvious passwords such as "dog8cat". Not only is it "clever" but it consists of two short, very common words, separated by a non letter. This may be the simplest and most productive custom dictionary to program after the standard dictionary transformations.

Maximum Dictionary Word Length

Sets an upper length limit on the longest dictionary word allowed in any password. Any dictionary word that is longer than this length, after non letters have bee removed, will trigger an error. If the word is truncated, the length of the word after it is completed to match a dictionary word is used Generally the maximum word length ratio is more important but for long passwords, this can prevent any long word from being used.

Maximum Dictionary Words

Limits the maximum number of dictionary words allowed in a password. The default is 1 and probably should not be changed. The allowed word or words must be no longer than the maximum dictionary word length or the maximum length compared to the maximum dictionary word ratio. This allows dictionary words or transformations of them that are a limited part of a password. It's very hard to create long pronounceable alphabetic sequences without getting any short words or any possible variation of a word in them.

Setting this to 0 will prevent any word or identified transformation of a word from being accepted in any password. A word is any character sequence equal to or longer than the minimum dictionary word length that appears in the dictionary used for checking. Straight lookups and reversed word lookups are always performed. Some of the tests cannot be performed or make no sense on short character strings so the Password Evaluator contains some hard coded lower limits related to word length.

Setting maximum dictionary words to 2 or higher will prevent Password Evaluator from finding relatively obvious passwords like "cat8rat" which it was expressly designed for. In the future a range option may be added so that multi word phrases will be accepted but simpler passwords rejected.

Maximum Word Length Ratio

Maximum word length ratio may be the most important single setting after minumum password length. The default is .66. This results in the rejection of any password where a dictionary word or variation on a dictionary word is two thirds or more of the total length. The setting .67 is much weaker. The default .66 limits 6 character passwords to one three letter word, 7 character passwords to a four letter word and 8 and 9 character passwords to five character words. Six, seven and eight character passwords must have at least three characters that are not part of a dictionary word. Nine character passwords need at least four non word characters. .66 will allow cat824 or batxzt but not boat11. .67 would allow boat11. There is no question that cat824 is a weak password but that is reflected by its 0 strength rating.

Having to find three non word characters adds a significant computational overhead. If only letters are being examined the work load is increased by a factor of 17,565. If all 95 printable characters are being checked, the factor is 857,375. Depending on assumptions regarding character sets and word lengths used "cat824" is somewhat to many times stronger than "cat8rat". "cat8rat" is very much at the easy end of passwords made from two short words separated by a non letter based both on word frequency and password length.

If the intent is to use only strong passwords, then the minimum length should probably be set to 8 and only passwords rated around 3 or higher considered.

Maximum Character Occurrences

Sets an upper limit on how many times a single character can appear in a password. If the number is 1 or more it's treated as a count of how many times any single character may appear in a password. If it's less than 1, then the character cannot comprise a larger portion of the password than the value. The default is .4 which allows any single character to be up to but no more than 40% of the characters in a password. This is 2 in a six character password, 3 in seven, eight and nine character passwords and 4 in ten, eleven and twelve character passwords.

Maximum Sequence Characters

Sets an upper limit on how many characters from the ASCII collating series (letters, numbers, etc. where numbers precede letters and upper case letters come before lower case) or keyboard sequences. The default is 2. Sequences are in either direction so "345" is a sequence as is "dcb" both of which would be disallowed by the default. Keyboard sequences are physical keys regardless of shift state so "6&8" is a sequence as is ">,M" and "*&6". The maximum sequence characters also applies to alternate character sequences so that "*j1a2c3K?" would be disallowed as would "1b^o5a$T!" ("^5$" is a reverse alternate character keyboard sequence). Increasing this to 3 would not be unreasonable. Because of the many combinations of ASCII and keyboard sequences, reducing this to 1 is probably not practical.

Maximum Repeat Characters

Sets an upper limit as to how many times the same character may repeat without a different intervening character. The default is 2 so that "aaa" or "333" would not be allowed in any password. A 1 disallows repeated characters. A 0 has the effect of disabling repeat checking.

Maximum 2 Character Pattern Repeats

Sets an upper limit on how many times the same two consecutive characters can appear in a password; this applies to any and all characters regardless of where they appear in the ASCII collating sequence or the keyboard. The default is 2. "d*aP@d*1?" would be allowed but not "d*Ad*@1d*?".

Do Not Allow All Digits

If checked, disallows passwords consisting solely of numbers. There are less digits than any other character type making the number of passwords particularly small if all digit passwords are allowed. The only character type that might be considered smaller than numbers is single case vowels but usually all 26 of the same case letter are treated as a group. The default is to not allow all digit passwords.

Maximum Digit Ratio for Full Strength Estimate

The standard strength calculation is a function of how long the password is and the diversity of character types. If the number of digits in a password exceed the ratio specified by maximum digit ratio for full strength estimate, the strength calculation may be adjusted downward. The default is .7. The reasoning is that if any standard numeric format is used, the separators are mostly noise and contribute nothing to the strength of the password. If the password contains any letters, the normal strength calculation is used as no know standard numeric formats contain letters.

If the password digit ratio exceeds the maximum and contains no letters but does contain any of the common numeric separators, "/", "-", "(" or ")", then only the digits are used in calculating the password strength. This pretty much means the password strength will be zero as it takes 13 digits to get a strength of 1. The presence of the these characters, mostly digits and no letters is very suggestive of a standard numeric format such as "(222) 333-4444" for a phone number. This pattern is 14 characters long but all likely variations can be gotten just by changing the 10 digits. Further only about a quarter of the area codes are assigned. Finally, using just local area codes (for the target computer) is likely to be much more productive than using all valid area codes.

Keep in mind, the goal of the cracker is to maximize the use of available CPU cycles by trying potential passwords that have a significantly better chance of being used than any random character sequence that might be generated. So the cracker can likely improve efficiency further by using only assigned local exchanges. Local phone numbers might not produce a single password but they have a much better chance than any comparable length random sequence, regardless of whether you count 10 or 14 characters. Local phone number are much more likely to be used than any possible long distance phone number. Standard phone number formatting, (222) 333-4444 or 222-333-4444, is more likely to be used than non standard, e.g. 222x333*4444.

If the password digit ratio exceeds the maximum and contains neither letters or any of the common numeric separators, the strength is reduced by 1 from what it would otherwise be.

Maximum Vowels Only and Maximum Consonants Only

One common way to form passwords is to drop the consonants or especially the vowels from a word, e.g. psswrd. The maximum vowels only and maximum consonants only checks prevent this with a very low CPU and IO overhead. The default settings are both 2. Limiting the kinds of character variation in a password is not good so it's useful to disallow consonant or vowel heavy passwords even if they are not derived from dictionary words. These should not be decreased as that would discourage the use of a few letters in a password with many digits, symbols or punctuation. Setting these to three should have no adverse consequences. Setting these higher will start to allow modified dictionary words that form a significant part of the password.

Do Not Allow Dates, Phone or Social Security Numbers

By default all of these are checked and prevent passwords that consist entirely or almost entirely of dates, phone numbers or social security numbers. Common formats and obvious variations are checked. Only passwords that consist entirely of these or these plus white space are rejected. Even obvious dates, phone numbers and social security numbers are allowed if the password contains other non white space characters.

Check Words Across Non Letters

When check words across non letters is checked, the default, Password Evaluator will remove all non alpha characters and check the remaining letter only strings to see if they are words or contain words. If this is not checked, only contiguous sequences of letters are checked for words.

Additional Minimum Word Length

Additional Minimum Word Length when checking words across non letters adds the length specified here to the minimum dictionary word length to determine what to count as a word and what not. The intention is to find dictionary words that have been hidden by inserting non letters between two or more letters. It is not to find small words that happen to get created when separate letter sequences that are not words and not contiguous are put together. Increasing the minumum length by 2, the default, greatly reduces the number of created words that may occur while still catching small separate words that have been combined with non letters.

Unchecking check words across non letters will allow passwords like ta2b4l6e. Using all three through nine character words from the 45,000 Linux word list combined with every possible two through 5 character even and odd and even and odd reversed digit sequence to create every possible password up to 11 characters results in only slightly over 6 million passwords. This is a tiny custom dictionary compared to others that have been discussed. Though there are obviously an enormous number of ways to break up words with non letters, the human tendency is to take the easy way. Checking words across non letters is the only practical way to eliminate the simple ways. No password made from a dictionary word variation is good, even if it's not obviously bad, and they should not be allowed.

Maximum Suffix Word Length Ratio

If the length of a dictionary word plus an "ed" or "ing" suffix is equal to or greater than the maximum suffix word length ratio, the suffix length is counted as part of the word length. Normally only the part of the word that is the dictionary word is counted. Without this, a non word could be made by appending "ing" to a short word that does not have such a suffix. Only the short word length would count and thus likely be less than the maximum dictionary word length or ratio. For example, unless the "ing" in "adaming" which is not a dictionary word, is counted as part of the word length, "adaming" will be accepted as a password even though it is one of the most trivial dictionary word variations and one which the cracking tools easily exploit.

With the default setting of .75, at least three characters that do not create a new word must be prepended or mixed into the first part of "adaming" for it to be accepted. Raising this to .8 allows only two additional characters to make an acceptable password. If you care about strong passwords and presumably you would not be using Password Evaluator unless you do, it's best not to raise this. Values entered here less than the maximum word length ratio will have no effect.

transparent spacer

Top of Page - Site Map

This page is not covered by the GeodSoft Publication License. Copyright © 2000 - 2006 George Shaffer. All rights reserved.

 
Home >
How-To >
Good Passwords >
pwcheck_instructions.htm

What's New
How-To
Opinion
Book
                                       
Email address

Copyright © 2000-2006, George Shaffer. Terms and Conditions of Use.