Exemplo n.º 1
0
from custom.custom_models.neural_networks import *
from aisy.sca_deep_learning_aes import AisyAes

aisy = AisyAes()
aisy.set_database_name("database_ascad.sqlite")
aisy.set_dataset("ascad-variable.h5")
aisy.set_aes_leakage_model(leakage_model="HW", byte=2)
aisy.set_batch_size(400)
aisy.set_epochs(20)
aisy.set_neural_network(mlp)
aisy.run(
    save_to_npz=["aes_attack"]
)
from custom.custom_models.neural_networks import *
from aisy.sca_deep_learning_aes import AisyAes

aisy = AisyAes()
aisy.set_database_name("database_ascad.sqlite")
aisy.set_dataset("ascad-variable.h5")
aisy.set_aes_leakage_model(leakage_model="HW", byte=2)
aisy.set_batch_size(400)
aisy.set_epochs(20)
aisy.set_neural_network(mlp)

aisy.run(visualization=[4000])
from aisy.sca_deep_learning_aes import AisyAes

aisy = AisyAes()
aisy.set_dataset("ascad-variable.h5")
aisy.set_database_name("database_ascad.sqlite")
aisy.set_aes_leakage_model(leakage_model="HW", byte=2)
aisy.set_number_of_profiling_traces(100000)
aisy.set_number_of_attack_traces(1000)
aisy.set_batch_size(400)
aisy.set_epochs(10)

# for each hyper-parameter, specify the options in the grid search
grid_search = {
    "neural_network": "mlp",
    "hyper_parameters_search": {
        # 'conv_layers': [1, 2],
        # 'kernel_1': [4, 8],
        # 'kernel_2': [2, 4],
        # 'stride_1': [1],
        # 'stride_2': [1],
        # 'filters_1': [8, 16],
        # 'filters_2': [8, 16],
        # 'pooling_type_1': ["Average", "Max"],
        # 'pooling_type_2': ["Average", "Max"],
        # 'pooling_size_1': [1, 2],
        # 'pooling_size_2': [1, 2],
        # 'pooling_stride_1': [1, 2],
        # 'pooling_stride_2': [1, 2],
        'neurons': [100, 200],
        'layers': [3, 4],
        'learning_rate': [0.001],
from aisy.sca_deep_learning_aes import AisyAes

aisy = AisyAes()
aisy.set_dataset("ascad-variable.h5")
aisy.set_database_name("database_ascad.sqlite")
aisy.set_aes_leakage_model(leakage_model="HW", byte=2)
aisy.set_number_of_profiling_traces(100000)
aisy.set_number_of_attack_traces(2000)
aisy.set_batch_size(400)
aisy.set_epochs(20)

# for each hyper-parameter, specify the options in the grid search
grid_search = {
    "neural_network": "mlp",
    "hyper_parameters_search": {
        'neurons': [50, 100],
        'layers': [2, 3],
        'learning_rate': [0.001, 0.0001],
        'activation': ["relu", "selu"]
    },
    "metric": "guessing_entropy",
    "stop_condition": False,
    "stop_value": 1.0,
    "train_after_search": True
}

aisy.run(
    key_rank_attack_traces=1000,
    grid_search=grid_search,
    ensemble=[10],
    probability_rank_plot=True
from custom.custom_models.neural_networks import *
from aisy.sca_deep_learning_aes import AisyAes


def mlp(classes, number_of_samples, neuron, layer, activation, learning_rate):
    model = Sequential(name="my_mlp")
    for l_i in range(layer):
        if l_i == 0:
            model.add(Dense(neuron, activation=activation, input_shape=(number_of_samples,)))
        else:
            model.add(Dense(neuron, activation=activation))
    model.add(Dense(classes, activation=None))
    model.add(Activation(activation="softmax"))
    model.summary()
    optimizer = Adam(lr=learning_rate)
    model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
    return model


aisy = AisyAes()
aisy.set_dataset("ascad-variable.h5")
aisy.set_database_name("database_ascad.sqlite")
aisy.set_aes_leakage_model(leakage_model="HW", byte=2)
aisy.set_batch_size(400)
aisy.set_epochs(50)
aisy.set_neural_network(mlp(9, 1400, 200, 3, "relu", 0.001))
aisy.run()
Exemplo n.º 6
0
from custom.custom_models.neural_networks import *
from aisy.sca_deep_learning_aes import AisyAes

aisy = AisyAes()
aisy.set_dataset("ascad-variable.h5")
aisy.set_database_name("database_ascad_early_stopping.sqlite")
aisy.set_aes_leakage_model(leakage_model="HW", byte=2)
aisy.set_number_of_profiling_traces(100000)
aisy.set_number_of_attack_traces(2000)
aisy.set_batch_size(400)
aisy.set_epochs(25)
aisy.set_neural_network(mlp)

early_stopping = {
    "metrics": {
        "accuracy": {
            "direction": "max",
            "class": "accuracy",
            "parameters": []
        },
        "loss": {
            "direction": "min",
            "class": "loss",
            "parameters": []
        },
        "number_of_traces": {
            "direction": "min",
            "class": "number_of_traces",
            "parameters": []
        },
        "success_rate": {
from custom.custom_models.neural_networks import *
from aisy.sca_deep_learning_aes import AisyAes
from custom.custom_tables.tables import *
from app import databases_root_folder

aisy = AisyAes()
aisy.set_dataset("ascad-variable.h5")
aisy.set_database_name("database_ascad.sqlite")
aisy.set_aes_leakage_model(leakage_model="HW", byte=2)
aisy.set_number_of_profiling_traces(10000)
aisy.set_number_of_attack_traces(1000)
aisy.set_batch_size(400)
aisy.set_epochs(20)
aisy.set_neural_network(mlp)

aisy.run()

start_custom_tables(databases_root_folder + "database_ascad.sqlite")
session = start_custom_tables_session(databases_root_folder +
                                      "database_ascad.sqlite")

db_inserts = aisy.get_db_inserts()
new_insert = CustomTable(value1=10,
                         value2=20,
                         value3=30,
                         analysis_id=aisy.get_analysis_id())
session.add(new_insert)
session.commit()
from custom.custom_models.neural_networks import *
from aisy.sca_deep_learning_aes import AisyAes

aisy = AisyAes()
aisy.set_database_name("database_ascad.sqlite")
aisy.set_dataset("ascad-variable.h5")
aisy.set_aes_leakage_model(leakage_model="HW", byte=2)
aisy.set_batch_size(400)
aisy.set_epochs(20)
aisy.set_neural_network(mlp)

aisy.run(probability_rank_plot=True)
Exemplo n.º 9
0
from custom.custom_models.neural_networks import *
from aisy.sca_deep_learning_aes import AisyAes
from lottery_ticket_pruner import LotteryTicketPruner

epochs = 50

aisy = AisyAes()
aisy.set_dataset("ascad-variable.h5")
aisy.set_database_name("database_ascad.sqlite")
aisy.set_aes_leakage_model(leakage_model="HW", byte=2)
aisy.set_number_of_profiling_traces(100000)
aisy.set_number_of_attack_traces(2000)
aisy.set_batch_size(400)
aisy.set_epochs(epochs)
aisy.set_neural_network(mlp)

initial_weights = aisy.get_model().get_weights()

param1 = 0
custom_callbacks = [{"class": "SaveWeights", "parameters": [param1]}]

aisy.run(callbacks=custom_callbacks, visualization=[5000])

custom_callbacks = aisy.get_custom_callbacks()

callback_weights = custom_callbacks["SaveWeights"]
trained_weights = callback_weights.get_weights()[epochs - 1]

aisy.set_neural_network(mlp)
model = aisy.get_model()
from custom.custom_models.neural_networks import *
from aisy.sca_deep_learning_aes import AisyAes
from custom.custom_data_augmentation.data_augmentation import *

aisy = AisyAes()
aisy.set_dataset("ascad-variable.h5")
aisy.set_database_name("database_ascad.sqlite")
aisy.set_aes_leakage_model(leakage_model="HW", byte=2)
aisy.set_batch_size(400)
aisy.set_epochs(20)
aisy.set_neural_network(mlp)
aisy.run(data_augmentation=[data_augmentation_gaussian_noise, 100])