Exemplo n.º 1
0
def launch_targeted_attack(type=1, tab=1, anon="no_anon"):
    """
    Params :
    'type' is the attack variety among noise-exploitation family
    'tab' referes to the targeted table
    'anon' refers to the anonymization method
    """
    # specify target configuration
    # set anonymization algorithm
    config['anonTypes'][0] = anon_types_all[anon]
    # set target table
    config['tables'][0] = tables_all[tab]
    # set attack type
    if attack_type == 1:
        attack_type = "differential"
        config['basic'][
            'attackType'] = "Differential noise-exploitation Attack"
        # set appropriate specific parameters
        #scheme = get_database_scheme(params, verbose)
    elif attack_type == 2:
        attack_type = "cloning"
        config['basic']['attackType'] = "Cloning noise-exploitation Attack"
    elif attack_type == 3:
        attack_type = "greedy"
        config['basic']['attackType'] = "Greedy cloning Attack"
    # set general configuration parameters
    paramsList = setupGdaAttackParameters(config)
    params = paramsList[0]
    # launch attack
    print(f"\nInfo >>> Launching {attack_type} attack ...")
    print(
        f"... targeting {config['tables'][0]} anonymized with {config['anonTypes'][0]}\n"
    )
    noise_exploitation_attack(attack_type, params, verbose)
Exemplo n.º 2
0
def differential_automatic():
    attack_type = "differential"
    config['basic']['attackType'] = "Differential noise-exploitation Attack"
    for tab in tables_all:
        config['tables'][0] = tab
        for anon in anon_types_all:
            config['anonTypes'][0] = anon
            # set general configuration parameters
            paramsList = setupGdaAttackParameters(config)
            params = paramsList[0]
            # get scheme and gather specific parameters first
            print(f"Info >>> Getting schema for {config['tables']} ...\n")
            scheme = get_database_scheme(params, verbose)
            spec_params = [scheme[1].keys()]
            for c in scheme[0].keys():
                spec_params.append(c)
                # launch attack
                print(f"\nInfo >>> Launching {attack_type} attack ...")
                print(
                    f"... targeting {config['tables'][0]} anonymized with {config['anonTypes'][0]}"
                )
                print(f"... targeting column {c}\n")
                noise_exploitation_attack(attack_type, params, verbose,
                                          spec_params)
Exemplo n.º 3
0
        #"criteria": "linkability"
    },
    'anonTypes': [
        #["no_anon"],
        #["pseudonymization", "latest"],
        #["diffix","latest"],
        #["diffix","v19_1_0"],
        #["k_anonymization","naive","k_2"],
        #["k_anonymization","naive","k_5"],
        #["pseudonymization","colSuppression"], # problem to investigate
        ["pseudonymization", "kanon", "k_2"],
        #["pseudonymization","kanon","k_5"]
    ],
    'tables': [
        #['banking','accounts'],
        #['banking','loans'],
        #['banking','transactions'],
        #['taxi','rides'],
        #['census','persons'],
        ['scihub', 'downloads']
    ]
}

# set general configuration parameters
paramsList = setupGdaAttackParameters(config)
params = paramsList[0]

# launch attack
verbose = False
distance_attack(params, verbose)
Exemplo n.º 4
0
    # -------------------  Scores Phase  ----------------------------

    attackResult = attack.getResults()
    sc = gdaScores(attackResult)
    score = sc.getScores()
    if v: pp.pprint(score)
    attack.cleanUp()
    final = finishGdaAttack(params, score)
    pp.pprint(final)


# This reads in the attack parameters and checks to see if the
# attack has already been run and completed
verbose = False
v = verbose

paramsList = setupGdaAttackParameters(
    sys.argv,
    criteria="linkability",
    attackType="Simple List Linkability Attack")
for params in paramsList:
    params['verbose'] = doVerbose
    if params['finished'] == True:
        print("The following attack has been previously completed:")
        print(f"Results may be found at {params['resultsPath']}")
        continue

    print("Running attack with following parameters:")
    pp.pprint(params)
    dumb_list_linkability_attack(params)
Exemplo n.º 5
0
        numRows = reply['answer'][0][0]
        if v: print("-------------------- Explore reply:")
        if v: pp.pprint(reply)
        susValue = numRows / totalRows
        sc.assignColumnSusceptibility(guessedCol, susValue)
    # Get average score (default behavior)
    score = sc.getScores()
    if v: pp.pprint(score)
    score = sc.getScores(numColumns=1)
    if v: pp.pprint(score)
    attack.cleanUp(cleanUpCache=False)
    final = finishGdaAttack(params, score)
    pp.pprint(final)


# This reads in the attack parameters and checks to see if the
# attack has already been run and completed

paramsList = setupGdaAttackParameters(
    sys.argv, criteria="inference", attackType="Inference Attack on Diffix 1")
for params in paramsList:
    if params['finished'] == True:
        print("The following attack has been previously completed:")
        pp.pprint(params)
        print(f"Results may be found at {params['resultsPath']}")
        continue

    print("Running attack with following parameters:")
    pp.pprint(params)
    diffix_infer_1_attack(params)
Exemplo n.º 6
0
import sys
from gdascore.gdaTools import setupGdaAttackParameters
from utility.gdaUtility import gdaUtility
import pprint
pp = pprint.PrettyPrinter(indent=4)

gdaUtilityObj = gdaUtility()
paramsList = setupGdaAttackParameters(sys.argv)
print(f" param list:")
pp.pprint(paramsList)
for param in paramsList:
    print("Start next param")
    if param['finished'] == True:
        print("The following Utility measure has been previously completed:")
        pp.pprint(param)
        print(f"Results may be found at {param['resultsPath']}")
        continue
    res = gdaUtilityObj.distinctUidUtilityMeasureSingleAndDoubleColumn(param)
    if res is None:
        print("Unable to complete.")
        pp.pprint(param)
        continue
    print("Finish up")
    gdaUtilityObj.finishGdaUtility(param)
Exemplo n.º 7
0
            doQueryErrorAndExit(reply,attack)
        numRows = reply['answer'][0][0]
        if v: print("-------------------- Explore reply:")
        if v: pp.pprint(reply)
        susValue = numRows / totalRows
        sc.assignColumnSusceptibility(guessedCol,susValue)
    score = sc.getScores()
    if v: pp.pprint(score)
    final = finishGdaAttack(params,score)
    attack.cleanUp()
    pp.pprint(final)

# This reads in the attack parameters and checks to see if the
# attack has already been run and completed
verbose = False
v = verbose

paramsList = setupGdaAttackParameters(sys.argv, criteria="inference",
        attackType = "Simple List Inference Attack")
for params in paramsList:
    params['verbose'] = doVerbose
    if params['finished'] == True:
        print("The following attack has been previously completed:")
        pp.pprint(params)
        print(f"Results may be found at {params['resultsPath']}")
        continue

    print("Running attack with following parameters:")
    pp.pprint(params)
    dumb_list_inference_attack(params)