Целостность и безопасность: что Kshana моделирует, а что нет
Kshana сообщает два показателя качества (FoM) — целостность и безопасность, — которые легко принять за одноимённые величины авиационного уровня. Эта страница прямо говорит, что они собой представляют сегодня, чем они не являются и что добавляет дорожная карта. Если вы оцениваете Kshana для контекста безопасности жизни или сертификации, прочтите это в первую очередь.
Сегодня (v0.37.0)#
Показатель целостности — самосогласованность фильтра#
Показатель целостности — это доля отсчётов перерыва, в которых истинная ошибка времени остаётся внутри собственной защитной границы k сигма фильтра Калмана:
integrity = (# outage samples with |error| <= k * phase_sigma) / (# outage samples)
Он измеряет, честна ли заявленная самим фильтром неопределённость относительно его собственной ошибки во время перерыва в работе GNSS (глобальной навигационной спутниковой системы). Это полезная внутренняя проверка согласованности.
Он не является:
- горизонтальным или вертикальным уровнем защиты (HPL/VPL) — уровня защиты в области положения здесь вообще нет (пакеты часов работают в области времени);
- риском для целостности или вероятностью опасно вводящей в заблуждение информации (P_HMI);
- сравнением с пределом тревоги;
- системой, отвечающей требованиям RTCA DO-229E / DO-316 или EUROCAE ED-259A (RTCA: Radio Technical Commission for Aeronautics; EUROCAE: Европейская организация по оборудованию для гражданской авиации) или какого-либо иного стандарта сертификации.
Показатель безопасности — аналитическая граница обнаруживаемости спуфинга#
Показатель безопасности — это граница обнаруживаемости спуфинга, основанная на стабильности часов: при заданном шуме часов (спектральные плотности мощности (PSD) белой частоты и случайного блуждания) и окне мониторинга это аналитический запас обнаружения монитора согласованности по одним часам против медленно нарастающего ложного сдвига времени (спуфинга). Более тихие часы (например, оптические) обнаруживают меньший и более медленный спуфинг, чем более шумные (например, CSAC (миниатюрные атомные часы)), — в этом контрасте и состоит смысл демонстратора.
Он не является детектором RAIM (автономного контроля целостности приёмника) по нескольким спутникам. Здесь нет остатков псевдодальностей между спутниками, нет уровня защиты и нет P_HMI. Тест «инновация против сигмы» имеет ту же математическую форму, что и классическое обнаружение отказов RAIM (Brown), но число — это аналитическая граница для заданных часов, а не реализация RAIM, и оно осмысленно только в контексте настроенного сценария спуфинга (см. вид сценария spoof, который вводит реальную нарастающую атаку).
Это указано в выходных данных. Виды clock, orbit, hybrid и fusion не настраивают атаку, поэтому их однострочная сводка печатает security n/a (no attack) вместо числа, а их документ результата помечает fom.security как applicable: false с указанием причины в блоке figure_tiers. Само значение остаётся в документе для тех, кому нужна граница.
Настоящий RAIM по моментальному снимку, по разделению решений и ARAIM (src/raim.rs)#
Настоящий RAIM в области положения реализован в src/raim.rs отдельно от показателя самосогласованности выше:
- Контроль остатков по нескольким спутникам — он строит матрицу геометрии линий визирования на видимые спутники, формирует решение по положению и часам методом наименьших квадратов и проверяет сумму квадратов остатков.
- Обнаружение отказов по χ² —
SSE/σ²(SSE: сумма квадратов остатков) подчиняется χ²(n−4) при гипотезе об отсутствии отказа; отказ объявляется вышеchi2_{1-P_fa}(n-4). Пороги χ² берутся из вычисления регуляризованной неполной гамма-функции без зависимостей (точного, без таблиц). - HPL / VPL на основе наклона —
max_i(slope_i)·pbias·σ, гдеslope_i— чувствительность ошибки положения к каждому спутнику, взятая из матрицы-шляпы, аpbias— смещение нецентрального χ², удовлетворяющее заданной вероятности пропуска обнаруженияP_md. - RAIM по разделению решений (MHSS: разделение решений по множеству гипотез) — для решения по всем спутникам в зоне видимости и для каждого частного решения с исключением одного спутника разность вложенных оценок
Δ_k = x_k − x₀и обнаруживает, и определяет отказавший спутник, и питает границу уровня защиты. - Бюджет риска для целостности (P_HMI) в ARAIM (улучшенный автономный контроль целостности приёмника) —
araim_raimрешает задачу о наименьших HPL/VPL, при которых суммарная вероятность опасно вводящей в заблуждение информацииP_HMI = Σ_k p_fault,k · Q((PL − T_k)/σ_k)(Blanch et al., Baseline ARAIM) соответствует явно заданному распределению риска для целостности, и сообщает риск, достигаемый этими уровнями, — так что целостность можно напрямую обменивать на предел тревоги, а не оставлять неявной в фиксированном множителеK_md. - Диаграмма целостности Stanford–ESA (ESA: Европейское космическое агентство) — накопитель по эпохам классифицирует
(error, PL)по областям «Доступно» / «Система недоступна» / «Вводящая в заблуждение» / «Опасно вводящая в заблуждение» для сводки по доступности. - Доступно из конца в конец — вид сценария
integrityвыполняет всё перечисленное для орбитальной группировки SGP4 (Simplified General Perturbations 4) или кеплеровской, либо считанной из реальных TLE (двухстрочных наборов элементов) или из навигационного файла RINEX (Receiver Independent Exchange Format), и выдаёт карту доступности HPL/VPL по эпохам относительно заданных пределов тревоги (scenarios/integrity-raim.toml). Тот же прогон экспортирует вертикальную диаграмму Стэнфорда: в каждую защищённую эпоху воспроизводимая выборка ошибки дальности без отказов с заданным начальным значением отображается через геометрию в фактическую вертикальную ошибку и классифицируется относительно VPL и вертикального предела тревоги, так что результат JSON (JavaScript Object Notation) и сводка CLI (интерфейса командной строки) содержат счётчики областей (события целостности и HMI: опасно вводящая в заблуждение информация), а не только долю доступности. На входящем в поставкуscenarios/integrity-raim.tomlпрогон сообщает 344 доступных эпох из 361 (95,3 %) при пределе тревоги 40 м по горизонтали и 50 м по вертикали, с 0 событий целостности и 0 HMI. - ARAIM для двух орбитальных группировок с сообщением поддержки целостности —
araim_dual_raimдобавляет режим отказа всей орбитальной группировки: помимо гипотез об отсутствии отказа и об отказе одного спутника каждая орбитальная группировка вносит одну гипотезу, исключающую все её спутники, с априорной вероятностьюP_const, в ту же сумму риска MHSS для целостности.IntegritySupportMessage(ISM) несёт точность дальности пользователя для целостности (σ_URA), среднеквадратичную точность (σ_URE), максимальное номинальное смещениеb_nom, которое односторонне включается в каждый режим, и априорные вероятностиP_satиP_const; опорный набор WG-C (рабочая группа C сотрудничества Европейского союза и США по спутниковой навигации, чья техническая подгруппа по ARAIM публикует эталон) — σ_URA = 0,75 м, σ_URE = 0,67 м, b_nom = 0,75 м, P_sat = 1e-5 и P_const = 1e-4.P_const = 0воспроизводит результат одиночного отказаaraim_raimбит в бит. Видintegrityидёт по этому пути сaraim_dual = true(scenarios/araim-gps-galileo.toml: GPS + Galileo, 48 спутников, 145 доступных эпох из 145 при тех же пределах тревоги). - Уровни защиты по опубликованным эталонным векторам — вид
araim-reference-checkзапускаетaraim_protection_levelиaraim_integrity_riskдвижка на собственных разобранных примерах подгруппы ARAIM WG-C (Reference Airborne Algorithm Description Document v3.1, 2019, приложение D, и Milestone 3 Report, 2016, приложение A). Наибольшая разность вертикального и горизонтального уровней защиты на приёмочном векторе составляет 0,0437 м при собственном допуске документов 0,05 м. Эта строка имеет уровень VALIDATED вVERIFICATION-MATRIX.md: она проверяет уравнение уровня защиты, а не эксплуатационный ISM или приёмник.
Оставшийся пробел (дорожная карта)#
Чего raim.rs пока не делает:
- он не включён в показатель качества сценариев часов и удержания времени (holdover) — эти пакеты по-прежнему сообщают описанный выше показатель целостности по самосогласованности фильтра, а не HPL/VPL;
- гипотезы об отказах — это случай без отказов, отдельные спутники и целые орбитальные группировки; одновременные отказы подмножеств из двух или более спутников (SV: space vehicle, то есть спутник) не моделируются;
- ISM — настраиваемый набор параметров (с опорными значениями WG-C), а не передаваемое в эфир эксплуатационное сообщение и не проверенная модель угроз;
- обнаружение и исключение отказов (FDE) — только для одного спутника и только по моментальному снимку: разделение решений называет отказавший спутник, а
snapshot_raim_fdeзаново решает каждое исключение одного спутника и возвращает исключённый спутник с тестом хи-квадрат и уровнями защиты оставшегося подмножества, но положение с защитой от исключения не сообщается, а вид сценарияintegrityне выполняет шаг исключения.
Ядра по моментальному снимку, по разделению решений и ARAIM проверены на геометрии реальных прецизионных орбит IGS (International GNSS Service) (SP3: Standard Product 3), а не только на синтетических орбитальных группировках: tests/igs_real_data.rs формирует геометрию линий визирования по первой эпохе подлинного продукта IGS SP3 на реальной наземной станции и проверяет, что уровни защиты конечны и лежат в пределах тревоги APV-I (заход на посадку с вертикальным наведением) 40 м по горизонтали и 50 м по вертикали, что смещение псевдодальности 60 м вызывает срабатывание монитора χ², что разделение решений определяет отказавший спутник и что уровни ARAIM удовлетворяют заданному P_HMI. tests/araim_dual_real_data.rs выполняет путь для двух орбитальных группировок на реальных каталогах Celestrak GPS и Galileo от 2026-06-07, распространённых на одну общую эпоху (см. REAL_TLE_GUIDE.md §3). Более глубокая перекрёстная проверка — сравнение уровней защиты эпоха за эпохой с gLAB (GNSS-Lab Tool, пакет обработки данных GNSS, распространяемый ESA) на полной дуге наблюдений RINEX — добавила бы паритет в области приёмника. Она не выполнена: вид pvt вычисляет кодовое одноточечное положение по реальным наблюдениям RINEX, но ни один уровень защиты по этому решению не сравнивался с gLAB.
Таким образом, raim.rs — это настоящее ядро расчёта уровней защиты и риска для целостности, доступное из видов сценариев integrity и araim-reference-check, опробованное на реальной геометрии опорных орбит и проверенное по эталонным векторам WG-C. Отказы в подмножествах из нескольких спутников, сверка с gLAB на уровне приёмника и интеграция с показателями качества часов остаются пунктами дорожной карты; ничто из этого не является доказательством для сертификации.
См. также#
GLOSSARY.md— краткие определения каждого показателя качества (FoM) и каждой аббревиатуры.ARAIM_REFERENCE.md— параметры ISM и эталонные векторы WG-C.SLOT-TIMING.md— уровень защиты по времени (TPL) для часов в режиме выбега, который действует при условии обнаружения.VALIDATION.md— какие величины проверены по эталону, а какие — проверки на внутреннюю согласованность.src/security.rs— вывод границы обнаружимости спуфинга.
RAIM рядом с показателями качества удержания времени часами (holdover) (0,36, по выбору)#
Сценарий для часов может содержать раздел [integrity] (src/clock_integrity.rs): пункт наблюдения (lat_deg, lon_deg, height_m), заготовки орбитальных группировок (systems, по умолчанию gps-baseline), маску, сигму остатков дальности, вероятности ложной тревоги и пропуска обнаружения, горизонтальный и вертикальный пределы тревоги, шаг по эпохам и необязательное заданное смещение на одном спутнике. Тогда прогон выдаёт отдельный блок integrity_fom: по каждой эпохе — спутники в зоне видимости, мгновенные уровни защиты RAIM и вердикт (available, alarm, unavailable-pl-above-al, unavailable-too-few-satellites, unavailable-gnss-denied), а также счётчики и доступность за прогон. Пока на временной шкале указано, что GNSS подавлен, RAIM недоступен, и ничего не экстраполируется; ухудшенный интервал оценивается как номинальный. Показатели качества holdover не меняются, а без этого раздела вывод побайтно идентичен. MODELLED: репрезентативное небо по заготовке, синтетические остатки и заданные пределы. Требуется runs = 1.
Воспроизведение максимального значения URA в Milestone 3 по ARAIM, рабочая группа WG-C ЕС и США (CAP-05c)#
В более раннем плане обещалось сравнение с «Table A-3» из технической заметки по EU-ARAIM. Публичного источника этой таблицы найти не удалось (в публичных отчётах Milestone 1–3 технической подгруппы по ARAIM рабочей группы C ЕС и США таблицы A-3 нет), поэтому это сравнение снято, и под таким названием ничего не обещается.
Вместо этого предпринимается попытка воспроизвести то, что опубликовано: отчёт Milestone 3 (25 февраля 2016 г., копия на GPS.gov, SHA-256 156147e1...13d8), таблицы 5, 6 и 7, в которых для каждой конфигурации орбитальной группировки и для каждого из RNP 0,1 и RNP 0,3 напечатано наибольшее значение sigma_URA, при котором у 90 % пользователей доступность составляет 99,5 %. Проверяются двенадцать напечатанных значений (строки Depleted и Baseline таблиц для двух частот) по порогам, предварительно зарегистрированным в xval/araim-m3/PREREGISTRATION.md до любого зачётного прогона; неустранимые расхождения изложены там же: нет файлов альманаха, вместо реальных слотов использованы оболочки Уокера, более грубые сетка и шаг, а вместо собственного текста отчёта применён горизонтальный путь ADD v4.2 движка. Таблицы 8–13 (одна частота) и строки Optimistic не рассматриваются, причины указаны там же. Результат: воспроизведено 8 из 12 значений, 4 NOT MET (зафиксированы): значения для двух орбитальных группировок и все значения только для Galileo совпадают (включая строки N/A); значение для двух группировок Depleted при RNP 0,1 даёт покрытие 0,847 при 9 м против напечатанных 9 м (требуется 0,90), а три значения только для GPS расходятся сильно (покрытие 0,70 при 4 м, 0,58 при 6 м, 0,65 при 10 м против напечатанных 4 м, 6 м и «>10 м»). Расхождения для GPS могут объясняться тем, что вместо реальных слотов GPS взята однородная оболочка Уокера (D1); это гипотеза, а не вывод. Результат остаётся MODELLED при любом исходе. Исследование — src/bin/gen_araim_m3_study.rs; измеренные покрытия находятся в xval/araim-m3/results.json и оцениваются в tests/araim_m3_reproduction.rs. Сам отчёт цитируется, но не включён в репозиторий.