AEGIS · Фаза 8 завершена

Шифрование скрывает, что вы сказали. Это скрывает сам факт разговора.

Шифрование скрывает содержимое сообщения. Оно не скрывает, что сообщение было. Наблюдатель за сетью всё равно видит, кто с кем говорит, когда и сколько килобайт (КБ) прошло — а в чувствительной обстановке это может значить не меньше самих слов. AEGIS держит трафик между участниками закрытой группы с постоянной скоростью, есть что отправлять или нет, так что время и объём не несут сигнала.

ЯзыкRust
ПротивникГлобальный пассивный
Тесты воркспейса195 проходят
Фаззинг1,17 млн+ прогонов
Последняя отправканедавно
Единственное правило

“Ничего не сделано, пока это не подтвердит симуляция атаки.”

Интуиция про анализ трафика подводила в разработке снова и снова. Доверие заслужил только стенд симуляции, поэтому он и стал барьером. Стенд на Python в sim/ — это книга доказательств за каждым количественным утверждением в спецификации — а не приделанная потом проверка уже выпущенного проекта.

Простыми словами

Что это такое за минуту

Проблема

Тому, кто может смотреть на сеть, не нужно ломать шифрование. Он видит, что одна точка отправила 14 КБ в 09:41:03, а другая получила 14 КБ через три секунды, и что то же самое происходит дважды в день одиннадцать недель подряд. Если это повторяется достаточно часто, получается карта того, кто с кем работает, нарисованная без чтения единого сообщения.

Решение

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

Кому это нужно

Редакциям и всем, кто защищает источник, где человека выдают время и размер контакта. Банкам, страховщикам и отраслевым объединениям, которые конкурируют друг с другом и всё равно должны обмениваться данными. Организациям, которые делятся предупреждениями об атаках, где сам факт обмена и есть чувствительная часть.

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

Идентифицируют вас именно метаданные

Глобальный пассивный противник не может прочитать ваши сообщения. Ему это и не нужно. Он смотрит сразу на все каналы и сопоставляет: этот узел передал 14 КБ в 09:41:03, тот узел получил 14 КБ в 09:41:06, и картина повторяется дважды в день одиннадцать недель подряд.

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

AEGIS превращает провод в ровную, неменяющуюся стену. Постоянная скорость независимо от того, что происходит под ней, так что объём и время не несут вообще никакого сигнала. Демонстрация ниже позволяет запустить атаку против обеих конфигураций и увидеть разницу.

Режим 1

Формованный mixnet

Мелкие и рваные данные плюс весь управляющий трафик. Пакеты Sphinx выпускаются с постоянной скоростью, с жёстким потолком набивки у получателя, так что входящий объём получателя тоже зафиксирован.

Режим 2

Объёмный канал

Передача больших файлов с настраиваемым уровнем защиты — сырой, по корзинам или равномерными пачками. Вы сами выбираете, где находитесь на кривой стоимости; про цену ничего не скрывается.

Интерактив

Побудьте глобальным пассивным противником

Пять отправителей говорят каждый ровно с одним из пяти получателей. Вам виден только объём трафика на каждом канале — ни содержимого, ни маршрутов. Сопоставьте ряды и попробуйте восстановить пары. Потом включите защиту постоянной скоростью и попробуйте снова.

Два профиля провода в сравнении: неформованный трафик даёт прослеживаемые всплески, и противник восстанавливает граф связей; трафик, сформованный под постоянную скорость, ровный, и восстановление падает до уровня случайного угадывания
прокрутите, чтобы увидеть всю схему →
Что противник видит на самом деле. Запустите атаку сами ниже — числа на этой картинке те же, что выдаёт демонстрация.

стенд анализа трафика

Канал отправителя Канал получателя Корреляция, высокая Корреляция, низкая

Вывод противника

Сопоставление…
 
Восстановлено пар
—
Пиковая корреляция
—

Цена защиты

Полоса
1,0×
Добавленная задержка
0 мс

Случайное угадывание даёт 20% — одна пара из пяти. Всё, что заметно выше, означает, что побеждает противник. Цифры стоимости — честная вторая половина: формовка под постоянную скорость не бесплатна, и AEGIS не притворяется, что бесплатна.

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

Восемь фаз, каждая за барьером red team

Реализация завершена по фазу 8, укрепление. Это цифры, которые сообщает репозиторий: фаззинг шёл в подсистеме Windows для Linux (WSL), а тестовая сеть работала на реальных сокетах протокола управления передачей (TCP).

36/36
Криптографические тест-векторы
195
Проходящих тестов воркспейса
1.17M+
Прогонов фаззинга, ноль падений
41/41
Тесты топологии
ОбластьРезультатПримечания
Криптовекторы36 / 36 
Маршрутизация через релеи14 / 14 
Топология41 / 41 
Переговорщик / корреляция объёмного канала25 / 25 
Тесты воркспейса195Все проходят
Фаззинг безопасности1.17M+libFuzzer через WSL, ноль падений
Тестовая сетьНастоящий TCPМаршрутизация пакетов Sphinx по настоящим сокетам
Анализ трассБезвредные против вредоносныхСравнение на настоящих трассах
Кому это нужно

Прячет, кто говорит, а не только что сказано

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

01

Редакции и все, кто защищает источник

Читать сообщение никому не нужно, если видно, что конкретный человек связался с конкретным журналистом в два часа ночи. Людей выдают время и размер.

02

Конкурирующие компании, которым всё равно приходится обмениваться данными

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

03

Организации, обменивающиеся предупреждениями об атаках

Обмениваться данными об угрозах полезно, но сам факт, что вас видели за таким обменом, может оказаться как раз чувствительной частью. Здесь в тайне остаётся сам факт разговора, а не только его содержимое.

Узнаёте здесь свою ситуацию? Сейчас всё это открыто для бета-тестирования, и отзывы тех, для кого это делается, действительно меняют систему. Стать бета-тестировщиком →
Защиты

Что лежит поверх формовки

  • Рукопожатия с прямой секретностью. Компрометация долгоживущих ключей не раскрывает задним числом прошлые сессии.
  • Выбор пути с учётом репутации. Маршруты предпочитают релеи с устоявшимся поведением.
  • Распределённые маяки случайности. Ни одна сторона в одиночку не управляет энтропией выбора пути.
  • Доказательства репутации с нулевым разглашением. Релей доказывает, что превышает порог репутации, не раскрывая свою оценку.
  • Отбор сторожевых узлов. Устойчивость к сивилловой атаке там, где это важнее всего.
Честные границы

Где гарантии заканчиваются

  • Только внутренний трафик. Сильные гарантии действуют внутри консорциума. Выход в обычный интернет слабее, и обратного не утверждается.
  • Эмпирически, а не доказано. Результаты — это эмпирические границы при заявленной модели противника. Это не математические доказательства.
  • Задержка заложена в конструкцию. Задержка в несколько секунд — это свойство устройства системы, а не проблема настройки, которую когда-нибудь оптимизируют.
  • Не тот инструмент для двух сторон. AEGIS годится, чтобы прятать граф связей между многими узлами. Для канала между двумя сторонами защиты канального уровня справляются лучше.
  • Открытые вопросы остаются. docs/ops/RESEARCH_AGENDA.md — честный список того, что не доделано.
Гигиена репозитория: непрерывная интеграция (CI) на GitHub Actions, cargo deny и общая для воркспейса политика, запрещающая unsafe-код. Для сетевого стека на Rust, обрабатывающего враждебный вход, #![forbid(unsafe_code)] по всему воркспейсу — самая несущая строка во всём проекте.