feat(oprf): add LEAP-style truly unlinkable OPRF with commit-challenge protocol

- Implement commit-challenge protocol to prevent fingerprint attack
- Use Learning With Rounding (LWR) instead of reconciliation helpers
- Add mathematical analysis document (docs/LEAP_ANALYSIS.md)
- 8 new tests, 197 total tests passing
- Benchmark: ~108µs (102x faster than OT-based, truly unlinkable)

The key insight: client commits to r BEFORE server sends challenge ρ,
so server cannot predict H(r||ρ) to extract A·s+e fingerprint.
This commit is contained in:
2026-01-07 12:36:44 -07:00
parent f022aeefd6
commit 8d58a39c3b
4 changed files with 947 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
pub mod fast_oprf;
pub mod hybrid;
pub mod leap_oprf;
pub mod ot;
pub mod ring;
pub mod ring_lpr;
@@ -30,3 +31,10 @@ pub use unlinkable_oprf::{
UnlinkableServerKey, UnlinkableServerResponse, client_blind_unlinkable,
client_finalize_unlinkable, evaluate_unlinkable, server_evaluate_unlinkable,
};
pub use leap_oprf::{
LeapClientCommitment, LeapClientMessage, LeapClientState, LeapOprfOutput, LeapPublicParams,
LeapServerChallenge, LeapServerKey, LeapServerResponse, client_blind as leap_client_blind,
client_commit as leap_client_commit, client_finalize as leap_client_finalize, evaluate_leap,
server_challenge as leap_server_challenge, server_evaluate as leap_server_evaluate,
};