crypt_blowfish
Posted Feb 9, 2006 8:56 UTC (Thu) by
anselm (subscriber, #2796)
Parent article:
crypt_blowfish
Minor nit: The »salt« parameter to crypt() isn't used to foil
hardware-based attempts to crack the encryption, but to introduce
variation in the results. Without the salt, if users A and B by chance
selected the same password, user A could notice in /etc/passwd that her
encrypted password was the same as B's, and log in as B (remember that
shadow passwords hadn't been invented yet). With the salt,
every plain-text password is hashed to one of 4096 possible encrypted
forms, with the chances of a collision being that much lower. The second
benefit is that, for an attack based on a dictionary of pre-encrypted
passwords, the dictionary must be
4096 times larger, which is significant if your machine is a PDP-11 with
the amount of disk space usual in the late 70s/early 80s.
The hardware-based cracking engine problem was addressed by modifying the
actual algorithm used by crypt() enough for it to be quite like DES but
different enough from what the DES chips implement, so that coming up
with a crypt() cracker was no longer economically viable owing to
the custom chips required.
Anselm
(
Log in to post comments)