In a password-based authentication system, to authenticate a user, a server typically stores password verification data (PVD), which is a value derived from the user’s password using publicly known functions. For those users whose passwords fall within an attacker’s dictionary, their PVDs, if stolen (for example, through server compromise), will allow the attacker to mount off-line dictionary attacks. In this article, we describe a password authentication system that can tolerate server compromises. The described system uses multiple (say n) servers to share password verification data and never reconstructs the shared PVD during user authentications. Only a threshold number (say t, t ≤ n) of these servers are required for a user authentication and compromising up to (t − 1) of these servers will not allow an attacker to mount off-line dictionary attacks, even if a user’s password falls within the attacker’s dictionary. The described system can still function if some of t...