Expand description
Статистическое ядро sidecheck.
Методология основана на Crosby, Wallach, Riedi, “Opportunities and Limits of Remote Timing Attacks” (ACM TISSEC, 2009): сеть может только добавлять задержку, никогда не убирать её, поэтому нижние перцентили выборки несут значительно меньше шума, чем среднее или даже минимум по сырым данным. На этом строится “box test” — сравнение низких перцентилей двух выборок.
Structs§
- BoxTest
Result - Результат box test: разница между низкими перцентилями двух выборок плюс доверительный интервал, полученный бутстрэпом (без предположений о нормальности распределения сетевых задержек).
Constants§
- BOOTSTRAP_
ITERATIONS - Число итераций bootstrap resampling для доверительного интервала. Вынесено в константу, чтобы её можно было честно указать в отчёте — не просто “confidence: 95%”, а явно “bootstrap confidence на N итерациях”.
Functions§
- box_
test - Box test по методологии Crosby-Wallach: сравнивает низкий перцентиль (по умолчанию p10) двух выборок времени отклика, доверительный интервал строится через bootstrap resampling.
- estimate_
jitter - Оценка джиттера сети по пилотной выборке. Раньше считалась как стандартное отклонение вокруг низкого перцентиля — но дисперсия (квадраты отклонений) крайне чувствительна к единичным выбросам (первый запрос после установки соединения, GC-пауза, шедулинг ОС): один медленный запрос из трёхсот мог задрать оценку в разы, из-за чего два независимых замера одного и того же канала расходились в разы.
- percentile
- Возвращает значение p-го перцентиля отсортированной выборки (p в [0.0, 100.0]).
- required_
samples - Оценка минимального числа запросов на класс, необходимого для обнаружения утечки заданного размера при данном уровне шума сети. Формула из мощностного анализа (power analysis) для сравнения средних: n ≈ 2 * (z_alpha/2 + z_beta)^2 * sigma^2 / delta^2