GitShow/facebook/akd
facebook

akd

An implementation of an auditable key directory

by facebook
Star on GitHubFork

Rust

329 stars77 forks17 contributorsActive · 1w agoSince 2021v0.13.0Apache-2.0

Meet the team

See all 17 on GitHub →
slawlor
slawlor192 contributions
kevinlewi
kevinlewi101 contributions
afterdusk
afterdusk49 contributions
Jasleen1
Jasleen126 contributions
dependabot[bot]Bot
dependabot[bot]14 contributions
dillongeorge
dillongeorge14 contributions
eozturk1
eozturk113 contributions
asonnino
asonnino3 contributions

Languages

View on GitHub →
Rust100%

Commit activity

Last 12 weeks · 5 commits

Full graph →

Community health

4 of 6 standards met

Community profile →
75
✓README✓License✓Contributing✓Code of Conduct○Issue Template○PR Template

Recent PRs & issues

Active · 6 in progress · Last activity 1w ago
See all on GitHub →
rootkiller6788
Make curve25519-dalek and ed25519-dalek required in akd_coreOpenPR

Summary Fixes #493. and are marked in , enabled only by the feature. However, the module is declared unconditionally in () and uses VRF types unconditionally, so no code path actually gates the use of these crates. Because is not part of , the crate does not compile in that configuration: Changes : make and required dependencies. The feature becomes an empty no-op kept for backwards compatibility with crates that enable (e.g. the crate). : un-gate the variant and its impl, which the verification code always uses. Testing Verified locally: (previously failed, now passes) (default features) (42 passed) (106 passed)

rootkiller6788 · 2d ago
kevinlewi
Add akd_traits crate with KeyDirectory traitOpenPR

Summary Introduces crate as the leaf dependency defining the abstract trait for any key directory implementation Moves core types (, , , , ) into , with backward-compatible aliases (, ) in Inverts the dependency graph: (leaf) → → Implements for Adds generic benchmarking harness ( trait + Criterion benchmarks) Adds scaling benchmark CLI () with database caching, sweep mode, and table/CSV/JSON output

kevinlewi · 5d ago
souragc
Non-optional dependency marked as optionalOpenIssue

is a required dependency but is marked as optional in the manifest file. No attributes are gating the path to its usage. Cargo.toml The use chain is: lib.rs -> ecvrf/mod.rs -> ecvrf/ecvrf_impl.rs lib.rs ecvrf/mod.rs ecvrf/ecvrf_impl.rs

souragc · 3w ago

Recent fixes

View closed PRs →
kevinlewi
Publishing v0.13.0MergedPR
kevinlewi · 1w ago
kevinlewi
Fix auditor append-only bypass in batch node insertionMergedPR

Fixes an append-only bypass in the AKD auditor. Problem The auditor verifies an epoch transition by inserting a proof's , then its nodes, checking each against the start/end root hash. This relies on re-inserting an unchanged node being a no-op. But silently drops any node whose label is not strictly beneath the pivot, so an unchanged interior node whose label is a strict prefix of an inserted leaf has its committed value discarded. A malicious server can exploit this to rewrite an existing label's value while still producing a valid append-only proof, defeating the auditor's append-only guarantee. Fix Enforce that no committed value is dropped during an batch insert, turning the silent drop into a verification error. The check is count-based (every input element must land in the left or right subtree), so it catches a drop regardless of label shape, with a narrow carve-out for the single element that legitimately becomes a leaf. Scoped to ; the directory publish path inserts full-length leaves only and is unaffected. Tests (auditor.rs) — reproduces the bypass end-to-end through : both membership proofs verify against their respective roots with , and the transition must now be rejected. (append_only_zks.rs) — exercises the guard directly: strict-prefix collision, duplicate-label collision, plus a positive control confirming disjoint leaves still insert cleanly. Both verified to fail without the guard and pass with it, under both and configurations. Full lib suite green (106 tests). Reported by @sanjit-bhat

kevinlewi · 1w ago
kevinlewi
Fix clippy lints introduced by Rust 1.97MergedPR

As titled

kevinlewi · 1w ago
Structured data for AI agents

Repository: facebook/akd. Description: An implementation of an auditable key directory Stars: 329, Forks: 77. Primary language: Rust. Languages: Rust (100%). License: Apache-2.0. Latest release: v0.13.0 (1w ago). Open PRs: 6, open issues: 19. Last activity: 1w ago. Community health: 75%. Top contributors: slawlor, kevinlewi, afterdusk, Jasleen1, dependabot[bot], dillongeorge, eozturk1, asonnino, davidjattfb, divyatalesra-2001 and others.

·@ofershap

Replace github.com with gitshow.dev