Arca is an Python package designed to allow researchers to easily and
rapidly prototype systems that use encrypted search algorithms.
Arca provides simple cryptographic primitives
(which themselves are based on those provided by the Python cryptography
package) and implementations of various structured encryption schemes.
Arca's provided encrypted search algorithms allow researchers to easily swap out different encryption subroutines and serialization algorithms for more fine-tuned experimentation; conversely, they come with reasonable pre-defined defaults if you just want to start immediately working with the structures.
Arca has complete type annotations and passes all strict static type checks provided by the MyPy type checker.
Note: Arca is provided as-is for easy-to-use, rapid prototyping and research. Several portions of this library implement cryptographic primitives that have not been reviewed by a third-party and are not recommended for use in a production environment.
Several different classes of encrypted search algorithms have been implemented in the Arca library:
-
Encrypted multimaps. Arca provides several response-revealing and response-hiding implementations of basic encrypted multimap schemes [CJJJKRS14] in the
arca.ste.emm
module. -
Encrypted dictionaries. Arca provides a simple encrypted dictionary scheme in the
arca.ste.edx
module. -
Encrypted aggregate range query indexes. Arca provides several schemes for computing encrypted aggregate range query indexes via an implementation of the ARQ framework from [EMT22]. Using ARQ, structures from the plaintext data management community may be easily unified with existing structured encryption primitives to produce schemes with provable leakage profiles and security guarantees. The ARQ framework may also be used to derive equivalent schemes to those presented in [DPPDGP18].
More details about the above schemes are provided in the documentation (to be released).
If you use this library (and/or its associated documentation) in your research work, please cite the following paper:
@article{EMT22,
author = {Zachary Espiritu and
Evangelia Anna Markatou and
Roberto Tamassia},
title = {Time- and Space-Efficient Aggregate Range Queries over Encrypted Databases},
journal = {Proceedings on Privacy Enhancing Technologies},
number = {2022.4},
volume = {2022},
year = {2022},
note = {To appear},
}
If you want a citation specifically to our software, you can use the following citations (but we request that you still cite the above paper):
@software{Arca,
author = {Zachary Espiritu},
license = {Apache-2.0},
title = {Arca},
url = {https://github.com/cloudsecuritygroup/arca},
}
All code in this repository is provided as-is under the Apache License 2.0. See
LICENSE
for full
license text.