An implementation of an auditable key directory (also known as a verifiable registry or authenticated dictionary).
Auditable key directories can be used to help provide key transparency for end-to-end encrypted messaging.
This library provides a stateless API for an auditable key directory, meaning that a consumer of this library must provide their own solution for the storage of the entries of the directory.
Add the following line to the dependencies of your
akd = "0.11"
Minimum Supported Rust Version
Rust 1.51 or higher.
Top-Level Directory Organization
||✓||Main implementation of AKD which a service provider that manages the underlying directory would need to run. A good starting point for diving into this implementation.|
||✓||Minimal library consisting of core operations in AKD.|
||Contains various examples for using AKD, along with utilities such as locally verifying audit proofs that are produced by WhatsApp's key transparency deployment. More details are contained here.|
||Used for running the code coverage pipeline.|
This library was audited by NCC Group in August of 2023. The audit was sponsored by Meta for its use in WhatsApp's key transparency deployment.
The audit found issues in release
v0.9.0, and the fixes were subsequently incorporated into release
v0.11.0. See the full audit report here.
The original authors of this code are Evan Au (@afterdusk), Alex Chernyak (@alexme22), Dillon George (@dillonrg), Sean Lawlor (@slawlor), Kevin Lewi (@kevinlewi), Jasleen Malvai (@jasleen1), and Ercan Ozturk (@eozturk1). To learn more about contributing to this project, see this document.