Integralność i bezpieczeństwo: co Kshana modeluje, a czego nie
Kshana podaje dwa wskaźniki jakości (FoM): Integralność i Bezpieczeństwo, które łatwo pomylić z wielkościami o tych samych nazwach stosowanymi w lotnictwie. Ta strona wprost opisuje, czym są dziś, czym nie są i co dodaje plan rozwoju. Jeśli oceniasz Kshana pod kątem zastosowań związanych z bezpieczeństwem życia lub certyfikacji, przeczytaj to najpierw.
Stan obecny (v0.37.0)#
Wskaźnik integralności: samospójność filtra#
Wskaźnik integralności to odsetek próbek z przerwy w sygnale, w których prawdziwy błąd czasu mieści się w granicy ochrony k-sigma wyznaczonej przez sam filtr Kalmana:
integrity = (# outage samples with |error| <= k * phase_sigma) / (# outage samples)
Mierzy on, czy zgłaszana przez filtr niepewność uczciwie odzwierciedla jego własny błąd podczas przerwy w działaniu GNSS (globalnego systemu nawigacji satelitarnej). Jest to użyteczna wewnętrzna kontrola spójności.
To nie jest:
- poziomy/pionowy poziom ochrony (HPL/VPL): nie ma żadnego poziomu ochrony w dziedzinie pozycji (pakiety zegara dotyczą dziedziny czasu);
- ryzyko integralności / prawdopodobieństwo niebezpiecznie mylących informacji (P_HMI);
- porównanie z limitem alarmowym;
- wynik zgodny z RTCA DO-229E / DO-316 lub EUROCAE ED-259A (RTCA: Radio Technical Commission for Aeronautics; EUROCAE: European Organisation for Civil Aviation Equipment) ani z żadną inną normą certyfikacyjną.
Wskaźnik bezpieczeństwa: analityczna granica wykrywalności spoofingu#
Wskaźnik bezpieczeństwa to granica wykrywalności spoofingu oparta na stabilności zegara: przy danym szumie zegara (PSD szumu białego częstotliwości i błądzenia losowego (PSD: gęstości widmowe mocy)) i oknie monitorowania jest to analityczny margines detekcji monitora spójności pojedynczego zegara wobec powoli narastającego fałszywego czasu spoofingu. Cichszy zegar (np. zegar optyczny) wykrywa mniejszy, wolniejszy spoofing niż głośniejszy (np. CSAC (atomowy zegar w skali układu scalonego)); ten kontrast jest sednem demonstratora.
To nie jest wielosatelitarny detektor RAIM (autonomicznego monitorowania integralności przez odbiornik). Nie ma tu rezyduów pseudoodległości między satelitami, poziomu ochrony ani P_HMI. Test innowacji względem sigma ma ten sam matematyczny kształt co klasyczna detekcja błędów RAIM (Brown), ale liczba ta jest analityczną granicą dla danego zegara, a nie implementacją RAIM, i ma sens wyłącznie w kontekście skonfigurowanego scenariusza spoofingu (zob. rodzaj scenariusza spoof, który wprowadza rzeczywisty narastający atak).
Wynik mówi o tym wprost. Rodzaje clock, orbit, hybrid i fusion nie konfigurują żadnego ataku, więc ich jednowierszowe podsumowanie wypisuje security n/a (no attack) zamiast liczby, a ich dokument wyniku oznacza fom.security jako applicable: false, z podaniem powodu, w bloku figure_tiers. Sama wartość pozostaje w dokumencie dla każdego, kto chce znać granicę.
Rzeczywisty RAIM: migawkowy, z rozdzieleniem rozwiązań i ARAIM (src/raim.rs)#
Prawdziwy RAIM w dziedzinie pozycji jest zaimplementowany w src/raim.rs, odrębnie od omówionego wyżej wskaźnika samospójności:
- Monitorowanie rezyduów wielu satelitów: buduje macierz geometrii linii widzenia do widocznych satelitów, tworzy rozwiązanie pozycji i zegara metodą najmniejszych kwadratów i testuje sumę kwadratów rezyduów.
- Detekcja błędów testem χ²:
SSE/σ²(SSE: suma kwadratów rezyduów) ma rozkład χ²(n−4) przy hipotezie braku błędu; błąd jest deklarowany powyżejchi2_{1-P_fa}(n-4). Progi χ² pochodzą z niezależnego od bibliotek obliczania regularyzowanej niepełnej funkcji gamma (dokładnie, bez tablic). - HPL / VPL oparte na nachyleniu:
max_i(slope_i)·pbias·σ, gdzieslope_ito czułość błędu pozycji na pojedynczy satelita wynikająca z macierzy rzutowej, apbiasto obciążenie o niecentralnym rozkładzie χ², które spełnia skonfigurowane prawdopodobieństwo niewykryciaP_md. - RAIM z rozdzieleniem rozwiązań (MHSS: rozdzielenie rozwiązań dla wielu hipotez): dla rozwiązania ze wszystkich widocznych satelitów i każdego podrozwiązania z wykluczeniem pojedynczego satelity rozdzielenie zagnieżdżonych estymatorów
Δ_k = x_k − x₀zarówno wykrywa, jak i identyfikuje uszkodzony satelita i zasila granicę poziomu ochrony. - Budżet ryzyka integralności (P_HMI) ARAIM (zaawansowanego autonomicznego monitorowania integralności przez odbiornik):
araim_raimwyznacza najmniejsze HPL/VPL, dla których zsumowane prawdopodobieństwo niebezpiecznie mylących informacjiP_HMI = Σ_k p_fault,k · Q((PL − T_k)/σ_k)(Blanch i in., Baseline ARAIM) spełnia jawny przydział ryzyka integralności, i podaje ryzyko osiągane przez te poziomy. Dzięki temu integralność można bezpośrednio wymieniać na limit alarmowy, zamiast zostawiać ją niejawnie w stałym mnożnikuK_md. - Diagram integralności Stanford–ESA (ESA: Europejska Agencja Kosmiczna): akumulator dla każdej epoki klasyfikuje
(error, PL)do obszarów Dostępny / Niedostępny system / Mylący / Niebezpiecznie mylący na potrzeby podsumowania dostępności. - Osiągalne od początku do końca: rodzaj scenariusza
integrityuruchamia powyższe na konstelacji SGP4 (Simplified General Perturbations 4) lub keplerowskiej albo wczytanej z rzeczywistych TLE (dwuwierszowych zestawów elementów orbitalnych) lub z pliku nawigacyjnego RINEX (Receiver Independent Exchange Format) i generuje dla każdej epoki mapę dostępności HPL/VPL względem skonfigurowanych limitów alarmowych (scenarios/integrity-raim.toml). Ten sam przebieg eksportuje pionowy diagram Stanforda: w każdej chronionej epoce wylosowany z ziarnem, odtwarzalny błąd odległości bez usterki jest odwzorowywany przez geometrię na rzeczywisty błąd pionowy i klasyfikowany względem VPL i pionowego limitu alarmowego, tak że wynik JSON (JavaScript Object Notation) i podsumowanie CLI (interfejs wiersza poleceń) zawierają liczby w poszczególnych obszarach (zdarzenia integralności oraz HMI: niebezpiecznie mylące informacje), a nie tylko odsetek dostępności. Na dołączonymscenarios/integrity-raim.tomlprzebieg podaje 344 z 361 epok dostępnych (95,3 %) przy poziomym limicie alarmowym 40 m i pionowym 50 m, z 0 zdarzeń integralności i 0 HMI. - ARAIM dwukonstelacyjny z komunikatem wsparcia integralności:
araim_dual_raimdodaje tryb błędu obejmujący całą konstelację: oprócz hipotez bez usterki i pojedynczego satelity każda konstelacja wnosi jedną hipotezę usuwającą wszystkie jej satelity, z prawdopodobieństwem a prioriP_const, do tej samej sumy ryzyka integralności MHSS.IntegritySupportMessage(ISM) zawiera dokładność zasięgu użytkownika dla integralności (σ_URA), średniokwadratową dokładność (σ_URE), maksymalne nominalne obciążenieb_nomwliczane jednostronnie do każdego trybu oraz prawdopodobieństwa a prioriP_satiP_const; jego zestaw odniesienia WG-C (Grupy Roboczej C unijno-amerykańskiej współpracy w zakresie nawigacji satelitarnej, której podgrupa techniczna ARAIM publikuje wzorzec) to σ_URA = 0,75 m, σ_URE = 0,67 m, b_nom = 0,75 m, P_sat = 1e-5 i P_const = 1e-4.P_const = 0odtwarza wynik jednobłędowyaraim_raimbit w bit. Rodzajintegritykorzysta z tej ścieżki zaraim_dual = true(scenarios/araim-gps-galileo.toml: GPS + Galileo, 48 satelitów, 145 z 145 epok dostępnych przy tych samych limitach alarmowych). - Poziomy ochrony względem opublikowanych wektorów odniesienia: rodzaj
araim-reference-checkuruchamiaaraim_protection_leveliaraim_integrity_risksilnika na przykładach obliczeniowych z podgrupy ARAIM WG-C (Reference Airborne Algorithm Description Document v3.1, 2019, dodatek D, oraz Milestone 3 Report, 2016, załącznik A). Największa różnica poziomów ochrony pionowego/poziomego na wektorze akceptacyjnym wynosi 0,0437 m przy tolerancji samych dokumentów równej 0,05 m. Ten wiersz ma status VALIDATED wVERIFICATION-MATRIX.md: sprawdza równanie poziomu ochrony, a nie operacyjny ISM ani odbiornik.
Pozostała luka (plan rozwoju)#
Czego raim.rs jeszcze nie robi:
- nie jest włączony do wskaźnika jakości scenariusza zegara/holdover: te pakiety nadal podają opisany wyżej wskaźnik samospójności filtra, a nie HPL/VPL;
- hipotezami błędów są przypadek bez usterki, pojedyncze satelity i całe konstelacje; jednoczesne usterki podzbiorów dwóch lub więcej satelitów (SV: pojazd kosmiczny, czyli satelita) nie są modelowane;
- ISM jest konfigurowalnym zestawem parametrów (z wartościami odniesienia WG-C), a nie nadawanym operacyjnym komunikatem ani zwalidowanym modelem zagrożeń;
- detekcja i wykluczanie błędów (FDE) jest tylko jednosatelitarne i migawkowe: rozdzielenie rozwiązań wskazuje uszkodzony satelita, a
snapshot_raim_fdeponownie rozwiązuje każde wykluczenie pojedynczego satelity i zwraca wykluczony satelita wraz z testem chi-kwadrat i poziomami ochrony pozostałego podzbioru, ale nie podaje pozycji chronionej po wykluczeniu, a rodzaj scenariuszaintegritynie wykonuje kroku wykluczenia.
Rdzenie migawkowy, z rozdzieleniem rozwiązań i ARAIM są sprawdzane na rzeczywistej geometrii z precyzyjnych orbit IGS (Międzynarodowa Służba GNSS) (SP3: Standard Product 3), a nie tylko na konstelacjach syntetycznych: tests/igs_real_data.rs tworzy geometrię linii widzenia z pierwszej epoki prawdziwego produktu IGS SP3 na rzeczywistej stacji naziemnej i sprawdza, że poziomy ochrony są skończone i mieszczą się w limitach alarmowych APV-I (podejście z naprowadzaniem pionowym) wynoszących 40 m w poziomie i 50 m w pionie, że obciążenie pseudoodległości o 60 m uruchamia monitor χ², że rozdzielenie rozwiązań identyfikuje uszkodzony satelita oraz że poziomy ARAIM spełniają przydzielone P_HMI. tests/araim_dual_real_data.rs uruchamia ścieżkę dwukonstelacyjną na rzeczywistych katalogach Celestrak GPS i Galileo z 2026-06-07, propagowanych do jednej wspólnej epoki (zob. REAL_TLE_GUIDE.md §3). Głębsza kontrola krzyżowa, czyli porównanie poziomów ochrony epoka po epoce z gLAB (GNSS-Lab Tool, pakiet do przetwarzania danych GNSS rozpowszechniany przez ESA) na pełnym łuku obserwacji RINEX, dodałaby zgodność w dziedzinie odbiornika. Nie została wykonana: rodzaj pvt oblicza kodową pozycję pojedynczego punktu z rzeczywistych obserwacji RINEX, ale żaden poziom ochrony z tego rozwiązania nie został porównany z gLAB.
Zatem raim.rs jest prawdziwym rdzeniem poziomu ochrony i ryzyka integralności, osiągalnym z rodzajów scenariuszy integrity i araim-reference-check, sprawdzonym na rzeczywistej geometrii orbit odniesienia i skonfrontowanym z wektorami odniesienia WG-C. Błędy w podzbiorach wielu satelitów, zgodność z gLAB w dziedzinie odbiornika i integracja ze wskaźnikiem integralności zegara pozostają pozycjami planu rozwoju, a nic z tego nie stanowi dowodu na potrzeby certyfikacji.
Zobacz też#
GLOSSARY.md: jednowierszowe definicje każdego wskaźnika jakości i skrótu.ARAIM_REFERENCE.md: parametry ISM i wektory odniesienia WG-C.SLOT-TIMING.md: poziom ochrony czasu (TPL) dryfującego zegara, który zależy od detekcji.VALIDATION.md: które wielkości zostały zwalidowane względem wzorca, a które są kontrolami samospójności.src/security.rs: wyprowadzenie granicy wykrywalności spoofingu.
RAIM obok wskaźników jakości holdover zegara (0,36, opcjonalnie)#
Scenariusz zegara może zawierać sekcję [integrity] (src/clock_integrity.rs): stanowisko (lat_deg, lon_deg, height_m), predefiniowane konstelacje (systems, domyślnie gps-baseline), maskę, sigma rezyduów odległości, prawdopodobieństwa fałszywego alarmu i niewykrycia, poziomy i pionowy limit alarmowy, odstęp między epokami oraz opcjonalne podane obciążenie jednego satelity. Przebieg podaje wtedy osobny blok integrity_fom: dla każdej epoki satelity w zasięgu widzenia, migawkowe poziomy ochrony RAIM i werdykt (available, alarm, unavailable-pl-above-al, unavailable-too-few-satellites, unavailable-gnss-denied), a także liczby i dostępność w całym przebiegu. Gdy oś czasu mówi, że GNSS jest zablokowany, RAIM jest niedostępny i nic nie jest ekstrapolowane; okno degradacji jest oceniane jak nominalne. Wskaźniki jakości holdover pozostają bez zmian, a bez tej sekcji wynik jest identyczny bajt w bajt. MODELLED: reprezentatywne predefiniowane niebo, syntetyczne rezydua i podane limity. Wymaga runs = 1.
Odtworzenie maksymalnego URA z Milestone 3 grupy WG-C ARAIM UE–USA (CAP-05c)#
Wcześniejszy plan obiecywał porównanie z „Table A-3” z noty technicznej EU-ARAIM. Nie znaleziono publicznego źródła tej tabeli (publiczne raporty Milestone 1 do 3 podgrupy technicznej ARAIM Grupy Roboczej C UE–USA nie zawierają Table A-3), więc to porównanie zostało wycofane i pod tą nazwą nic nie jest obiecywane.
Próbuje się natomiast odtworzyć raport publiczny: Milestone 3 Report (25 lutego 2016, kopia GPS.gov, SHA-256 156147e1...13d8), tabele 5, 6 i 7, które dla każdej konfiguracji konstelacji oraz dla każdego z RNP 0,1 i RNP 0,3 podają największe sigma_URA, przy którym 90 % użytkowników ma 99,5 % dostępności. Sprawdzono dwanaście wydrukowanych pozycji (wiersze Depleted i Baseline tabel dwuczęstotliwościowych) względem progów zarejestrowanych z góry w xval/araim-m3/PREREGISTRATION.md przed jakimkolwiek przebiegiem ocenianym, wraz z odchyleniami, których nie da się usunąć i które tam opisano: brak plików almanachu, powłoki Walkera zamiast rzeczywistych slotów, grubsza siatka i krok oraz ścieżka pozioma ADD v4.2 silnika zamiast własnego tekstu raportu. Tabele 8 do 13 (jednoczęstotliwościowe) i wiersze Optimistic nie są podejmowane, z powodami podanymi we wskazanym miejscu. Wynik: odtworzono 8 z 12 pozycji, 4 NOT MET (przypięte): pozycje dwukonstelacyjne i wszystkie pozycje tylko dla Galileo zgadzają się (w tym wiersze N/A), pozycja dwukonstelacyjna Depleted RNP 0,1 osiąga pokrycie 0,847 przy 9 m wobec wydrukowanych 9 m (wymagane 0,90), a trzy pozycje tylko dla GPS rozmijają się znacznie (pokrycie 0,70 przy 4 m, 0,58 przy 6 m, 0,65 przy 10 m wobec wydrukowanych 4 m, 6 m i „>10 m”). Rozbieżności dla samego GPS mogą wynikać z jednorodnej powłoki Walkera zastępującej rzeczywiste sloty GPS (D1); to hipoteza, a nie ustalenie. Wynik pozostaje MODELLED, jakikolwiek by był. Badanie to src/bin/gen_araim_m3_study.rs; jego zmierzone pokrycia są w xval/araim-m3/results.json, a oceniane przez tests/araim_m3_reproduction.rs. Sam raport jest cytowany, a nie dołączany.