{"id":28722937,"url":"https://github.com/buehler/mcs-sec-priv-comp","last_synced_at":"2026-02-03T18:32:17.051Z","repository":{"id":295574908,"uuid":"917899994","full_name":"buehler/mcs-sec-priv-comp","owner":"buehler","description":"Coursework for Secure and Private Computing @ HSG MCS","archived":false,"fork":false,"pushed_at":"2025-05-26T08:28:20.000Z","size":604,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-09T04:17:01.318Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TeX","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/buehler.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-01-16T21:16:32.000Z","updated_at":"2025-05-26T08:28:23.000Z","dependencies_parsed_at":"2025-05-26T10:09:30.682Z","dependency_job_id":null,"html_url":"https://github.com/buehler/mcs-sec-priv-comp","commit_stats":null,"previous_names":["buehler/mcs-sec-priv-comp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/buehler/mcs-sec-priv-comp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buehler%2Fmcs-sec-priv-comp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buehler%2Fmcs-sec-priv-comp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buehler%2Fmcs-sec-priv-comp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buehler%2Fmcs-sec-priv-comp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/buehler","download_url":"https://codeload.github.com/buehler/mcs-sec-priv-comp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buehler%2Fmcs-sec-priv-comp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259949677,"owners_count":22936412,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-15T09:10:06.788Z","updated_at":"2026-02-03T18:32:12.027Z","avatar_url":"https://github.com/buehler.png","language":"TeX","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Secure and Private Computing — Fuzzy PSI Implementation\n\nThis repository contains coursework for the \"Secure and Private Computing\" course at HSG MCS. It implements and explores the protocol from the 2024 paper by Richardson et al., \"Fuzzy PSI via Oblivious Protocol Routing\".\n\n## Paper and Protocol Overview\n\nThe referenced paper introduces a novel framework for **fuzzy Private Set Intersection (PSI)**, enabling two parties to compute the intersection of their sets with approximate (not just exact) matches, according to a public distance metric and threshold. The protocol achieves high efficiency and flexibility, supporting arbitrary distance metrics (such as $\\ell_1$, $\\ell_2$, and $\\ell_\\infty$) and significantly reducing communication complexity compared to previous approaches.\n\nKey innovations include:\n\n- **Oblivious protocol routing**: Securely routes protocol messages using conditionally-overlapping hash functions, ensuring that similar items are mapped to at least one common bin.\n- **Oblivious Key-Value Stores (OKVS)**: Used to encode and decode protocol messages tied to bins, hiding the structure of the keys and supporting efficient, privacy-preserving message routing.\n- **Secure proximity subprotocols**: Intended to use Yao's garbled circuits to securely test whether two items are \"close enough\" without revealing their actual values.\n\n## Implementation Summary\n\nThis implementation provides two versions of the OKVS:\n\n- **Lagrange Polynomial OKVS**: Information-theoretically optimal but extremely slow for large sets, as it relies on polynomial interpolation.\n- **Random Binary Matrix (RB-OKVS)**: Much more efficient and scalable, but not information-theoretically optimal. The code was adapted from an older, unmaintained repository and updated for modern Rust.\n\nThe protocol logic follows the high-level structure of the paper, including hashing, binning, OKVS encoding, and proximity testing.\n\n### Trade-offs and Security Note\n\n**This implementation does not include actual secure proximity subprotocols (garbled circuits)**, as no suitable Rust library was available and implementing them from scratch was out of scope. Instead, a non-secure placeholder is used: the actual points are shared between parties for testing and benchmarking. This means the protocol is **not secure** and should not be used in practice.\n\nBenchmarks are provided for the OKVS components, demonstrating the trade-off between theoretical optimality (Lagrange) and practical efficiency (RB-OKVS).\n\n## References\n\n- Richardson, D., et al. (2024). \"Fuzzy PSI via Oblivious Protocol Routing.\"\n- [Report and Results](report.pdf)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuehler%2Fmcs-sec-priv-comp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbuehler%2Fmcs-sec-priv-comp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuehler%2Fmcs-sec-priv-comp/lists"}