Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
GhostFaceMPC — Implémentation de référence de la reconnaissance faciale préservant la vie privée à l'aide du partage de secret répliqué dans MP-SPDZ, avec inférence quantifiée de GhostFaceNet, benchmarks et outillage QAT. | Kitploit
Outils/GitHubGitHub/crypto-unict/ghostfacempc
CryptographieProtection de la Vie PrivéeApprentissage AutomatiqueArticles et RechercheApprentissage et Éducation
GitHubcrypto-unict/ghostfacempc

GhostFaceMPC

Implémentation de référence de la reconnaissance faciale préservant la vie privée à l'aide du partage de secret répliqué dans MP-SPDZ, avec inférence quantifiée de GhostFaceNet, benchmarks et outillage QAT.

Voir le dépôt
146il y a 7 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

GhostFaceMPC : reconnaissance faciale préservant la vie privée avec calcul multipartite

Implémentation officielle de GhostFaceMPC: Privacy-Preserving Face Recognition with Multi-Party Computation (Davide Carnemolla, Dario Catalano, Mario Di Raimondo — Université de Catane). Article : Cryptology ePrint Archive, Paper 2026/2499.

GhostFaceMPC exécute la reconnaissance faciale avec GhostFaceNetV1 (largeur 1.3, stride 1, tête ArcFace, entraîné sur MS1MV3) entre trois serveurs avec un partage de secret répliqué dans MP-SPDZ.

  • Le client partage secrètement le visage aligné 112×112 : il produit lui-même le partage répliqué, de sorte que les serveurs chargent leurs paires sans rien re-partager. Aucun serveur ne voit jamais l'image, une activation, l'embedding ou la base de données enrôlée.
  • Les paramètres du modèle sont publics, donc chaque couche linéaire est une arithmétique locale secret-par-public avec une réduction en virgule fixe par sortie.
  • Le modèle est quantifié sur un anneau de 32 bits (6 bits fractionnaires, 9 pour les noyaux) par entraînement conscient de la quantification sur l'arithmétique exacte que les serveurs exécutent.
  • Il prend en charge deux profils de sécurité : semi-honnête (replicated-ring-party) et malveillant avec abandon (ps-rep-ring-party).
  • Chaque requête est divisée en une phase hors ligne et une phase en ligne. La phase hors ligne génère le prétraitement indépendant de l'entrée. La phase en ligne est l'inférence elle-même, suivie d'un score de vérification 1:1 ou d'une identification en ensemble fermé 1:N. Aucune des deux phases n'ouvre quoi que ce soit.

Ce dépôt contient exactement le code nécessaire pour reproduire les expériences de l'article.

@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}
}

Contenu

CheminCe que c'est
src/ghostmpc/Package Python et ligne de commande ghostmpc
src/ghostmpc/codegen/compilateur du manifeste de modèle vers un programme MP-SPDZ
src/ghostmpc/eval/oracle en clair sur anneau (bit-exact avec le programme MPC) et évaluation de la précision
src/ghostmpc/benchmark/harnais de benchmark à trois parties et réseaux émulés
src/ghostmpc/training/entraînement avec quantification sur la passe avant fidèle à l'anneau
third_party/patches/les instructions de machine virtuelle que ce travail ajoute à MP-SPDZ
baselines/les références : TensorFlow en clair, MP-SPDZ naïf, EzPC/Porthos
run_experiments.shun script qui exécute toutes les expériences de l'article
scripts/installation, émulation réseau sans privilèges root, collecte des tableaux
tests/tests unitaires (pytest)

1. Prérequis

  • Machine. Linux sur x86-64. L'article a utilisé une VM à 32 cœurs (Intel Xeon Gold 6238R) et exécute 8 threads par partie. Les trois serveurs tournent sur un seul hôte.

  • Python. Python ≥ 3.10 (testé avec 3.11).

  • Dépendances de compilation de MP-SPDZ (liste amont) :

    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
    
  • Émulation LAN/WAN. Nécessite iproute2 (ip, tc), iputils-ping, unshare (util-linux) et les espaces de noms utilisateur non privilégiés. Le script ne nécessite pas root. Sur Debian/Ubuntu : sudo sysctl kernel.unprivileged_userns_clone=1.

  • Porthos baseline uniquement.

    • libboost-system-dev
    • un CPU avec AES-NI
    • OCaml 4.14 via opam, avec opam install ocamlbuild menhir ocamlfind stdint

2. Installation

git clone --recursive https://github.com/crypto-unict/ghostfacempc.git
cd ghostfacempc
scripts/setup.sh

scripts/setup.sh effectue quatre choses :

  1. Crée .venv et installe le paquet. Cela récupère tensorflow-cpu, Pillow, onnx, onnxruntime et onnxsim.
  2. Prépare MP-SPDZ dans third_party/MP-SPDZ :
    • extrait la révision épinglée ;
    • applique third_party/patches/ ;
    • active l'anneau 32 bits (MY_CFLAGS += -DRING_SIZE=32 dans CONFIG.mine) ;
    • compile replicated-ring-party.x et ps-rep-ring-party.x ;
    • génère les certificats TLS des trois parties.
  3. Télécharge les fichiers de modèle (voir le tableau ci-dessous).
  4. Vérifie les jeux de données de référence.

Les fichiers de modèle arrivent dans artifacts/ :

FichierContenu
GhostFaceNet_W1.3_S1_ArcFace.h5enseignant float, issu de la version GhostFaceNets
model/le modèle quantifié ring32/f6/f_w9, avec ses rapports de précision
model-ring64-f16-b0/manifeste ring64 à partir duquel la référence Porthos est exportée
legacy-scalar-236/manifeste ring64/f20 de la référence naïve MP-SPDZ

Les bundles sont des ressources de version de ce dépôt, et chaque archive est vérifiée par rapport à son SHA-256. ghostmpc fetch-bundles --bundle qat-start télécharge également le manifeste à partir duquel QAT démarre (voir §5).

Jeux de données

L'expérience de précision et la référence en clair lisent cinq ensembles d'évaluation InsightFace : LFW, AgeDB-30, CALFW, CPLFW et CFP-FP. Utilisez les fichiers .bin distribués avec les données d'entraînement MS1MV3 du zoo de jeux de données InsightFace et placez-les comme suit :

datasets/benchmarks/{lfw,agedb_30,calfw,cplfw,cfp_fp}.bin

scripts/setup.sh les vérifie par rapport aux empreintes SHA-256 que nous avons utilisées. Les benchmarks MPC n'ont pas besoin des jeux de données : leur communication ne dépend pas des valeurs d'entrée, ils partagent donc en secret des entrées synthétiques.

3. Reproduire les expériences

./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

Les résultats sont écrits dans results/ (un report.json et un summary.csv par exécution), et tables écrit results/tables.md selon la disposition de l'article. Les cibles peuvent être exécutées séparément et dans n'importe quel ordre. Une exécution dont le rapport existe déjà est ignorée.

CibleArticleDurée d'exécution sur notre machine (approx.)
accuracytable de comparaison, colonnes de précision3 h par jeu de données par cœur ; répartir avec WORKERS
verificationFace Verification Benchmarks : HbC et M, Co-Host / LAN / Fast-WAN / WAN~6 h
identificationFace Identification Benchmarks : 1:128 ensemble fermé, même grille~6 h
plaintexttable de comparaison, ligne TensorFlow1 min
naivetable de comparaison, ligne MP-SPDZ (naive)~1 h incluant la compilation
porthostable de comparaison, ligne EzPC (Porthos)~5 min de compilation + ~1,5 h
baselinesles trois baselines
ablationtable d'ablation : les optimisations une à une, de la baseline naive à GhostFaceMPC (HbC, co-host)~4 h

Variables d'environnement :

Télécharger l’outil