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
Priv-QDNN — Código base de investigación para la evaluación de privacidad de redes neuronales cuantizadas: entrena modelos objetivo/sombra bajo PTQ/QAT y ejecuta ataques de inferencia de pertenencia (MIA, RMIA, caja blanca) con defensas DP. | Kitploit
Herramientas/GitHubGitHub/jefffffffu/priv-qdnn
PrivacidadAprendizaje AutomáticoPapers e InvestigaciónAprendizaje y EducaciónSeguridad de IA
GitHubjefffffffu/priv-qdnn

Priv-QDNN

Código base de investigación para la evaluación de privacidad de redes neuronales cuantizadas: entrena modelos objetivo/sombra bajo PTQ/QAT y ejecuta ataques de inferencia de pertenencia (MIA, RMIA, caja blanca) con defensas DP.

Ver Repositorio
1hace 2 mesesAú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

Priv-QDNN

Este repositorio contiene una base de código de investigación para la evaluación de privacidad de redes neuronales profundas cuantizadas. Admite el entrenamiento de modelos objetivo/sombra bajo configuraciones comunes de cuantización posterior al entrenamiento (PTQ) y entrenamiento consciente de la cuantización (QAT), guardando características intermedias de ataque en disco, y ejecutando un conjunto de ataques y métricas relacionados con la inferencia de pertenencia (p. ej., MIA, RMIA, WhiteBoxMIA, WhiteBoxMIA_Partial). La base de código también integra rutas de entrenamiento con privacidad diferencial basadas en Opacus para modelos defendidos (p. ej., variantes dropout / DP / adversariales en los scripts de ejemplo proporcionados).

El flujo de trabajo de evaluación se divide en dos etapas: (1) entrenamiento (--training target|shadow|both) para materializar artefactos en save/<attack_method>/..., y (2) evaluación solo de ataque (--training None) que carga las posteriores/modelos guardados y reporta métricas en result/<attack_method>/....

Instalación

Necesita una máquina con soporte de GPU NVIDIA para los experimentos típicos. Recomendamos los wheels de CUDA 12.1 para PyTorch (véanse los comandos a continuación). Use Python 3.10 para coincidir con las versiones fijadas en requirements.txt.

Puede instalar la mayoría de los requisitos con:

conda create --name priv-qdnn python=3.10
conda activate priv-qdnn
pip install -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cu121

Notas:

  • Para PyTorch solo con CPU, ejecute pip install -r requirements.txt sin --extra-index-url (ruedas de CPU de PyPI si están disponibles para su plataforma).
  • Si utiliza las rutas de cuantización AdaRound / AIMET, necesita una instalación funcional de aimet-torch (consulte quantization/PTQ/adaround.py). Si pip no puede resolver aimet-torch en su plataforma, siga primero las instrucciones de instalación de Qualcomm AIMET y luego instale las dependencias restantes.

Conjuntos de datos

Los conjuntos de datos no están incluidos en este repositorio. Se admiten cuatro, y difieren en la cantidad de configuración que requieren.

CIFAR-100 y CINIC-10 (automático)

Ambos se obtienen en el primer uso en data/, por lo que no se requiere ningún paso manual — solo asegúrese de que la máquina tenga acceso a la red la primera vez que ejecute un experimento.

  • CIFAR-100 se descarga mediante torchvision.datasets.CIFAR100(..., download=True) en data/load_data.py.
  • CINIC-10 se descarga y extrae mediante fetch_cinic10() en data/cinic10.py desde el espejo de Edinburgh DataShare. Es un archivo grande, así que reserve tiempo y disco para la primera ejecución.

Texas100 y Location (manual)

Estos dos no tienen descargador automático. Obtenga los archivos sin procesar, descomprímalos en data/<dataset>/raw/ y luego conviértalos a los archivos .npy que esperan los cargadores.

Conjunto de datosArchivo sin procesar
Texas100https://www.comp.nus.edu.sg/~reza/files/dataset_texas.tgz
Locationhttps://github.com/privacytrustlab/datasets (el conjunto location)

Estructura esperada tras la descompresión:

data/texas/raw/texas/100/feats
data/texas/raw/texas/100/labels
data/location/raw/bangkok

Luego construye las divisiones de entrenamiento/prueba:

python data/prepare_tabular.py --dataset both

--dataset acepta texas, location o both. Use --raw_root para apuntar a una ubicación diferente (por defecto data/<dataset>/raw), y --test_size / --seed para cambiar la división (por defecto 0.2 y 41).

Esto escribe los archivos que carga data/tabular_datasets.py:

data/<dataset>/{train_feats,train_labels,test_feats,test_labels}.npy

Si estos archivos .npy faltan, cualquier ejecución que use --dataset_name texas o --dataset_name location falla con un FileNotFoundError que indica la ruta faltante.

Estructura del código de Priv-QDNN

  • attack: implementaciones de ataques y puntos de entrada de evaluación (MIA, RMIA, WhiteBox_MIA, etc.).
  • training: bucles de entrenamiento de target/shadow y variantes de entrenamiento defendidas (ramas DP / adversariales, utilidades).
  • model: definiciones de modelos y wrappers usados por el entrenamiento y los ataques.
  • quantization: pipelines y helpers de cuantización PTQ/QAT (incluida la integración de AIMET AdaRound).
  • data: helpers de descarga de datasets, scripts de preparación y wrappers de Dataset de PyTorch.
  • dp: utilidades de privacidad diferencial usadas por las rutas de entrenamiento DP.
  • example: scripts de shell para experimentos de extremo a extremo (recopilación de datos MIA + evaluación / defensas solo de ataque).
  • experiment: estudios mecanísticos detrás del análisis del artículo — puntuaciones de memorización estilo LOOD (memorization.py) y las tablas de cuantización de norma de gradiente (grad_norm_quantization_table.py, grad_norm_range_normalized_table.py).
  • plot: generación de figuras y tablas para el artículo; los PDFs y CSVs de salida se guardan en plot/figures/.
  • main.py: entrada CLI unificada (--training alterna entre modos de entrenamiento y solo de ataque).
  • parameter_parser.py: todos los argumentos de línea de comandos y valores predeterminados.
  • extract_last_layer_grad_norm.py: normas L2 por muestra del gradiente del clasificador de la última capa para los subconjuntos de miembros y no miembros, reutilizadas por las tablas de experiment/.

Experimentos de demostración

Recopilación de datos de inferencia de membresía + MIA solo de ataque (CIFAR-100)

El siguiente patrón coincide con el flujo de trabajo previsto del repositorio: entrenar con MIA para poblar save/MIA/..., luego ejecutar MIA con --training None.

# Stage 1: train target + shadow and save MIA artifacts
python main.py \
  --dataset_name cifar100 \
  --net_name resnet18 \
  --quantization hawq --a_bit 8 --w_bit 8 \
  --attack_method MIA \
  --training both \
  --num_epochs 50 --trials 3 \
  --device cuda:0

# Stage 2: attack-only MIA evaluation (confidence threshold attack only)
python main.py \
  --dataset_name cifar100 \
  --net_name resnet18 \
  --quantization hawq --a_bit 8 --w_bit 8 \
  --attack_method MIA \
  --compleaknr_attacks confidence \
  --training None \
  --trials 3 \
  --device cuda:0

Para cada ejecución de ataque, la consola imprimirá el progreso de la implementación del ataque correspondiente (p. ej., métricas por ensayo para MIA; las ejecuciones solo de ataque se guardan en result/MIA/...).

Elegir qué ataques de caja negra ejecutar

--compleaknr_attacks controla la entrada MIA de solo ataque:

  • confidence — ejecuta únicamente el ataque de umbral de confianza. Solo consume las posteriores guardadas, por lo que es rápido y no necesita archivos de modelo.
  • all (el valor predeterminado del argumento) — ejecuta las seis variantes de caja negra: umbral de confianza, umbral de entropía, entropía modificada, dos ataques basados en entrenamiento (LR/RF sobre posteriores, y sobre posteriores más etiqueta), y SAMIA.

Ten en cuenta que los dos modos tienen requisitos diferentes. Las primeras cinco variantes leen solo las posteriores guardadas, pero SAMIA además carga los modelos objetivo y sombra guardados desde save/MIA/.../target/<trial>/model.pth y save/MIA/.../shadow/0/model.pth y los consulta con entradas perturbadas para estimar la sensibilidad de salida. Esto sigue siendo de caja negra en el sentido de que solo se utilizan las salidas del modelo —sin gradientes ni activaciones internas—, pero sí requiere que esos checkpoints estén presentes, y es considerablemente más lento.

Descargar herramienta