
MP-SPDZ में प्रतिकृत गुप्त साझाकरण का उपयोग करते हुए गोपनीयता-संरक्षण करने वाली फेस रिकग्निशन का संदर्भ कार्यान्वयन, जिसमें क्वांटाइज़्ड GhostFaceNet इन्फरेंस, बेंचमार्क और QAT टूलिंग शामिल है।
GhostFaceMPC: Privacy-Preserving Face Recognition with Multi-Party Computation (Davide Carnemolla, Dario Catalano, Mario Di Raimondo — University of Catania) का आधिकारिक कार्यान्वयन। पेपर: Cryptology ePrint Archive, Paper 2026/2499।
GhostFaceMPC, GhostFaceNetV1 (चौड़ाई 1.3, स्ट्राइड 1, ArcFace हेड, MS1MV3 पर प्रशिक्षित) के साथ तीन सर्वरों के बीच MP-SPDZ में replicated secret sharing का उपयोग करके फेस रिकग्निशन चलाता है।
replicated-ring-party) और abort के साथ malicious (ps-rep-ring-party)।यह रिपॉज़िटरी पेपर के प्रयोगों को पुनः उत्पन्न करने के लिए आवश्यक कोड को ठीक उसी रूप में समाहित करती है।
@misc{cryptoeprint:2026/2499,
author = {Davide Carnemolla and Dario Catalano and Mario Di Raimondo},
title = {{GhostFaceMPC}: Privacy-Preserving Face Recognition with Multi-Party Computation},
howpublished = {Cryptology {ePrint} Archive, Paper 2026/2499},
year = {2026},
url = {https://eprint.iacr.org/2026/2499}
}
| पथ | यह क्या है |
|---|---|
src/ghostmpc/ | Python पैकेज और ghostmpc कमांड लाइन |
src/ghostmpc/codegen/ | मॉडल मैनिफ़ेस्ट से MP-SPDZ प्रोग्राम तक का कंपाइलर |
src/ghostmpc/eval/ | क्लियर-टेक्स्ट रिंग ऑरेकल (MPC प्रोग्राम के साथ बिट-एग्ज़ैक्ट) और सटीकता मूल्यांकन |
src/ghostmpc/benchmark/ | तीन-पक्षीय बेंचमार्क हार्नेस और एम्युलेटेड नेटवर्क |
src/ghostmpc/training/ | रिंग-फेथफुल फ़ॉरवर्ड पास पर क्वांटाइज़ेशन-अवेयर ट्रेनिंग |
third_party/patches/ | वे वर्चुअल-मशीन निर्देश जो यह कार्य MP-SPDZ में जोड़ता है |
baselines/ | बेसलाइन: TensorFlow प्लेनटेक्स्ट, साधारण MP-SPDZ, EzPC/Porthos |
run_experiments.sh | एक स्क्रिप्ट जो पेपर के हर प्रयोग को चलाती है |
scripts/ | सेटअप, रूटलेस नेटवर्क एम्युलेशन, तालिका संग्रह |
tests/ | यूनिट टेस्ट (pytest) |
मशीन। x86-64 पर Linux। पेपर में 32-कोर VM (Intel Xeon Gold 6238R) का उपयोग किया गया था और प्रति पक्ष 8 थ्रेड चलाए जाते हैं। सभी तीन सर्वर एक ही होस्ट पर चलते हैं।
Python। Python ≥ 3.10 (3.11 के साथ परीक्षित)।
MP-SPDZ बिल्ड निर्भरताएँ (अपस्ट्रीम सूची):
sudo apt-get install automake build-essential clang cmake git libboost-dev \
libboost-filesystem-dev libboost-iostreams-dev libboost-thread-dev \
libgmp-dev libntl-dev libsodium-dev libssl-dev libtool python3 python3-venv
LAN/WAN एमुलेशन। इसके लिए iproute2 (ip, tc), iputils-ping,
unshare (util-linux) और unprivileged user namespaces की आवश्यकता होती है। स्क्रिप्ट को
root की आवश्यकता नहीं है। Debian/Ubuntu पर: sudo sysctl kernel.unprivileged_userns_clone=1।
केवल Porthos baseline।
libboost-system-devopam install ocamlbuild menhir ocamlfind stdintgit clone --recursive https://github.com/crypto-unict/ghostfacempc.git
cd ghostfacempc
scripts/setup.sh
scripts/setup.sh चार काम करता है:
.venv बनाता है और पैकेज इंस्टॉल करता है। यह tensorflow-cpu,
Pillow, onnx, onnxruntime और onnxsim खींचता है।third_party/MP-SPDZ में MP-SPDZ तैयार करता है:
third_party/patches/ लागू करता है;CONFIG.mine में MY_CFLAGS += -DRING_SIZE=32);replicated-ring-party.x और ps-rep-ring-party.x बनाता है;मॉडल फ़ाइलें artifacts/ में आती हैं:
| फ़ाइल | सामग्री |
|---|---|
GhostFaceNet_W1.3_S1_ArcFace.h5 | float teacher, GhostFaceNets रिलीज़ से |
model/ | क्वांटाइज़्ड ring32/f6/f_w9 मॉडल, इसकी सटीकता रिपोर्ट के साथ |
model-ring64-f16-b0/ | ring64 मैनिफ़ेस्ट जिससे Porthos बेसलाइन एक्सपोर्ट की जाती है |
legacy-scalar-236/ | साधारण MP-SPDZ बेसलाइन का ring64/f20 मैनिफ़ेस्ट |
बंडल इस रिपॉज़िटरी के रिलीज़ एसेट हैं, और प्रत्येक आर्काइव को उसके SHA-256 के
विरुद्ध जाँचा जाता है। ghostmpc fetch-bundles --bundle qat-start वह मैनिफ़ेस्ट भी
डाउनलोड करता है जिससे QAT शुरू होता है (§5 देखें)।
सटीकता प्रयोग और प्लेनटेक्स्ट बेसलाइन पाँच InsightFace मूल्यांकन सेट पढ़ते हैं: LFW, AgeDB-30, CALFW, CPLFW और CFP-FP। InsightFace dataset zoo
के MS1MV3 प्रशिक्षण डेटा के साथ वितरित .bin फ़ाइलों का उपयोग करें
और उन्हें इस प्रकार रखें:
datasets/benchmarks/{lfw,agedb_30,calfw,cplfw,cfp_fp}.bin
scripts/setup.sh उन्हें उन SHA-256 डाइजेस्ट के विरुद्ध सत्यापित करता है जिनका हमने उपयोग किया था। MPC
बेंचमार्क्स को डेटासेट की आवश्यकता नहीं होती: उनका संचार इनपुट मानों पर निर्भर नहीं करता, इसलिए वे संश्लेषित इनपुट्स को सीक्रेट-शेयर करते हैं।
./run_experiments.sh --quick verification # smoke test, about one hour
./run_experiments.sh all # every table of the paper
./run_experiments.sh tables # print the tables measured so far
परिणाम results/ में जाते हैं (प्रति रन एक report.json और summary.csv), और
tables पेपर के लेआउट में results/tables.md लिखता है। लक्ष्यों को
अलग-अलग और किसी भी क्रम में चलाया जा सकता है। जिस रन की रिपोर्ट पहले से मौजूद है, उसे छोड़ दिया जाता है।
| लक्ष्य | पेपर | हमारी मशीन पर रनटाइम (लगभग) |
|---|---|---|
accuracy | तुलना तालिका, accuracy कॉलम | प्रति डेटासेट प्रति कोर 3 घंटे; WORKERS से विभाजित करें |
verification | Face Verification Benchmarks: HbC और M, Co-Host / LAN / Fast-WAN / WAN | ~6 घंटे |
identification | Face Identification Benchmarks: 1:128 closed set, वही ग्रिड | ~6 घंटे |
plaintext | तुलना तालिका, TensorFlow पंक्ति | 1 मिनट |
naive | तुलना तालिका, MP-SPDZ (naive) पंक्ति | कंपाइलेशन सहित ~1 घंटा |
porthos | तुलना तालिका, EzPC (Porthos) पंक्ति | ~5 मिनट बिल्ड + ~1.5 घंटे |
baselines | तीनों बेसलाइन | |
ablation | ablation तालिका: naive बेसलाइन से GhostFaceMPC (HbC, co-host) तक, एक-एक करके अनुकूलन | ~4 घंटे |
एनवायरनमेंट वेरिएबल:
| वेरिएबल | अर्थ | डिफ़ॉल्ट |
|---|---|---|
THREADS | प्रति पार्टी थ्रेड्स | 8 |
NETWORKS | मापने के लिए नेटवर्क | co-host lan fast-wan wan |
WORKERS | accuracy oracle के लिए प्रोसेस | CPUs की संख्या |
POOLS, WARMUPS, TRIALS | पूल डिज़ाइन को ओवरराइड करें | पेपर का |
RESULTS | आउटपुट डायरेक्टरी | results |
--quick एक वार्म-अप और एक मापे गए अनुरोध का एक पूल चलाता है, और
प्रत्येक डेटासेट के पहले 600 जोड़ों पर accuracy।