Crypto-boffins propose safer buddy list protocol
Presence services with less privacy risk
One of the attractions of presence in communications services is that you know someone's available before you try to contact them. The flipside is that presence is also inimical to privacy. Now, a group of researchers has put forward a way to improve privacy of “buddy lists” but still allowing friends to know each others' presence.
Outlined in this paper, the presence system, referred to as DP5, has been developed by boffins from the University of Illinois, University College London, and the University of Waterloo in Canada.
DP5 proposes a mechanism in which users' buddy lists are encrypted but can still be interrogated. As they explain, the system also protects users against having their buddy lists compromised in case of an attack against a service: “While infrastructure services are required for DP5 to operate, they are designed to not require any long-term secrets and provide perfect forward secrecy in case of compromise”.
That's because the encryption of the presence information prevents the service from learning private information like users' lists of friends.
The paper also notes that with the experience of Lavabit and the Snowden revelations as examples, it's probably a good idea for anyone trying to pitch a “secure online messaging” service to avoid collecting privacy-sensitive metadata.
The basis of registering someone as a friend is simple: instead of a central server holding user IDs and building a topology of connections between users, individual users use each others' crypto keys to send, receive, and approve friend connections.
Because the server has to know something about relationships, what's stored in the database is a crypto key indicating a user's “directed friend link”. This, however, is not a permanent record of the link: periodically, each user's client will regenerate the keys the system stores: “Alice picks a random private key … and derives a fresh public key. Then for each of her friends, she derives the shared key for the long-term epoch, and encodes a database entry comprising an identifier, and a ciphertext of her fresh public key.” ®