Сегодня 4 ноября, 2020 год. За последние несколько месяцев уже произошли более странные вещи, в первую очередь вспышка коронавируса и то, как она была особенно разрушительной для людей в США. POTUS боролся за сохранение своего места в Белом доме против некоего Джо Байдена, который, как и предсказывали предвыборные опросы, был готов занять его место. Никто не ожидал, что поединок будет таким захватывающим, каким он оказался.

В первый день и Байден, и Трамп получили раннее преимущество в исторически безопасных ожидаемых местах. Байден взял на себя управление сторонами, а Трамп получил контроль в центре. И, как и любые другие выборы, они сводились к колеблющимся штатам. Обычно выборы достаются тому, кто побеждает во Флориде и Техасе, в данном случае выборы достались республиканцам, но на этот раз все будет гораздо более неопределенно, чем кто-либо еще предсказывал.

По итогам первого дня Трамп имел преимущество в некоторых штатах и ​​даже преждевременно заявил о своей победе. По иронии судьбы, всего через несколько часов несколько штатов стали синими, а именно Мичиган и Висконсин.

Несколько месяцев назад Трамп сделал смелое заявление о том, что выборы в этом году будут сфальсифицированы и предвзяты: и если бы это был кто-то другой, люди отнеслись бы к этому гораздо серьезнее. Но поскольку это был Трамп, люди предпочли отшутиться. Честно говоря, у Трампа были проблемы с той же системой, даже когда он пришел к власти, так что дело не только в том, что он был больным неудачником.

Слишком долго не читайте: в Америке очень странная и нерегулярная (не неэффективная) система голосования, где власть принадлежит государству, а не центру.

Теперь простым решением будет следовать системе, в которой все голоса будут подаваться в рамках единого избирательного органа, такого как избирательная комиссия, но это будет означать полное обновление американских идеалов и избирательной культуры, что было бы хаотично.

Итак, какое решение?

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

Мы можем создать приложение на основе блокчейна (защищенное хэш-функциями, такими как keccak-256), а сеть P2P будет защищена с помощью машинного обучения.

Позвольте мне рассказать вам об этой идее.

Приложение будет основано на хеше, хеш-значение которого будет рассчитываться с помощью набора вопросов, полученных от пользователя. Открытый и закрытый ключи будут сгенерированы с использованием случайной перестановки вопросов. Например, перед выборами пользователю задают 64 вопроса, таких как "Как зовут твоего кота" или "Месяц дня рождения твоей мамы" и т. д. Как только это будет сделано, мы выберем половину этих вопросов случайным образом (скажем, первые 14 вопросов, а затем последние 18 вопросов, переставленные случайным образом), передаем эти ответы для создания хеш-значения в 256 байт. Это будет ваш закрытый ключ, который необходимо хранить в безопасности. Открытый ключ будет сгенерирован для оставшихся 16 вопросов аналогичным образом, случайным образом переставленным на центральном уровне. Как только у вас будут готовы открытый и закрытый ключи, все готово для регистрации вашего голоса из дома. Но что, если хакер захватит само ваше приложение? Или может подделать ваш голос в P2P-соединении. Именно здесь вам нужно будет изучить безопасность сети P2P, которая поможет защитить вашу сеть от постоянно совершенствующихся атак.

Модуль обнаружения сетевого трафика P2P (машинное обучение)

Создание модели обнаружения и обучающего набора

Чтобы обучить наши модели классификации обнаружению сетевого трафика P2P-ботнета, мы используем файлы трассировки сетевого трафика ботнетов Storm и Zeus в качестве вредоносных обучающих образцов. Файлы трассировки сетевого трафика eMule, uTorrent и Skype используются для образцов сетевого трафика приложений P2P. Есть два подмодуля: модуль первичной классификации и модуль вторичной классификации. Для каждого файла трассировки мы создаем бинарный классификатор для модуля обнаружения, с помощью которого мы можем тестировать векторы признаков сетевых потоков и сообщать результат анализа. Мы создаем несколько бинарных классификаторов и помещаем их в наш модуль первичной классификации. Причина, по которой мы используем несколько двоичных классификаторов для создания нашего модуля первичной классификации, заключается в большей гибкости в обучении и тестировании, а наш метод обнаружения может быть модульным. С несколькими бинарными классификаторами мы можем использовать разные обучающие наборы, разные алгоритмы и разные параметры для обучающих моделей. Затем мы можем найти оптимальную комбинацию для получения наилучшей производительности классификации.

Выбор функций

В машинном обучении крайне важно выбрать подходящий набор функций, который существенно влияет на производительность классификации. Мы перечисляем наш набор функций следующим образом:

(i) Количество пакетов

(ii) Размер пакета (минимум, максимум, среднее значение и стандартное отклонение)

(iii) Общий объем (размер потока)

(iv) Время прибытия (минимальное, максимальное, среднее значение и стандартное отклонение)

(v) Количество флагов отправки TCP

(vi) Продолжительность потока

(vii) Общее количество байтов, используемых для заголовков

(viii) Подсчет срочных флагов TCP.

Классификатор

Что касается эффективности, мы обнаруживаем, что характеристики обнаружения алгоритмов KNN и SVM аналогичны, но время обучения SVM намного больше. В результате мы используем KNN в качестве нашего алгоритма классификации для бинарного классификатора в модуле первичной классификации. Однако при необходимости мы всегда можем заменить его другим методом.

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

Генератор трафика

Чтобы убедиться, что наша система действительно обнаруживает ботнет P2P в реальном сетевом трафике, нам необходимо воспроизвести файлы трассировки сетевого трафика и смоделировать сетевое поведение реальных ботнетов P2P и приложений. Для этого мы создаем генератор трафика, который воспроизводит пакеты в файлах трассировки сетевого трафика и моделирует сетевое поведение хостов P2P.

СИСТЕМА ЭЛЕКТРОННОГО ГОЛОСОВАНИЯ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ БЛОКЧЕЙН

Ресурсы данных

Удивительная часть этого проекта заключается в том, что нам не нужна традиционная база данных для хранения нашей информации, нам нужен клиент geth, базовые знания о веб-разработке (HTML, JS, CSS), язык программирования Solidity для написания смарт-контрактов и платформы для хостинга. Он может работать локально на нашем самодельном узле Ethereum и глобально с использованием IFPS.

Процедура

Мы начали с создания нашего смарт-контракта

Здесь мы объявили версию Solidity в первой строке, объявили наших кандидатов и сопоставили их с нашими индивидуальными публичными ключами, чтобы каждый кандидат мог проголосовать только один раз. Затем мы перенесли наш смарт-контракт, используя наш локальный узел блокчейна, который мы создали с помощью Ethereum. Для этого мы создали «Как только это было сделано, мы использовали Web3.js, чтобы внедрить наш смарт-контракт во внешний интерфейс веб-сайта, который мы создали с помощью Html, CSS и JS. Сделав это, мы создали отличный веб-сайт, который может использовать функции блокчейна, сохраняя его свободным от взлома, полностью автономным и при этом предоставляя точные результаты в реальном времени. Мы используем команду, чтобы запустить нашу локальную цепочку блоков после прохождения наших модулей узла, чтобы активировать модуль geth, который предоставляется узлом в его последних обновлениях. Нам также нужен компилятор Solidity для компиляции наших смарт-контрактов. Как только мы активируем нашу локальную цепочку блоков, создается узел с 10 открытыми ключами, которые мы можем использовать для голосования. Все это тестовые ключи. В реальном мире эти открытые ключи будут принадлежать людям, которые могут голосовать за свои любимые партии или кандидатов. После этого мы запустим команду « » для запуска lite-сервера, и, таким образом, наш веб-сайт на Мы сможем голосовать и записывать голоса. Внешний интерфейс был построен так же, как и любой другой веб-сайт, однако серверная часть была построена на Ethereum с использованием узла geth. Как только это было сделано, мы смогли сгенерировать 10 разных ключей для 10 разных голосов, все эти ключи уникальны, хешированы и используются для идентификации 10 разных людей. Эти ключи не могут повторять свои голоса более одного раза. Вся эта информация передается в режиме реального времени и с невиданной ранее безопасностью.

Запускаем наш lite-сервер, а значит и наш сайт на localhost:3000

Допустим, у нас есть три кандидата, а именно Путин, Навальный и Против. У нас есть наш первый открытый ключ в хешированной форме (KECCAK-256) и имя кандидата под ним.

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

Здесь мы выбрали другой ключ и другого кандидата, так что мы можем проголосовать еще раз. В настоящее время у нас есть 10 ключей для работы в нашем каталоге.

Наше приложение работает так, как мы могли ожидать. Мы смогли успешно проголосовать, записать голоса и обеспечить безопасность от возможных атак и проблем с повторным использованием. Приложение работает на блокчейне, но пользовательский интерфейс прост в использовании, и любой может голосовать, если он зарегистрирован в блокчейне Ethereum или если у него есть кошелек Ethereum и, следовательно, идентификатор.

ЗАКЛЮЧЕНИЕ

Таким образом, цель состоит в том, чтобы создать почти идеальное приложение, в которое никто не сможет вмешаться, даже правительство (поскольку закрытые ключи генерируются случайным образом, и нет никакого способа узнать как набор вопросов, так и порядок их выбора). в то же время). Это может показаться действительно ориентированным на блокчейн, но безопасность P2P так же важна для устойчивости этого приложения, как и сама хеш-функция.