Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
GhostFaceMPC — Implementación de referencia del reconocimiento facial con preservación de la privacidad mediante secret sharing replicado en MP-SPDZ, con inferencia cuantizada de GhostFaceNet, benchmarks y herramientas de QAT. | Kitploit
Herramientas/GitHubGitHub/crypto-unict/ghostfacempc
CriptografíaPrivacidadAprendizaje AutomáticoPapers e InvestigaciónAprendizaje y Educación
GitHubcrypto-unict/ghostfacempc

GhostFaceMPC

Implementación de referencia del reconocimiento facial con preservación de la privacidad mediante secret sharing replicado en MP-SPDZ, con inferencia cuantizada de GhostFaceNet, benchmarks y herramientas de QAT.

Ver Repositorio
146hace 7 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

GhostFaceMPC: Reconocimiento facial con preservación de la privacidad mediante computación multiparte

Implementación oficial de GhostFaceMPC: Privacy-Preserving Face Recognition with Multi-Party Computation (Davide Carnemolla, Dario Catalano, Mario Di Raimondo — Universidad de Catania). Artículo: Cryptology ePrint Archive, Paper 2026/2499.

GhostFaceMPC ejecuta el reconocimiento facial con GhostFaceNetV1 (ancho 1.3, stride 1, cabeza ArcFace, entrenado con MS1MV3) entre tres servidores con replicated secret sharing en MP-SPDZ.

  • El cliente comparte en secreto la cara alineada de 112×112: produce él mismo el reparto replicado, de modo que los servidores cargan sus pares sin volver a compartir nada. Ningún servidor llega a ver la imagen, una activación, el embedding ni la base de datos de inscritos.
  • Los parámetros del modelo son públicos, por lo que cada capa lineal es aritmética local secreto-por-público con una reducción de punto fijo por salida.
  • El modelo se cuantiza a un anillo de 32 bits (6 bits fraccionarios, 9 para los kernels) mediante entrenamiento consciente de la cuantización sobre la aritmética exacta que ejecutan los servidores.
  • Admite dos perfiles de seguridad: semihonesto (replicated-ring-party) y malicioso con aborto (ps-rep-ring-party).
  • Cada solicitud se divide en una fase offline y una fase online. La fase offline genera el preprocesamiento independiente de la entrada. La fase online es la propia inferencia, seguida de una puntuación de verificación 1:1 o de una identificación de conjunto cerrado 1:N. Ninguna de las dos fases revela nada.

Este repositorio contiene exactamente el código necesario para reproducir los experimentos del artículo.

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

Contenido

RutaQué es
src/ghostmpc/Paquete de Python y línea de comandos ghostmpc
src/ghostmpc/codegen/compilador del manifiesto del modelo a un programa MP-SPDZ
src/ghostmpc/eval/oráculo de anillo en texto claro (bit-exacto con el programa MPC) y evaluación de precisión
src/ghostmpc/benchmark/arnés de benchmark de tres partes y redes emuladas
src/ghostmpc/training/entrenamiento con cuantización consciente sobre el paso hacia adelante fiel al anillo
third_party/patches/las instrucciones de máquina virtual que este trabajo añade a MP-SPDZ
baselines/las líneas base: TensorFlow en texto claro, MP-SPDZ ingenuo, EzPC/Porthos
run_experiments.shun único script que ejecuta todos los experimentos del artículo
scripts/configuración, emulación de red sin root, recopilación de tablas
tests/pruebas unitarias (pytest)

1. Requisitos

  • Máquina. Linux sobre x86-64. El artículo utilizó una VM de 32 núcleos (Intel Xeon Gold 6238R) y ejecuta 8 hilos por parte. Los tres servidores se ejecutan en un solo host.

  • Python. Python ≥ 3.10 (probado con 3.11).

  • Dependencias de compilación de MP-SPDZ (lista upstream):

    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
    
  • Emulación LAN/WAN. Requiere iproute2 (ip, tc), iputils-ping, unshare (util-linux) y namespaces de usuario sin privilegios. El script no necesita root. En Debian/Ubuntu: sudo sysctl kernel.unprivileged_userns_clone=1.

  • Solo la línea base de Porthos.

    • libboost-system-dev
    • una CPU con AES-NI
    • OCaml 4.14 mediante opam, con opam install ocamlbuild menhir ocamlfind stdint

2. Configuración

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

scripts/setup.sh hace cuatro cosas:

  1. Crea .venv e instala el paquete. Esto descarga tensorflow-cpu, Pillow, onnx, onnxruntime y onnxsim.
  2. Prepara MP-SPDZ en third_party/MP-SPDZ:
    • hace checkout de la revisión fijada;
    • aplica third_party/patches/;
    • habilita el anillo de 32 bits (MY_CFLAGS += -DRING_SIZE=32 en CONFIG.mine);
    • compila replicated-ring-party.x y ps-rep-ring-party.x;
    • genera los certificados TLS de las tres partes.
  3. Descarga los archivos del modelo (véase la tabla a continuación).
  4. Verifica los conjuntos de datos de referencia.

Los archivos del modelo se colocan en artifacts/:

ArchivoContenido
GhostFaceNet_W1.3_S1_ArcFace.h5teacher en coma flotante, de la release de GhostFaceNets
model/el modelo cuantizado ring32/f6/f_w9, con sus informes de precisión
model-ring64-f16-b0/manifiesto ring64 del que se exporta la línea base de Porthos
legacy-scalar-236/manifiesto ring64/f20 de la línea base ingenua de MP-SPDZ

Los bundles son assets de release de este repositorio, y cada archivo se verifica contra su SHA-256. ghostmpc fetch-bundles --bundle qat-start también descarga el manifiesto desde el que arranca QAT (véase §5).

Conjuntos de datos

El experimento de precisión y la línea base en texto plano leen cinco conjuntos de evaluación de InsightFace: LFW, AgeDB-30, CALFW, CPLFW y CFP-FP. Utilice los archivos .bin distribuidos con los datos de entrenamiento MS1MV3 del zoo de conjuntos de datos de InsightFace y colóquelos como:

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

scripts/setup.sh los verifica contra los digests SHA-256 que utilizamos. Los benchmarks de MPC no necesitan los conjuntos de datos: su comunicación no depende de los valores de entrada, por lo que comparten de forma secreta entradas sintéticas.

3. Reproducción de los experimentos

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

Los resultados van a results/ (un report.json y un summary.csv por ejecución), y tables escribe results/tables.md con el diseño del artículo. Los objetivos se pueden ejecutar por separado y en cualquier orden. Una ejecución cuyo informe ya existe se omite.

ObjetivoArtículoTiempo de ejecución en nuestra máquina (aprox.)
accuracytabla de comparación, columnas de precisión3 h por conjunto de datos por núcleo; dividir con WORKERS
verificationFace Verification Benchmarks: HbC y M, Co-Host / LAN / Fast-WAN / WAN~6 h
identificationFace Identification Benchmarks: 1:128 conjunto cerrado, misma cuadrícula~6 h
plaintexttabla de comparación, fila de TensorFlow1 min
naivetabla de comparación, fila de MP-SPDZ (naive)~1 h incluyendo compilación
porthostabla de comparación, fila de EzPC (Porthos)~5 min de compilación + ~1.5 h
baselineslas tres líneas base
ablationtabla de ablación: las optimizaciones una a una, desde la línea base naive hasta GhostFaceMPC (HbC, co-host)~4 h

Variables de entorno:

Descargar herramienta