The present disclosure generally relates to information processing and, in particular, storing user data on servers.
Many service providers (e.g., cloud computing services, data sync services, file hosting services, etc.) enable user data to be stored at one or more servers. For example, an application synchronization service may allow a user to sync one or more applications so that user data associated with one application on one client system may be transferred and used on another application on another client system. Synchronization of the applications on the two systems may be achieved by storing user data on a data storage server.
In order to protect user data and the privacy of users, software on a first client system may generate an encryption key based on a passphrase (e.g., the user's password or another user supplied string) and encrypt the user data using the encryption key before it is transmitted to a data storage server to be stored. The user may download the encrypted data from the data storage server on a second client system. However, in order to access the encrypted data on the second client system, the second client system must have access to a key to decrypt the encrypted data. In some cases, the second client system may generate a key using the same user provided passphrase or password and decrypt the encrypted data using the key. However, the user may not be able to generate the key to decrypt the encrypted user data if the user forgets the passphrase (or if the user changes his password).