Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
GhostFaceMPC — Эталонная реализация конфиденциального распознавания лиц с использованием реплицированного разделения секрета в MP-SPDZ, включая квантованную инференцию GhostFaceNet, бенчмарки и инструменты QAT. | Kitploit
Инструменты/GitHubGitHub/crypto-unict/ghostfacempc
КриптографияКонфиденциальностьМашинное ОбучениеСтатьи и ИсследованияОбучение и Образование
GitHubcrypto-unict/ghostfacempc

GhostFaceMPC

Эталонная реализация конфиденциального распознавания лиц с использованием реплицированного разделения секрета в MP-SPDZ, включая квантованную инференцию GhostFaceNet, бенчмарки и инструменты QAT.

Репозиторий
1467 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

GhostFaceMPC: конфиденциальное распознавание лиц с многосторонними вычислениями

Официальная реализация 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.

  • Клиент разделяет на секреты выровненное лицо 112×112: он сам формирует реплицированное разделение, поэтому серверы загружают свои пары без повторного разделения. Ни один сервер никогда не видит изображение, активацию, эмбеддинг или зарегистрированную базу данных.
  • Параметры модели публичны, поэтому каждый линейный слой — это локальная арифметика секрет-на-публичное с одним сокращением с фиксированной точкой на выход.
  • Модель квантуется в 32-битное кольцо (6 дробных битов, 9 для ядер) с помощью обучения с учётом квантования на точной арифметике, которую выполняют серверы.
  • Поддерживаются два профиля безопасности: получестный (replicated-ring-party) и злонамеренный с прерыванием (ps-rep-ring-party).
  • Каждый запрос разделён на офлайн-фазу и онлайн-фазу. Офлайн-фаза генерирует предвычисления, не зависящие от входных данных. Онлайн-фаза — это само инференс-вычисление, за которым следует оценка верификации 1:1 или идентификация закрытого множества 1:N. Ни одна из фаз ничего не раскрывает.

Этот репозиторий содержит ровно тот код, который нужен для воспроизведения экспериментов из статьи.

@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/настройка, эмуляция сети без root-прав, сбор таблиц
tests/модульные тесты (pytest)

1. Требования

  • Машина. Linux на x86-64. В статье использовалась 32-ядерная виртуальная машина (Intel Xeon Gold 6238R), запускающая по 8 потоков на сторону. Все три сервера работают на одном хосте.

  • Python. Python ≥ 3.10 (протестировано с 3.11).

  • Зависимости сборки MP-SPDZ (список 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
    
  • Эмуляция LAN/WAN. Требуются iproute2 (ip, tc), iputils-ping, unshare (util-linux) и непривилегированные пользовательские пространства имён. Скрипту не нужен root. В Debian/Ubuntu: sudo sysctl kernel.unprivileged_userns_clone=1.

  • Только базовая версия Porthos.

    • libboost-system-dev
    • процессор с AES-NI
    • OCaml 4.14 через opam, с opam install ocamlbuild menhir ocamlfind stdint

2. Установка

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

scripts/setup.sh выполняет четыре действия:

  1. Создаёт .venv и устанавливает пакет. При этом загружаются tensorflow-cpu, Pillow, onnx, onnxruntime и onnxsim.
  2. Подготавливает MP-SPDZ в third_party/MP-SPDZ:
    • переключается на закреплённую ревизию;
    • применяет third_party/patches/;
    • включает 32-битное кольцо (MY_CFLAGS += -DRING_SIZE=32 в CONFIG.mine);
    • собирает replicated-ring-party.x и ps-rep-ring-party.x;
    • генерирует TLS-сертификаты трёх сторон.
  3. Загружает файлы моделей (см. таблицу ниже).
  4. Проверяет наборы данных для бенчмарков.

Файлы моделей размещаются в artifacts/:

ФайлСодержимое
GhostFaceNet_W1.3_S1_ArcFace.h5float-учитель из релиза GhostFaceNets
model/квантованная модель ring32/f6/f_w9 с отчётами о точности
model-ring64-f16-b0/манифест ring64, из которого экспортируется базовая линия Porthos
legacy-scalar-236/манифест ring64/f20 наивной базовой линии MP-SPDZ

Бандлы являются релизными артефактами этого репозитория, и каждый архив проверяется по его SHA-256. ghostmpc fetch-bundles --bundle qat-start также загружает манифест, с которого начинается QAT (см. §5).

Наборы данных

Эксперимент по точности и базовая линия на открытом тексте используют пять наборов для оценки InsightFace: LFW, AgeDB-30, CALFW, CPLFW и CFP-FP. Используйте файлы .bin, распространяемые с обучающими данными MS1MV3 из InsightFace dataset zoo, и разместите их следующим образом:

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

scripts/setup.sh проверяет их по дайджестам SHA-256, которые мы использовали. Бенчмаркам MPC наборы данных не нужны: их коммуникация не зависит от входных значений, поэтому они секретно разделяют синтетические входные данные.

3. Воспроизведение экспериментов

./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таблица сравнения, столбцы точности3 ч на набор данных на ядро; разделяется с помощью WORKERS
verificationFace Verification Benchmarks: HbC и M, Co-Host / LAN / Fast-WAN / WAN~6 ч
identificationFace Identification Benchmarks: 1:128 closed set, та же сетка~6 ч
plaintextтаблица сравнения, строка TensorFlow1 мин
naiveтаблица сравнения, строка MP-SPDZ (naive)~1 ч, включая компиляцию
porthosтаблица сравнения, строка EzPC (Porthos)~5 мин сборка + ~1,5 ч
baselinesтри базовых варианта
ablationтаблица абляции: оптимизации по одной, от базового варианта naive до GhostFaceMPC (HbC, co-host)~4 ч

Переменные окружения:

ПеременнаяЗначениеПо умолчанию
THREADSпотоков на сторону8
NETWORKSсети для измеренияco-host lan fast-wan wan
WORKERSпроцессов для оракула точностичисло CPU
POOLS, WARMUPS, TRIALSпереопределить схему пуловкак в статье
RESULTSкаталог выводаresults

--quick запускает один пул из одного прогревочного и одного измеряемого запроса, а также точность на первых 600 парах каждого набора данных.

Скачать инструмент