I want to provide a user with remote contact list (address book) that they can access and update from arbitrary clients on multiple devices. But I want to have zero knowledge of those contacts. Existing mechanisms (eg XMPP roster, CardDAV) store these details in the clear. Is there an existing mechanism for client-side encryption/decryption of an address book?
Notes (including security model):
The address book will be potentially be used by a variety of clients (XMPP, email, VoIP), so I am open to any mechanism/format.
I assume contacts could still be inferred from the routing logs of XMPP/email/other services. The server would need to be trusted on this anyway, so this is acceptable. It's the "permanent" storage of the full list of contact details that I'm wanting to address here.