предварительная серия

исследование

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

потоков
10
узлов
3
набор
c25519
прогонов на конфигурацию
5 x 30 с
статистика
медиана

таблица и графики сохраняют результаты пассивной атаки на ревизии 2078098 в трёх наборах: main даёт строки без защиты и с фоном поверх, rates даёт строки с постоянной скоростью клиента, paced даёт строки с отправкой узлами по своим часам. расписание каждого клиента стартует со случайной фазой. для проверки согласованности набор paced повторяет прогоны только с клиентом: их медианы при окне 10 мс, auc 0.922 при 70 мс и 0.946 при 35 мс, лежат в разбросе прогонов набора rates, 0.890-0.965 и 0.907-0.984. узлы и клиенты работают в одном процессе на loopback, поэтому сетевых задержек нет. последний узел возвращает каждое сообщение обратно: разговор двух клиентов через mailbox в эти числа не входит. при пяти прогонах на точку различия значимыми не заявляются; полная серия по тридцать прогонов на точку впереди.

наблюдатель видит только моменты пересечения кадров.

он смотрит на входной канал и последний канал между узлами, считает кадры в окнах времени для каждого потока и коррелирует каждый входной поток с каждым выходным. окно выбирает наблюдатель, поэтому считаются оба, 10 и 100 мс. угадывание это auc 0.5 и точность top-1 10%.

auc атаки против полосы между узлами и против круговой задержки для фона поверх, постоянной скорости клиента и отправки узлами по своим часам
защитаполоса между узламимедиана кругаauc, 10 мсauc, 100 мсtop-1, 10 мс
нетx1.000.146 мс1.0001.000100%
фон поверх, +2xx2.990.131 мс1.0001.000100%
постоянная скорость клиента, 70 мсx2.8548 мс0.9510.95170%
постоянная скорость клиента, 35 мсx5.6920 мс0.9620.93770%
узлы по своим часам, 66.5 мсx3.00187 мс0.5620.4635%
узлы по своим часам, 33.25 мсx6.0088 мс0.5540.48715%
оба, клиент 70 мс, узлы 66.5 мсx3.00230 мс0.4620.4423%
оба, клиент 35 мс, узлы 33.25 мсx5.99108 мс0.6730.47220%

что показывает серия.

фон поверх не помогает.

фоновый трафик поверх сообщений не помогает вообще: даже при тройной полосе связывается каждый поток.

постоянная скорость клиента не скрывает поток.

каждый клиент тикает со своей фазой, и фаза проходит через цепочку узлов, пересылающих сразу. при окне 10 мс атака связывает потоки на любом периоде: медианы auc лежат между 0.93 и 0.99. при окне 100 мс auc падает до 0.50-0.55 только там, где период делит окно, на 25, 50 и 100 мс, а на остальных периодах держится на 0.77-0.95: при делящем периоде почти все оценки равны, и о защите это ничего не говорит.

часы на узлах ослабляют эту атаку.

атака считает только ячейки: моменты открытия и закрытия соединений цепочки совпадают вдоль неё и в атаку пока не входят. медианы auc лежат между 0.44 и 0.67 против 0.94-1.00 в остальных строках, но показать, что атака падает до угадывания, эти прогоны не могут: четыре медианы из восьми лежат вне 0.45-0.55, а такой вывод требует интервала эквивалентности внутри этой полосы, с величиной и допуском, заданными до серии; пять прогонов такого интервала не дают. 95% интервал отдельного прогона включает 0.5 в 33 случаях из 40; из остальных семи три лежат выше, четыре ниже. пять прогонов по десять потоков не отличают малую остаточную утечку от её отсутствия, это покажет полная серия. цена: постоянный поток на каждом канале, по которому шлёт узел, и около 2.7-2.8 периода узла к кругу: 187 мс при 66.5 мс, 88 мс при 33.25 мс. в строках с обеими мерами период узла на 5% короче клиентского, чтобы пропущенный тик наверстать; строки только с часами узлов берут те же периоды узла при клиенте, который шлёт сразу.

входной узел не моделируется.

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

auc атаки против периода ячеек клиента при окнах 10 и 100 мс

что измерено и что в плане.

ключевой материал
измерено: точные непрерывные 32-байтовые вхождения на выбранный ключ ячейки клиента в экспортированных данных объектов go. для active/closed-now/closed-1s: c25519 none 3/3/3 и all 2/2/2; гост none 3/3/3 и all 1/0/0. каждый ключ в каждом процессе дал указанное число. на условие запланированы и оценены 30 новых процессов; оценены все 360, исключений нет. ревизия eddddb2, оптимизированный go 1.27.3, linux/amd64. c25519 all наблюдался после close; нули гост стирания не доказывают. внешнее получение памяти, диск/swap/история и другие секреты остаются неизмеренными за v0.4.0.
прямая секретность
модульные тесты проверяют, что служебная ячейка установки перестаёт открываться, когда узел освобождает онион-ключ, под который она собрана. открытие записанных соседом ячеек ключами из памяти узла в зависимости от возраста записи остаётся неизмеренным и отложено за v0.4.0. кооперативный эксперимент клиента не расшифровывает записанный трафик.
метаданные
атака корреляции трафика связывает потоки на входном канале с потоками на последнем канале между узлами только по моментам и числу ячеек. auc, точность top-1 и tpr при fpr 0.01 считаются против интенсивности фона, постоянной скорости клиента и отправки узлами по своим часам. уровни задержки на узле, классы размеров сообщений и топология разговора, два входа и mailbox, в плане.
временная метка
историческая серия c25519 f0f1885, оптимизированный go 1.27.3: 960 завершённых запусков в 40 блоках повторов. верное указание цели с отзывчивостью исходной цепочки: 40/40 без часов узлов в каждом режиме клиента и 0/40 на каждом проверенном положительном периоде. при 25, 47.5, 50 и 52.5 мс цель отзывчива в 40/40 каждого активного/sham условия; при 75 мс все шесть цепочек закрылись в каждом из 160 запусков, это потеря доступности. сохранены семь неверных активных указаний и семь указаний sham; immediate без часов дал sham 4/40. каждый знаменатель относится к своему режиму, периоду и воздействию. у пассивной таблицы отдельная ревизия.
частичная компрометация
как часто случайная цепочка встречает подставные узлы, посчитано и измерено выбором самого клиента. знание узла о маршруте выведено из протокола, тест lab с настоящими узлами проверяет границу доверия. оставшиеся полные измерения того, что видят и связывают узлы, обязательны для v0.4.0, проектируются и не реализованы.
цена
круговая задержка через цепочку, множитель полосы от фона и заполнения и бенчмарки согласования ключа, подписи и шифрования ячейки, гост против x25519. пропускная способность узла, полезная скорость на клиента и вклад блокировки памяти в плане.

серии идут при остановленном кластере kind и без сборки на хосте; в каждой строке отчёта корреляции записаны загрузка внутри вм, где идёт обвязка, зёрна и ревизия кода. зёрна задают расписания клиентов, а не прогон: в наборе paced, запущенном дважды с теми же зёрнами и образом, одна медиана при часах узлов сдвинулась примерно на 0.15. круг без защиты или только с фоном короче миллисекунды и отличается между наборами примерно на 0.01 мс, поэтому его последние цифры ничего не значат.

методика и модели нарушителя