Skip to main content

A library aiding to create deanonymizers (attacks on privacy preserving machine learning models) for the AnoMed competition platform.

Project description

Code style: black pipeline status coverage

Deanonymizer

A library aiding to create attacks against anonymizers (privacy preserving machine learning models) for the AnoMed competition platform. Currently, only membership inference attacks are supported.

Usage Example

The following example will create a Falcon-based web app that encapsulates a deanonymizer, targeting the example anonymizer defined in the anomed-anonyimzer README.md (which is a privacy preserving classifier for the famous iris dataset classification problem). The encapsulated deanonymizer is a membership inference black box attack, implemented using the Adversarial Robustness Toolbox (ART library).

The web app offers these routes (some may have query parameters not mentioned here):

[GET] / (This displays an "alive message".)
[POST] /fit (This invokes fitting the Gaussian naive based classifier; the web app will pull the training data from training_data_url.)
[POST] /evaluate (This invokes an intermediate, or final evaluation of the classifier.)
import anomed_deanonymizer
import numpy as np
from art.attacks.inference.membership_inference import MembershipInferenceBlackBox

def validate_input_array(feature_array: np.ndarray) -> None:
    if feature_array.shape[1] != 4 or len(feature_array.shape) != 2:
        raise ValueError("Feature array needs to have shape (n_samples, 4).")
    if feature_array.dtype != np.float_:
        raise ValueError("Feature array must be an array of floats.")


attack_target_hostname = "example-anonymizer"
attack_target = anomed_deanonymizer.WebClassifier(
    url=f"http://{attack_target_hostname}/predict", input_shape=(4,), nb_classes=3
)
example_attack_art = MembershipInferenceBlackBox(
    estimator=attack_target,  # type: ignore
    attack_model_type="rf",
)
example_attack = anomed_deanonymizer.ARTWrapper(
    art_mia=example_attack_art, input_validator=validate_input_array
)

challenge_hostname = "example.com"

application = anomed_deanonymizer.supervised_learning_MIA_server_factory(
    anonymizer_identifier="example_anonymizer",
    deanonymizer_identifier="example_deanonymizer",
    deanonymizer_obj=example_attack,
    model_filepath="deanonymizer.pkl",
    default_batch_size=64,
    member_url=f"http://{challenge_hostname}/data/deanonymizer/members",
    nonmember_url=f"http://{challenge_hostname}/data/deanonymizer/non-members",
    evaluation_data_url=f"http://{challenge_hostname}/data/attack-success-evaluation",
    model_loader=anomed_deanonymizer.unpickle_deanonymizer,
    utility_evaluation_url=f"http://{challenge_hostname}/utility/deanonymizer",
)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

anomed_deanonymizer-0.0.10.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

anomed_deanonymizer-0.0.10-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file anomed_deanonymizer-0.0.10.tar.gz.

File metadata

  • Download URL: anomed_deanonymizer-0.0.10.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for anomed_deanonymizer-0.0.10.tar.gz
Algorithm Hash digest
SHA256 156f60b8e4bee098fbd765aff4019cc32d163f9aef768bcb9da2fa56adc06095
MD5 f68da0f8d3e72608960917c16108a980
BLAKE2b-256 53ef64ce25585388c00303333576409fe45e23800aafdbcffe0c4a8da6200d42

See more details on using hashes here.

File details

Details for the file anomed_deanonymizer-0.0.10-py3-none-any.whl.

File metadata

File hashes

Hashes for anomed_deanonymizer-0.0.10-py3-none-any.whl
Algorithm Hash digest
SHA256 29065cd0c323bc03a37b4c7826d39547d3dc7efb9a33039197ebf8a6fff10837
MD5 55ea7683c237edbcdfdc0ffdd387dc42
BLAKE2b-256 9fee694258a69e95ffb2127ae2224034114b8e901bd04889c68dd9f25c0ae8b5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page