{"id":16693993,"url":"https://github.com/myl7/fss","last_synced_at":"2025-08-01T08:37:32.647Z","repository":{"id":179868860,"uuid":"664271801","full_name":"myl7/fss","owner":"myl7","description":"Function secret sharing (FSS) primitives including distributed point functions (DPF) and distributed comparison functions (DCF)","archived":false,"fork":false,"pushed_at":"2025-04-26T22:09:23.000Z","size":935,"stargazers_count":24,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-26T23:19:05.464Z","etag":null,"topics":["crypto","dcf","dpf","fss","mpc"],"latest_commit_sha":null,"homepage":"https://myl7.github.io/fss/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/myl7.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":"2023-07-09T13:07:18.000Z","updated_at":"2025-04-26T22:08:53.000Z","dependencies_parsed_at":"2023-12-02T15:23:49.781Z","dependency_job_id":"d5bd56b4-27ab-465a-9bcd-91cafcc3d261","html_url":"https://github.com/myl7/fss","commit_stats":null,"previous_names":["myl7/dcf","myl7/fss"],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myl7%2Ffss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myl7%2Ffss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myl7%2Ffss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myl7%2Ffss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/myl7","download_url":"https://codeload.github.com/myl7/fss/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253668056,"owners_count":21944969,"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":["crypto","dcf","dpf","fss","mpc"],"created_at":"2024-10-12T16:43:21.875Z","updated_at":"2025-05-12T03:31:41.112Z","avatar_url":"https://github.com/myl7.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fss: FSS primitives including DPF and DCF\n\nFunction secret sharing (FSS) primitives including distributed point functions (DPF) and distributed comparison functions (DCF)\n\n## Preliminaries\n\nFor a function $f$ whose input domain is $\\mathbb{G}^{in}$ and output domain is a [(math) group](\u003chttps://en.wikipedia.org/wiki/Group_(mathematics)\u003e) $\\mathbb{G}^{out}$, FSS is a scheme to secret-share this **function** into $M$ functions $f_b$ for $b \\in [M]$ with **correctness** and **privacy**:\n\n-   **Correctness**: For any input $x \\in \\mathbb{G}^{in}$, $f(x) = \\sum_{b = 1}^{M} f_b(x)$\n-   **Privacy**: For any strict subset of parties $B \\subset [M]$, $\\\\{f_b | b \\in B\\\\}$ reveals no information about $f(x)$\n\nMore formal definitions can be found in the following papers:\n\n-   [Function Secret Sharing for Mixed-Mode and Fixed-Point Secure Computation](https://doi.org/10.1007/978-3-030-77886-6_30)\n-   [Secure Computation with Preprocessing via Function Secret Sharing](https://doi.org/10.1007/978-3-030-36030-6_14)\n-   [Function Secret Sharing: Improvements and Extensions](https://doi.org/10.1145/2976749.2978429)\n-   [Function Secret Sharing](https://doi.org/10.1007/978-3-662-46803-6_12)\n\nAssume that the cardinal (size) of the input domain $N = |\\mathbb{G}^{in}|$, the trivial method for FSS is to secret-share all $N$ mappings $\\\\{x \\rightarrow f(x) | x \\in \\mathbb{G}^{in}\\\\}$, resulting in $O(N)$ communication costs.\nDPF and DCF trade higher computation costs for lower communication costs.\n2-party DPF and DCF result in $O(\\log N)$ communication costs, and 3-or-more-party ones (based on seed homomorphic pseudo-random functions) result in $O(\\sqrt{N})$ communication costs.\n\n## Limitations\n\n-   We use $b \\in \\\\{0\\\\} \\cup [M - 1]$ other than $b \\in [M]$ that is used by the papers, because computer science counts from 0\n-   Currently, this library only implements 2-party DPF and DCF, fixing $M = 2$ and $b \\in \\\\{0, 1\\\\}$\n-   We fix input to be bits and output to be bytes.\n    $\\lambda$ is fixed to be a multiple of 8.\n    However, users can still customize how output bytes as group elements should be computed, e.g., added.\n\n## Licenses\n\nCopyright (C) 2025 Yulong Ming (myl7)\n\nApache License, Version 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyl7%2Ffss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmyl7%2Ffss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyl7%2Ffss/lists"}