Phishing with Rachna Dhamija
The human factor
DSS adds a trusted window in the browser dedicated to username and password entry. The user chooses a photographic image (or is assigned a random image), which is overlaid across the window and text entry boxes. If the window displays the user's personal image, it is safe for the user to enter his password.
We also propose a way for the server to generate a unique abstract image for each user and each transaction. This image is used to create a "skin" that automatically customises the browser window or the user interface elements in the content of a webpage. The user's browser can independently reach the same image that it expects to receive from the server. To verify the server, the user only has to visually verify that the images match. With DSS, the user has to recognise only one image and remember one password, no matter how many servers he interacts with. In contrast, other shared secret schemes require users to save a different image with each server.
How did you have the intuition to use computer generated graphics to help users recognise valid websites from fake ones?
There are two types of images that can be used in this approach. The first is real images (photographs). This is the secret image that users must choose when setting up their browser and then recognise before entering their password. There is large body of cognitive science literature that shows that humans are very good recognising images they have seen before. Our user studies showed that participants really enjoyed this recognition task, especially if they could choose their own images.
We also experimented with randomly generated images. In previous work, we proposed using the Random Art algorithm as a way to automatically generate images for a graphical password scheme call Deja Vu (which I developed with Adrain Perrig). Random Art has a nice property that it takes a bit string as input and generates a random abstract image. Given the image, it should be hard to determine the input string.
With security skins, we were trying to solve not user authentication, but the reverse problem - server authentication. I was looking for a way to convey to a user that his client and the server had successfully negotiated a protocol, that they have mutually authenticated each other and agreed on the same key. One way to do this would be to display a message like "Server X is authenticated", or to display a binary indicator, like a closed or open lock. The problem is that any static indicator can be easily copied by an attacker. Instead, we allow the server and the user's browser to each generate an abstract image. If the authentication is successful, the two images will match. This image can change with each authentication. If it is captured, it can't be replayed by an attacker and it won't reveal anything useful about the user's password.
When do you plan to release the securityskins plugin?
Currently, we have a prototype of the interface developed in Mozilla XUL, which we are improving based on feedback from our studies. Mozilla turned out to be a good prototyping tool, and allows us to rapidly iterate through interface ideas. A number of organisations have expressed interest in adopting security skins, and we have started development of an extension that can be released to the public. So stay tuned!
Should we expect to solve the problem just working on one level, either human or technological?
No, I think the solution to phishing will require advances on both levels. However, our study suggests that a different approach is needed in the design of security systems. Rather than approaching the problem solely from a traditional cryptography-based framework (what can we secure?), we have to take into account what humans do well and what they do not do well.
Do you think that so-called Web 2.0 features (Ajax in particular) could make the situation worse by providing phishers with the ability to launch complex applications from a web page?
This article originally appeared in Security Focus.
Copyright © 2006, SecurityFocus
Federico Biancuzzi is freelancer; in addition to SecurityFocus he also writes for ONLamp, LinuxDevCenter, and NewsForge.