Firefox OS Data Sync
Firefox Cloud
WIP!
Overview
At a high level, the Firefox Cloud project aims to create a service to allow the creation of rich cloud-enabled web applications that sync their data to a user chosen remote storage.
The product
The product vision is built on top of three major concepts fully aligned with Mozilla's mission.
- User choice
Firefox Cloud should offer to users the ability to decide where they want to store their data. On currently existing platforms users are tied to a specific storage: on iOS people are tied to iCloud, on Android, to Google Drive, etc. We want to give users the ability to choose the cloud storage provider they want. Ideally, we want to also be able to give them the choice to use self hosted storage like ownCloud. But this is still under discussion. Mozilla might also provide cloud storage space for users as one of these choices, but this is also still to be decided.
- User privacy
In order to ensure that the data that the user sends to the cloud is protected and no one else other than the user can read it, the Firefox Cloud client solution should allow users to opt-in to encrypt the data on the client side and store it encrypted on the cloud storage provider selected by the user. Not even Mozilla should be able to read this data or store it unencrypted. All the encryption and decryption should happen on the client side.
- User identity
We want to use Firefox Accounts as the authentication mechanism for this service. Once the user links their chosen cloud storage provider credentials to her Firefox Cloud account, all that she needs to authenticate on new devices accessing her Firefox Cloud account is her Firefox Accounts credentials.
Use cases
Messages
Contacts
Application settings
Media files
Backup
The solution
Authentication
Firefox Accounts will be the authentication mechanism used by Firefox Cloud. Using Firefox Accounts should enable us to do the data encryption in the client without worrying about storing any private key or secret in the clients. We can obtain a key derived from the user's Firefox Accounts and encrypt the local data on the fly before sending it to the cloud. The authentication keys for the remote storages that the user chooses to use will be stored in the Firefox Cloud server also encrypted with a symmetric key that the client will provide on every sync request. That way if the Firefox Cloud server is compromised, the attacker won't get access to the remote storage accounts.
Documents vs Files
Service
Client
Javascript library
Requirements
- Offline first.
- Avoid enforcing another client storage solution.
- Avoid data duplication.
- It should be cross browser.