Skip to content
S. M. Catala edited this page May 30, 2016 · 9 revisions

Cryptobox

version 1.0.0

introduction

what is a cryptobox?

a cryptobox is a zero-knowledge, offline-first, replicating, distributed document storage. cryptobox runs in user-agents such as browsers, desktop, mobile or node apps. cryptobox allows to transparently store, retrieve, synchronize and share documents between cryptobox user-agents in all confidentiality at the sole discretion of its user.

cryptobox is a zero-knowledge open-source solution. it is transparently specified to ensure that only the user can access the documents stored in a cryptobox. confidentiality relies on systematic on-the-fly offline encryption of documents, before any form of storage, replication, or sharing, anywhere off- or online. to ensure zero-knowledge, cryptobox builds on an efficient, multi-layer encryption key scheme, locked by both a single, simple but securely hashed password that is never stored anywhere nor transmitted online, and a secret key unique to each authorized user-agent kept offline at all times. this scheme ensures that only a user with access to both an authorized user-agent and to the main password can decrypt the documents stored in the cryptobox. it also provides the required flexibility for simple handling of access-control and document sharing.

cryptobox is offline-first: documents are always available, whether user-agents are off- or online. replication (synchronization) between user-agents runs transparently when online.

content

this document currently specifies the cryptobox administration server endpoints and corresponding cryptobox interaction:

  • this introduction includes a brief overview of the cryptobox architecture,
  • Threat Model reviews the threat model assumptions and provides a list of necessary but not sufficient prerequisites
  • Architecture reviews the key elements of the cryptobox architecture, and explains how these help mitigate identified threats.
  • REST API describes the endpoints, allowed methods and responses of the administration server API
  • Protocol details the procedures for registering new accounts and new user agents.
  • Javascript API details the Javascript software interface for creating, retrieving and interacting with a cryptobox.

architecture overview

a cryptobox system is composed of cryptobox user-agents, a cryptobox administration server, and a CouchDB instance (or cluster)

  • documents are stored offline in an in-app PouchDB instance running in the cryptobox user-agent (front-end storage)
  • the in-app PouchDB instances replicate and synchronize themselves over a backend CouchDB instance (or cluster)
  • an administration server provides a thin REST API for database administration tasks on the CouchDB instance. the cryptobox user-agents access this API for registration and management of databases.

the system is specified to ensure that user-agents have exclusive control over it.

layer user-agent data user-agent control network link server
cryptobox API reactive API user account and user-agent registration and access control; management of encryption and storage layers thin REST API
encryption openpgp openpgp keyring (n/a) nodejs
storage & sync PouchDB replication CouchDB (*)

(*): note that the CouchDB instance could also run on another server, or even be a cluster spread over a number of other servers

Clone this wiki locally