Skip to content

Latest commit

 

History

History
13 lines (7 loc) · 2.03 KB

README.md

File metadata and controls

13 lines (7 loc) · 2.03 KB

SCUBA Client Libraries

SCUBA provides a general programming and communication model for applications that fit a client-based architecture. Fitting applications are those in which that amount of data can fit on a single device, computation over data is relatively minimal, and data is shared across a relatively small number of devices. Examples of this are: health-tracking applications (e.g. period trackers), small-scale social media, games (e.g. chess), and IoT applications (e.g. smart light switches).

This repository consists of the SCUBA core client library, SCUBA data abstraction layers (providing single-key and transactional consistency guarantees on top of a key-value store), and command-line SCUBA applications.

The SCUBA server routes and orders all encrypted operations in the system, enabling offline communication and client validation of a host of consistency models.

The core client library establishes end-to-end double ratchet encryption, server communication, and mechanisms for detecting consistency violations in a Byzantine setting. Notably, the core library is entirely application-agnostic, and applications can either communicate with it directly or through a relevant data abstraction layer.

The data abstraction layers provide various consistency, data model, and access control abstractions to applications, illustrating how SCUBA can support a variety of application needs.

Finally, the applications demonstrate how SCUBA-based applications can focus on implementing application-specific logic, since cross-device communication, consistency guarantees, access control, and encryption are all handled by the underlying libraries.