On June 23, Jakob Nielsen posted an article declaring that password masking on the user interface is more harmful in terms of usability than helpful to the security of an application to which Bruce Schneier, in a June 26 blog post agreed. Both argued that masking the characters when a user enters a password is of little security value and may even be harmful to the usability of an application. I personally believe that displaying password entries in clear text has more detrimental implications to security than lowering the difficulty of shoulder surfing.
I readily agree that a seasoned criminal will focus his/her shoulder-surfing efforts on a user’s keyboard than on his/her screen. For an attacker with keyboard-side access, password masking has zero value anyway. However, I think Bruce underplayed the prevalence of possible daily shoulder-surfing activities such as providing IT support to a user, stopping by a colleague’s workstation to review a document, polishing a presentation while on an airplane, or turning on a computer for children who aren’t entitled to unsupervised access. It is also worth considering that there may be situations where it would be inappropriate to ask your current shoulder-buddy (the CEO or your grandmother, you choose) to look away while you enter a password.
There are some small security advantages that password masking does offer. For example, unskilled attackers will be looking at the screen when you start entering your password. By the time they realize their mistake, they will only see *** and have already missed a good portion of your password. (Hopefully, knowing the end of your password won’t help them decode the beginning.) Password masking also encourages frequent users of a service to memorize their passwords. I have many passwords that I could not tell you no matter how hard I tried. My fingers know them or I may know a mnemonic but the keystrokes are the only thing I retain. This is not as helpful for more casual users though.
My main objection to the demise of password masking is the message that it sends to casual users. We enter a case of do-as-I-say-not-as-I-do. How can we ask our users to secure their password reminders if the entire password appears clear as day on the screen every time they enter it? Masking a password sends the message to the user that it is important that they not share their passwords, that they should not even show these to you, reinforcing the never-give-out-your-password tenet. In many cases, masking discourages copying and pasting passwords though only through naïveté (see here for a laugh).
The usability concern is indeed valid. The question becomes this, Where do we draw the line between security and usability? In my opinion, masking is a valid layer of security, though easily breached, it does raise barriers to entry even if only by a small margin. These barriers are also larger for the casual user. The more slowly a password is entered, the more time it would be on the screen, if unmasked. More importantly, it sends a firm message to users that their passwords should be protected.
Also, let’s not forget the principle of minimum astonishment—how many times would you have to use an application before you notice that your password is now being displayed on-screen in clear text? One possible compromise would be to provide a configuration option. However, this would not be friendly to a casual user who needs it most. I encourage application developers to seek out other usability accommodations (e.g., two-factor options, biometrics) before globally unmasking passwords.