-
Notifications
You must be signed in to change notification settings - Fork 3
Home
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.
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.
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
Copyright 2016 Stephane M. Catala
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and Limitations under the License.