Машинное обучение и глубокое обучение широко используются в различных областях и показали свою эффективность во многих приложениях, таких как обнаружение мошенничества, распознавание речи и т. д. Одной из областей, в которых машинное обучение и глубокое обучение продемонстрировали свою эффективность, являются системы обнаружения вторжений в сеть. Учитывая успех машинного обучения и глубокого обучения в этих областях, они активно использовались — модели обучались с использованием новых алгоритмов и наборов данных, развертывались и активно использовались при принятии решений. Несмотря на то, что они обеспечивают высокие показатели производительности, самые последние исследования доказали, что алгоритмы машинного обучения и глубокого обучения не являются надежными и защищенными от злоумышленников в области компьютерного зрения. Эти результаты вызвали новую обеспокоенность по поводу приложений машинного обучения и глубокого обучения в областях, связанных с безопасностью, таких как системы обнаружения сетевых вторжений.

Атака со стороны противника — это входные данные для системы машинного обучения или глубокого обучения, которые вводятся злоумышленником, чтобы заставить систему принимать неправильные решения. Есть два типа состязательных примеров: атаки белого ящика и атаки черного ящика. В условиях «белого ящика» злоумышленник может иметь представление об архитектуре машинного обучения или модели глубокого обучения. При атаках методом «черного ящика» злоумышленник может не знать об архитектуре атакуемой системы.

Существует два типа систем обнаружения вторжений: первый тип систем обнаружения вторжений — это IDS на основе сигнатур, второй тип систем обнаружения вторжений — это IDS на основе аномалий. Системы обнаружения вторжений на основе сигнатур основаны на предварительно созданной базе данных известных атак. С системами обнаружения вторжений на основе сигнатур система может определить, является ли входящий сетевой трафик атакой или нет, путем сравнения трафика с базой данных сигнатур. Хотя этот тип систем обнаружения вторжений может эффективно обнаруживать известные атаки и обеспечивать высокую скорость обнаружения, они не могут обнаруживать атаки нулевого дня. По этой причине исследователи начали создавать системы обнаружения вторжений на основе аномалий для обнаружения неизвестных атак. Системы обнаружения вторжений на основе аномалий могут определить, является ли входящий сетевой трафик атакой, основываясь на поведении трафика, а не на сравнении трафика с какой-либо базой данных.

Несмотря на успехи систем машинного обучения и глубокого обучения, стало очевидным, что эти системы не защищены от атак злоумышленников при классификации изображений, в которых примеры со стороны злоумышленников могут привести к тому, что классификатор примет неверные решения. Учитывая важность безопасности в критических областях безопасности, таких как обнаружение сетевых вторжений, применение машинного обучения и глубокого обучения к системам обнаружения сетевых вторжений может привести к критическим проблемам безопасности. Было проведено довольно много исследований по состязательному машинному обучению в классификации изображений; однако ряду исследований по этой проблеме в настройке обнаружения сетевых вторжений не уделялось должного внимания.

По этой причине в этом посте среднего размера мы построим простую модель для обнаружения вторжений и создадим против нее атаки со стороны противника.

Вот шаги:

Шаг 0. Импортируйте набор данных NSL-KDD, создайте и инициализируйте модель

Шаг 1. Создайте классификатор с помощью PyTorch

from art.estimators.classification.pytorch import PyTorchClassifier

optimizer = optim.Adam(model.parameters(), lr=0.01)
classifier = PyTorchClassifier(model=model, loss=nn.CrossEntropyLoss(), optimizer=optimizer, input_shape=input_size, nb_classes=output_size)

Шаг 2. Создайте состязательные атаки (например, FGSM) с помощью ART

from art.attacks.evasion import FastGradientMethod

fgsm = FastGradientMethod(classifier,
                            norm=np.inf,
                            eps=0.1,
                            targeted=False,
                            num_random_init=0,
                            batch_size=128
                            )
x_test_adv = fgsm.generate(x=x_test.numpy())
pred = classifier.predict(x_test_adv)
acc = np.sum(np.argmax(pred, axis=1) == y_test.numpy()) / len(pred)
print("Accuracy on adversarial test examples: {}%".format(acc * 100))

Шаг 3. Повторно обучите классификатор с искаженными данными

x_train_adv = fgsm.generate(x=x_train.numpy())
classifier.fit(x_train_adv, y_train.numpy(), nb_epochs=10)

Шаг 4. Рассчитайте точность и сравните результаты

pred = classifier.predict(x_test_adv)
acc = np.sum(np.argmax(pred, axis=1) == y_test.numpy()) / len(pred)
print("Accuracy on adversarial test examples: {}%".format(acc * 100))

Заключение:

В этом посте среднего размера я попытался объяснить примеры враждебных действий в одном из критических с точки зрения безопасности приложений, называемом системой обнаружения вторжений в сеть (NIDS). С помощью ART была создана атака уклонения противника по принципу «белого ящика» — метод быстрого градиентного знака (FGSM). Рассчитана точность атакованного классификатора до и после обучения на возмущенных данных.

Спасибо, что прочитали! Дайте мне знать в комментариях, что вам понравилось и не понравилось в этом посте.