Shadow password
From Wikipedia, the free encyclopedia
The process of shadowing passwords is used to increase the security level of passwords on Unix systems, by hiding the encrypted passwords from ordinary users.
On a system without shadowed passwords, /etc/passwd holds the following user information:
- Username
- Salt and hashed password
- Password expiration information
- User ID (UID)
- Default group ID (GID)
- Full name
- Home directory path
- Login shell
The file is world-readable (meaning that all users can read it), but only writeable by root. This means that an attacker can obtain the hashed form of the user's password. The hashed password is useful to an attacker because it allows a relatively fast way to test guessed passwords. Once the hashed password is obtained, an attacker can mount a brute force attack offline, without alerting system security modules designed to detect some number of failed login attempts. Most users select passwords that are vulnerable to such password cracking techniques.
Shadowing passwords stores users' hashed passwords in a different file, usually /etc/shadow on Linux systems, or /etc/master.passwd on BSD systems, which can be read only by root. Virtually all modern Linux distributions use shadowed passwords. This makes stealing passwords more difficult, as root access is required to find the hashed password. This was considered sufficient protection because a user with root permissions can find this or any data by other means, as he or she can examine the entire system, and could even subvert the passwd program to capture plaintext passwords. Unfortunately, some network authentication schemes operate by transmitting the encrypted password over the network, often making the data vulnerable to interception. Additionally, alternate copies of system data, such as system backups written to tape or optical media, become an alternate means for illicitly obtaining hashed passwords. The current trend in password security is making use of cryptographically stronger password hashes.
When passwords are shadowed, the /etc/passwd file shows 'x', or another character, instead of the password.
On a system with shadowed passwords, /etc/shadow holds the following user information:
- User login name
- Encrypted password
- Days since Epoch of last password change
- Days until change allowed
- Days before change required
- Days warning for expiration
- Days before account inactive
- Days since Epoch when account expires
- Reserved
While the hashed password is the most important information in the shadow file, the file usually contains other fields as well, such as the last time the password was changed, when the password will expire, whether the account is disabled, etc. The format of the shadow file is simple and is basically identical to that of the password file -- There is one line per user, with ordered fields on each line, and with the fields separated by colons. Many systems specify that the order of user lines in the shadow file should be identical to the order of the corresponding users in the password file.
[edit] History
Password shadowing was introduced in UNIX systems with the release of System V Release 3.2 and BSD4.3 Reno. Vendors which had performed ports from earlier UNIX releases did not include the new password shadowing features, leaving users of those systems exposed to password file attacks.
In 1987 the author of the original Linux Shadow Password Suite, Julie Haugh, experienced a computer breakin and wrote the initial release of the Shadow Suite containing just the login, passwd and su commands. The original release was written for the SCO Xenix operating system, but was quickly ported to other platforms. The Shadow Suite was ported to Linux in 1992 and became a part of many early distributions.