Всем привет!
24-25 Сентября "РосКомСвобода" и Privacy Accelerator провели хакатон Demhack-5, который решает задачи в области приватности и свободы интернета. Пятый Demhack прошел в формате онлайн и объединил русскоязычных IT-специалистов, активистов и цифровых художников по всему миру.
![](https://habrastorage.org/getpro/habr/upload_files/47f/19d/6d2/47f19d6d2b8c19720e37a46379ef565a.png)
Сегодня многие СМИ и информационные ресурсы, медиа-площадки и социальные сети оказались под блокировкой или имеют статус нежелательных. Существуют прямые ограничения на антивоенные высказывания, а некоторые слова просто запрещены. Из-за санкций, которые массово начали вводить западные IT-компании, люди в России оказались отрезаны от получения объективной разносторонней информации, от общения с близкими, от своих данных во многих системах, от облачных архивов, от ресурсов, необходимых им для работы и учебы. Все эти вызовы легли в основу задач, которые решались на хакатоне.
В это раз мы пригласили к участию не только команды с техническими прайваси-проектами и решениями в области доступа к информации (как и всегда!), но и цифровых художников, акционистов, создателей произведений в формате digital art, которые выступили с художественным высказыванием по нашим темам. Мы считаем, что произведения цифрового искусства помогают привлечь внимание к идеям хакатона и дать им новое прочтение.
Пришло время рассказать, что у нас получилось! Мы публикуем интевью с победителям Demhack-5 и еще нескольким командам, которые особенно зацепили нас. А к концу статьи раскроется интрига о том, кто выиграл главные призы. Не переключайтесь! ;)
Команды рассказывают о своих проектах
lazy_static!
![](https://habrastorage.org/getpro/habr/upload_files/5ee/0a2/f42/5ee0a2f42b589431abf844a72d749633.png)
Команда lazy_static! взяла задачу из раздела "Приватность". Была поставлена цель - сделать MVP модуля ядра Linux реализующий возможности USBKill (kernel shutdown, очистка буферов, разминирование криптоконтейнеров, завершение процессов и т.д.), но не user, а в kernel-space.
На хакатоне был разработан модуль ядра, кастомный обработчик для USB подсистемы ядра. Для этого используется API module_usb_driver, позволяющий биндить собственные функции на определённые события, регистрируемые ядром. Эти функции, в свою очередь, используют прерывания USB подсистемы и детектируют события probe и disconnect. При триггере этих событий вызывается обработчик и проводиться проверка легитимности устройства. На будущее есть план сделать Kernel Extensions для MacOS, потому что многие пользуются именно ими, но это будет достаточно проблематично, так как документация по Ядру у Apple весьма плоха в отличии от Linux.
Мы задали несколько вопросов участникам:
Пока что ваш проект предназначен только для Linux, планируете ли вы создать подобную вещь и для других платформ, если да, то насколько это реализуемо и с какими проблемами можете столкнуться по вашему мнению?
Прежде всего хотелось бы довести до ума код для систем семейства GNU Linux, так как код достаточно посредственного качества.
Как вы собираетесь реализовать проверку S/N, о которой вы писали, как план на будущее?
Ее не получилось сделать, банально не хватило времени. По S/N (серийному номеру), это не сверх эффективно и хотелось бы использовать криптографические ключи, так как это будет более безопасно.
DignitiTech
![](https://habrastorage.org/getpro/habr/upload_files/8e3/b79/9ac/8e3b799accbc5deac8c4785898d179f2.png)
Команда DignitiTech тоже решала задачу из области приватности. Они поставили себе на хакатон цель - сделать безопасное решение для назначения встречи / задачи между группой пользователей и защищенное ToDo приложение.
Что же говорит команда о своей задаче и проекте в целом?
Почему именно эта задача была выбрана командой?
Команда давно занимается темой 3NWeb сервисов и их продвижением в обществе, так что нам стало интересно поучаствовать в хакатоне и реализовать задуманное.
Что решает проект DignitiTech?
Наш фундаментально другой подход в базовой архитектуре (3NWeb) позволяет писать современные пользовательские приложения/решения, сохраняя абсолютный уровень защиты и приватности. Разработчик может пользоваться обычными языками, и ему не требуется быть криптографом.
Что и как удалось реализовать за время хакатона?
За 2 дня хакатона смогли реализовать 2 вещи:
Для мобильного приложения были разработаны функции создания и приглашения на мероприятия на языке Flutter, код выложен только тот, который был написан за время проведения хакатона.
На Десктоп был сделан порт приложения из NextCloud на DignitiTech платформу (которая имплементирует 3NWeb стандарты), данное решение реализовано с использованием JS (и фреймворк Vue), HTML, CSS (и его препроцессор SCSS) и некоторых других технологий, использование которых составляет очень малый процент. В этом проекте уже заложены такие функции как - передача данных между процессами и аутентификация, что во много раз повышает анонимность.
Почему 3NWeb?
Авторы данного решения считают, что в 3NWeb объединено все, что нужно пользователю для того, чтобы он мог защитить свою приватность в интернете, защититы данные от утечек. Помимо всего этого платформа предоставляет возможность создавать проекты/контент, сохраняя при этом ту анонимность, которой так не хватает пользователю. 3NWeb проектируется для всего коммьюнити, чтобы это было как интернет, имело бы свои стандарты, но при этом не разрушало бы их анонимность, как сейчас делают многие компании, монополизируя все больше и больше сфер.
3NWeb обязательно будет opensource. Как уже было сказано - 3NWeb анонимем, то есть даже сервер, на котором хранятся данные - ничего про вас не знает. Главная задача - показать пользователям свободную альтернативу в лице 3NWeb, который в будущем поможет многим компаниям создавать продукты, защищающие данные пользователей.
Вадим Мисбах-Соловьёв, технический специалист “Роскомсвободы”, а также ментор многих наших хакатонов, говорит, что, проект DignitiTech можно считать попыткой сделать платформу вроде Telegram (по амбициям и форме) на принципах, напоминающих принципы работы Matrix (по типу работы сети), Etherium (по типу предоставления разработчикам приложений инструментария для работы с сетью и использования её для хранения и передачи информации) и некоторых p2p-мессенджеров (по типу реализации некоторых технических аспектов).
literalLegends
![](https://habrastorage.org/getpro/habr/upload_files/698/6c0/f7c/6986c0f7c65c6f104ded36715d53aafb.png)
Команда literalLegends (один из победителей Demhack-4!) выбрала задачу, которую предложил наш партнер Павел Жовнер, основатель Flipper Zero. Партнеры предложили найти решение для доступа к интернету в сетях с ограничениями. Give me the internet — программа, которая помогает добывать доступ в интернет, если он ограничен captive portal или заблокирован (например, в отеле или аэропорту). Задача - пытаться найти варианты входа в сеть, используя разные способы и подбирая новые.
Команда поставила перед собой цель - создать инструмент для обхода ограниченных WIFI для мобильных и не мобильных устройств, а также для Flipper Zero, и возможно с привлечением Raspberry Pi.
Интересно, как они ее решали?
Почему именно эта задача была выбрана командой?
Один из участников команды уже имел дело с подобным в прошлом, поэтому, увидев данный топик и задачу, мы уже примерно понимали, как и что нам делать, это вызвало у нас интерес.
Что вы хотели сделать?
Задачей было создать приложение, которое помогло бы обойти captive portal в открытых сетях для беспрепятственного использования сети, когда у персоны нет возможности ввести логин/пароль/номер телефона.
Что вы успели за хакатон?
Мы успели реализовать cell hack в python-скрипте, протестировать их на WIFIdog и окружающих вайфаях, начать реализацию MAC Spoofing для OS X (на Linux существует).
Как это работает и как вы это проверяли?
Мы использовали WIFI -Scanner для сниффа WIFI Creds, в том числе IP и MAC-address. Использовали алгоритмы указанные Павлом Жовнером на гитхабе и MAC спуфинг. Для проверки были настроены два демо-сервера, которые имитировали обычный WIFI-spot или точку провайдера, на которых проводилась проверка работоспособности проекта, также проводился тест на живых точках в городах, где находятся разработчики.
Big-Kotik
![](https://habrastorage.org/getpro/habr/upload_files/8fd/c05/445/8fdc054451e99b12f0fe3132baf04745.png)
Команда Big-Kotik решала задачу из трека "Свобода интернета". Описание их проекта звучит так: "Сделаем прокси-сервер, построенный на telegram-ботах, для обхода блокировок, построенных на блокировке IP-адресов".
Давайте, узнаем детали.
Есть ли какие-то технические фишки, которые вы использовали?
Как таковых технических фич у нас нет. Проект (core) работает таким образом, что на устройстве, где пользователь развернул его, мы слушаем TCP-протокол и направляем этот трафик в telegram-ботов. Сейчас наш проект работает только по протоколу HTTP. И вот в будущем мы хотим реализовать поддержку протокола HTTPS, вот это и будет нашей фишкой.
Технология выглядит достаточно емкой, что в таком случае происходит со скоростью передачи данных, насколько сильно она теряется или не теряется вовсе?
У нас есть ограничения со стороны Telegram, заключается оно в том, что мы не можем отсылать файл размером больше 5 Мегабайт и поэтому мы реализовали задержку отправки в 1 секунду, то есть получается, что скорость передачи около 5 мб/сек. А со стороны сервера (пользователя) ограничение в 40 мб/сек. Задержка получается достаточной большой из-за того, что присутствует большое количество промежуточных ботов. Но задачей была не скорость - а обход блокировок.
Почему вы выбрали реализацию через плагин для браузера? Имели ли опыт создания плагинов до этого?
Быстрый анализ показал, что написать плагин для браузера не займет много времени, и технология подключения proxy, это достаточно просто. Плагин работает таким образом, что браузер перенаправляет запрос на локальный сервер, где заранее был развернут сервер для обхода блокировок с помощью telegram-ботов.
Будете ли как-то улучшать проект, и чего нам вообще от него ждать?
Да, за этот хакатон нам удалось собрать команду, которая мотивирована работать дальше. На Demhack-4 была команда, которая реализовывала похожий механизм по обходу блокировок, только это все было сделано в ICQ. Мы хотели объединиться с ним, так как стек проектов очень похож, чтобы в будущем создать качественный продукт.
SOTA
![](https://habrastorage.org/getpro/habr/upload_files/b48/50a/e22/b4850ae226c68ddcb4a67532a487bc2c.png)
Команда SOTA взяла задачу из раздела "Свобода интернета". Ребята решили создать трекер, отслеживающий заход госструктур на различные сайты. Такие инструменты иногда очень нужны для ресурсов правозащитников, активистов или каких-то уязвимых сообществ, члены которых могут подвергаться слежке и преследованиям.
Мы поговорили о том, как команда видит реализацию своего проекта.
Как вы собираетесь проверять гос. орган ли это посещает ресурс или рядовой пользователь?
По IP-адресу, из базы RIPE были выявлены подсети IP-адресов, которые принадлежат госорганам.
Сноска
На самом деле данный метод проверки на факт посещения сайта именно по пулу IP-адресов не новый. Еще на заре блокировок интернет-активисты таким же способом боролись с гос. органами. Но только там это был не трекер, и владельцы ресурсов никак не уведомлялись - гос. органу просто вместо сайта выводилось изображение, и иногда (или зачастую) они содержали достаточно взрослый контент.
Верно ли, что вы тоже будете хостить ссылку для подключения в один клик? Или вы за то, чтобы каждый сам хостил это у себя и настраивал как ему удобно?
Мы предлагаем оба варианта: если у проекта нет своего ресурса развернуть инфраструктуру, то они могут воспользоваться нашей ссылкой, мы готовы помогать разворачивать инфраструктуру для каждого проекта.
Почему вы выбрали язык Go, как один из основных языков, для создания проекта?
Первый прототип был на питоне, он медленный, Go значительно эффективнее и быстрее.
Как сейчас у проекта обстоят дела?
Мы развернули все на AWS и проектом можно пользоваться. Создать трекер и получить код для сайта можно тут: @GosRequestBot. В боте плюс-минус все готово, может быть какую-то минимальную статистику там тоже сделаем, но пока ничего менять не собираемся. JavaScript тег для сайта точно уже менять не будем, его можно ставить.
Скоро еще запустим страничку дашборд, где можно будет смотреть статистику по дням, браузерам и т.д (в общем как Google Analytics, но про госорганы). Учли критику жюри, теперь используем integrity, который не даст нам подменять JavaScript.
TCDB
![](https://habrastorage.org/getpro/habr/upload_files/b06/aa0/02a/b06aa002a53aaed3a20c66e02dd63ca9.png)
Команда TCDB взяла задачу из трека “Свобода интернета”. Сами они описывают, что собираются сделать, так: "Начнём разработку платформы для публикации данных об экономических связях между людьми, компаниями, фондами и государствами".
Откуда вы собираетесь брать данные для публикации их в общий доступ?
Для получения информации, которую мы хотим выкладывать в общий доступ, мы будем использовать официальные источники - сайт ГИБДД, сайт ГосЗакупки, сайт Розыска, сайт Интерпола. Чаще всего, чтобы получать нужную информацию, которую можно опубликовать, нужно всего лишь покопаться в источниках, чтобы увидеть связь между ними.
Если речь идет неподтвержденной информации - то тут мы будем обращаться к иным агрегационным компаниям, с помощью которых в последующем будем подтверждать связь.
Информация будет проверяться. У нас будет выделено два формата проверки "Абсолютная" и "Относительная". Для этого на платформе будет возможность сверки информации на сходство с нашими источниками. Нам должно быть известно, какие издания и журналисты ссылаются друг на друга.
"Абсолютная" проверка - это проверка с помощью официальных ресурсов, которые были перечислены выше (сайт ГИБДД, ГосЗакупки и пр.).
"Относительная" проверка - это проверка с помощью других источников, то есть насколько информация в одном источнике соответствует информации в другом источнике.
Не боитесь, что за теми, кто будет брать оттуда какие-либо сведения - будет вестись слежка. И, если такая мысль посещала вас, то как вы будете защищать пользователя?
Защита пользователя будет осуществляться анонимными криптоключами. Автор будет иметь право создавать и изменять ключи, чтобы повысить анонимность и разделять источники.
Какие проблемы есть у проекта на данном этапе?
У нас есть концептуальная проблема по определению "мельчайшей порции информации", так как может возникнуть необходимость редактуры и дополнений информации, которую мы агрегируем. Это должно как-то влиять на информацию и самого пользователя.
Свой вариант скину в беседу
![](https://habrastorage.org/getpro/habr/upload_files/e67/8ac/fbd/e678acfbdc6d14634ec1c814b761d742.png)
Команда Свой вариант скину в беседу решала задачу из трека Digital Art. Нужно было создать коллекцию NFT-иноагентов (или придумать, как этот процесс автоматизировать). Участники решили взять за основу реестр иноагентов.
Какой именно нейросетью вы пользуетесь для генерации изображений? Насколько нейросети вообще подходят для таких задач?
Мы попробовали много разных нейросетей во время разработки, но остановились на нейросети WOMBO. Она устроила нас тем, что там можно было работать с освещением и качеством картинки, ну, и, выдаваемый ею, результат нам понравился намного больше.
Из каких ресурсов вы парсите информацию об иноагентах?
Парсили данные из официальных источников, из “Википедии” и других, предоставляющих нейтральную информацию о герое, а также из социальных сетей (Instagram, канала в Telegram).
Для написания парсера был использован язык Python, в частности библиотеки Selenium, BS4 (BeautifulSoup) и API Википедии. Далее полученные данные конкатенировались и подавались в предобученную нейронную сеть PEGASUS, которая составляла саммари (краткие факты) текста. На основе выхода этой модели строился запрос.
Возможно ли уже приобрести ваши токены и планируете ли выходить на большой рынок? Почему вы выбрали NFT?
NFT - часть криптовалюты, и как бы заменить или затмить криптовалюту, как говорят многие, у него не получится. NFT на старте стал тем местом, куда побежали абсолютно все, кто считали себя художником или умел пользоваться компьютером. А сейчас, когда рынок переполнился, и в него идут уже осмысленные люди, мы получаем более качественный продукт, нежели он был на старте NFT.
Наши токены пока недоступны, так как мы ожидаем агрегации и хотим поработать с другими людьми, более опытными в этой сфере. В планах выложить токены на OpenSea и весь заработок отдавать в благотворительные организации. Мы думали и о том, чтобы давать токены иногагентов самим иноагентам, чтобы они могли сами решить, что с ними делать.
А мы публикуем итоги хакатона
Призовые места поделили между собой три команды:
1 Место - lazy_static! и их проект kernKill
2 Место - literalLegends с проектом LANgoost
3 Место - DignitiTech и их проект на основе 3Web технологий.
Команды получили денежные призы, а также наборы мерча от “Хабра”, спец-приз от журнала “Хакер”.
Команды высказывали много теплых слов и благодарностей организаторам за возможность объединиться и создать продукт, который будет полезен и нужен пользователям. Такая возможность для сотрудничества, нетворкинга, развития, хоть и в онлайн формате, оказалась очень ценной для участников. Нам приятно :)
«Мы позиционируем себя как неформальный хакатон и любим экспериментировать с темами и форматами. С каждым Demhack увеличивается количество заявок на участие от команд со своими классными проектами и мы находим всё более интересные задачи от партнеров, в том числе международного уровня. Сейчас к пятому хакатону отбор был похож на конкурентную битву — были отобраны лучшие из лучших. Это очень радует нас как организаторов: всё больше сильных команд, которые понимают необходимость проектов, обеспечивающих свободу интернета, заинтересованы в создании проектов на тему приватности», — оценивает мероприятие координатор Demhack Дарья Горбачёва.
Партнерами хакатона стали международные и российские IT-компании, прайваси-стартапы, СМИ, правозащитные организации в сфере гражданских и цифровых прав, медиа и технологические проекты, среди которых: арт-группа “Явь”, Access Now, Russian Hackers, SecurityLab, “Хакер”, “Хабр”, “Инфокультура”, “Теплица социальных технологий”, “За Телеком”, DOXA, SOTA, 7х7 - Горизонтальная Россия, Новая Газета.Европа, Flipper, DRC Group, OONI, VPN-love, Amnezia VPN, AR Hunter, Street.Vision и др.
Поздравляем победителей, благодарим остальные команды за участие, менторов — за уделенное время и рекомендации, жюри — за оценку проектов!
Удачи командам в дальнейшей реализации проектов!
А мы уже начали готовить… Demhack-6! ;)