Since a full-fledged brute force attack on a UNIX system is almost
impossible (imagine trying 2**56 different passwords at a login: prompt
without making someone suspicious) the most serious form of real world
attack is a dictionary attack. If you can get a copy of /etc/passwd (not
difficult since it has to be world readable), you start running crypt()
on a list of likely passwords until you find a match. So crypt() adds a
twelve bit number, called a 'salt', to the original password before
encryption. The result is there are 4096 different ways that any given
password can appear in the /etc/passwd file. So to create a 'dictionary'
for the password 'Mary', 4096 values must be stored in the dictionary.
Obviously, shadow passwords make obtaining a copy of /etc/passwd useless,
and /etc/shadow is NOT world readable.
So crypt() is purposefully designed to make a key search computationally
expensive, even more so than standard DES.
Of course, the weak link is password selection and hygiene. If you REALLY
want Alice's password, copy it off the post-it note on her monitor. };->
-- Jeff Simmons jsimmons@goblin.punk.netHey, man, got any spare CPU cycles? Help crack DES. http://www.frii.com/~rcv/deschall.html