{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/secemb-sparsity-aware-secure-federated","title":"SecEmb: Sparsity-Aware Secure Federated Learning of On-Device Recommender System with Large Embedding","arxiv_id":"2505.12453","date":"2025-05-18","proceeding":null,"authors":["Peihua Mai","Youlong Ding","Ziyan Lyu","Minxin Du","Yan Pang"],"abstract":"Federated recommender system (FedRec) has emerged as a solution to protect user data through collaborative training techniques. A typical FedRec involves transmitting the full model and entire weight updates between edge devices and the server, causing significant burdens to devices with limited bandwidth and computational power. While the sparsity of embedding updates provides opportunity for payload optimization, existing sparsity-aware federated protocols generally sacrifice privacy for efficiency. A key challenge in designing a secure sparsity-aware efficient protocol is to protect the rated item indices from the server. In this paper, we propose a lossless secure recommender systems on sparse embedding updates (SecEmb). SecEmb reduces user payload while ensuring that the server learns no information about both rated item indices and individual updates except the aggregated model. The protocol consists of two correlated modules: (1) a privacy-preserving embedding retrieval module that allows users to download relevant embeddings from the server, and (2) an update aggregation module that securely aggregates updates at the server. Empirical analysis demonstrates that SecEmb reduces both download and upload communication costs by up to 90x and decreases user-side computation time by up to 70x compared with secure FedRec protocols. Additionally, it offers non-negligible utility advantages compared with lossy message compression methods.","url_abs":"https://arxiv.org/abs/2505.12453v2","url_pdf":"https://arxiv.org/pdf/2505.12453v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"links_only","authors_date_abstract":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license), from the Kaggle arXiv metadata snapshot of 2026-09-12"},"code_links":[{"paper_slug":"secemb-sparsity-aware-secure-federated","repo_url":"https://github.com/nusioraprivacy/secemb","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2505.12453","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2505.12453"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"deterministic:regex_extraction","url":"https://github.com/NusIoraPrivacy/SecEmb","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/nusioraprivacy/secemb","reach":{"status":"ok"}}],"summary":{"ran":2,"ran_draft_wrong":2,"unverified":11},"by_repo_kind":{"official":{"samples":15,"ran":4,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":15,"samples":[{"code_sha256_prefix":"ce79aa7372883b36","entry":"MatrixFactorizationModel","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ce79aa7372883b36"}},{"code_sha256_prefix":"026b40d3e3ca6b2a","entry":"SecEmbFSS","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"none","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"026b40d3e3ca6b2a"}},{"code_sha256_prefix":"3522293c9610a9a9","entry":"_sha256","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3522293c9610a9a9"}},{"code_sha256_prefix":"526c9f3bf09a004c","entry":"_xor_bytes","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"526c9f3bf09a004c"}},{"code_sha256_prefix":"97f3d821f6b19740","entry":"CachedPathState","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"97f3d821f6b19740"}},{"code_sha256_prefix":"e7fe52d9654e0f67","entry":"CoreCorrectionWord","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e7fe52d9654e0f67"}},{"code_sha256_prefix":"9ce10f4c05e8a4b3","entry":"CoreFSSKey","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9ce10f4c05e8a4b3"}},{"code_sha256_prefix":"808b2fd760ccdcfc","entry":"CorePathState","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"808b2fd760ccdcfc"}},{"code_sha256_prefix":"e0ca11e487736672","entry":"DenseState","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e0ca11e487736672"}},{"code_sha256_prefix":"115a81a844007af3","entry":"FSSKey","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"115a81a844007af3"}},{"code_sha256_prefix":"1f8b646f0f392078","entry":"ModelConfig","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1f8b646f0f392078"}},{"code_sha256_prefix":"2049b2111d1f8ddc","entry":"PartialKey","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2049b2111d1f8ddc"}},{"code_sha256_prefix":"99130042382e8a67","entry":"PointFSS","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"99130042382e8a67"}},{"code_sha256_prefix":"ff8bd376214d7b86","entry":"SecEmbServerParty","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ff8bd376214d7b86"}},{"code_sha256_prefix":"c95e58c430c5e5fc","entry":"TrainingConfig","repo":"nusioraprivacy/secemb","repo_kind":"official","path":"src/protocol.py","file_url":"https://github.com/nusioraprivacy/secemb/blob/HEAD/src/protocol.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c95e58c430c5e5fc"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}