Tradução automática, não revista por um falante nativo. O inglês é a referência.

Integridade e interferênciaEditar no GitHubFonte: docs/INTEGRITY.md

Integridade e segurança: o que o Kshana modela e o que não modela

O Kshana informa duas figuras de mérito (FoMs) — Integridade e Segurança — que são facilmente confundidas com as grandezas de mesmo nome usadas na aviação. Esta página expõe com clareza o que elas são hoje, o que não são e o que o roteiro acrescenta. Se você está avaliando o Kshana para um contexto de segurança da vida humana ou de certificação, leia isto primeiro.

Hoje (v0.37.0)#

FoM de integridade — autoconsistência do filtro#

A FoM de integridade é a fração das amostras de interrupção cujo erro de temporização verdadeiro permanece dentro do limite de proteção de k sigma do próprio filtro de Kalman:

integrity = (# outage samples with |error| <= k * phase_sigma) / (# outage samples)

Isso mede se a incerteza autodeclarada do filtro é honesta quanto ao seu próprio erro durante uma interrupção do GNSS (sistema global de navegação por satélite). É uma verificação interna de consistência útil.

Ela não é:

  • um nível de proteção horizontal/vertical (HPL/VPL) — não existe nenhum nível de proteção no domínio da posição (os pacotes de relógio estão no domínio da temporização);
  • um risco de integridade / probabilidade de informação perigosamente enganosa (P_HMI);
  • uma comparação com um limite de alerta;
  • em compliance com a RTCA DO-229E / DO-316 ou a EUROCAE ED-259A (RTCA: Radio Technical Commission for Aeronautics; EUROCAE: European Organisation for Civil Aviation Equipment) ou com qualquer outra norma de certificação.

FoM de segurança — limite analítico de detectabilidade de spoofing#

A FoM de segurança é um limite de detectabilidade de spoofing baseado na estabilidade do relógio: dados o ruído de um relógio (PSDs (densidades espectrais de potência) de frequência branca e de passeio aleatório) e uma janela de monitoramento, é a margem analítica de detecção de um monitor de consistência de um único relógio diante de um spoofing de falso tempo com rampa lenta. Um relógio mais silencioso (por exemplo, um relógio óptico) detecta um spoofing menor e mais lento do que um mais ruidoso (por exemplo, um CSAC (relógio atômico em escala de chip)) — esse contraste é o objetivo do demonstrador.

Ela não é um detector RAIM (monitoramento autônomo de integridade pelo receptor) de vários satélites. Não há resíduos de pseudodistância entre satélites, nem nível de proteção, nem P_HMI. O teste de inovação contra sigma tem a mesma forma matemática da detecção de falhas do RAIM clássico (Brown), mas o número é um limite analítico para um dado relógio, não uma implementação de RAIM, e só tem significado no contexto de um cenário de spoofing configurado (veja o tipo de cenário spoof, que injeta um ataque real em rampa).

A saída informa isso. Os tipos clock, orbit, hybrid e fusion não configuram nenhum ataque; por isso o resumo de uma linha imprime security n/a (no attack) em vez de um número, e o documento de resultado marca fom.security como applicable: false, com o motivo, no bloco figure_tiers. O valor em si permanece no documento para quem quiser o limite.

RAIM real de instantâneo, de separação de soluções e ARAIM (src/raim.rs)#

Um RAIM genuíno, no domínio da posição, está implementado em src/raim.rs, separado da FoM de autoconsistência acima:

  • Monitoramento de resíduos de vários satélites — constrói a matriz de geometria de linha de visada para os satélites visíveis, forma a solução de posição/relógio por mínimos quadrados e testa a soma dos quadrados dos resíduos.
  • Detecção de falhas por χ² — SSE/σ² (SSE: soma dos quadrados dos resíduos) segue χ²(n−4) sob a hipótese de ausência de falha; uma falha é declarada acima de chi2_{1-P_fa}(n-4). Os limiares de χ² vêm de uma avaliação da função gama incompleta regularizada, sem dependências (exata, sem tabelas).
  • HPL / VPL baseados em inclinação — max_i(slope_i)·pbias·σ, em que slope_i é a sensibilidade do erro de posição por satélite, obtida da matriz chapéu, e pbias é o viés de χ² não central que atinge a probabilidade de detecção perdida configurada P_md.
  • RAIM de separação de soluções (MHSS: separação de soluções com múltiplas hipóteses) — para a solução com todos os satélites em vista e para cada subsolução com exclusão de um satélite, a separação de estimadores aninhados Δ_k = x_k − x₀ detecta e identifica o satélite com falha e alimenta o limite do nível de proteção.
  • Orçamento de risco de integridade (P_HMI) do ARAIM (monitoramento autônomo avançado de integridade pelo receptor) — araim_raim resolve o menor HPL/VPL cuja soma de probabilidades de informação perigosamente enganosa P_HMI = Σ_k p_fault,k · Q((PL − T_k)/σ_k) (Blanch et al., Baseline ARAIM) satisfaz uma alocação explícita de risco de integridade, e informa o risco que os níveis alcançam — de modo que a integridade possa ser trocada diretamente pelo limite de alerta, em vez de ficar implícita em um multiplicador fixo K_md.
  • Diagrama de integridade Stanford–ESA (ESA: Agência Espacial Europeia) — um acumulador por época classifica (error, PL) em regiões Disponível / Indisponível pelo sistema / Enganosa / Perigosamente enganosa, para um resumo de disponibilidade.
  • Alcançável de ponta a ponta — o tipo de cenário integrity executa o que foi descrito acima sobre uma constelação SGP4 (Simplified General Perturbations 4) ou kepleriana, ou lida de TLEs reais (conjuntos de elementos de duas linhas) ou de um arquivo de navegação RINEX (Receiver Independent Exchange Format), e emite um mapa de disponibilidade de HPL/VPL por época em relação aos limites de alerta configurados (scenarios/integrity-raim.toml). A mesma execução exporta um diagrama de Stanford vertical: em cada época protegida, uma amostra de erro de distância sem falha, com semente e reproduzível, é mapeada pela geometria até um erro vertical real e classificada em relação ao VPL e ao limite de alerta vertical; assim, o resultado em JSON (JavaScript Object Notation) e o resumo da CLI (interface de linha de comando) trazem as contagens por região (eventos de integridade e HMI: informação perigosamente enganosa) — e não apenas uma fração de disponibilidade. No scenarios/integrity-raim.toml incluído, a execução informa 344 de 361 épocas disponíveis (95,3 %) com limite de alerta de 40 m na horizontal e 50 m na vertical, com 0 eventos de integridade e 0 HMI.
  • ARAIM de constelação dupla com mensagem de suporte à integridade — araim_dual_raim acrescenta o modo de falha de toda a constelação: além das hipóteses sem falha e de um único satélite, cada constelação contribui com uma hipótese que remove todos os seus satélites, com probabilidade a priori P_const, para a mesma soma de risco de integridade do MHSS. A IntegritySupportMessage (ISM) transporta a precisão de alcance do usuário para integridade (σ_URA), a precisão em valor quadrático médio (σ_URE), o viés nominal máximo b_nom incorporado unilateralmente a cada modo, e as probabilidades a priori P_sat e P_const; seu conjunto de referência do WG-C (Grupo de Trabalho C da cooperação União Europeia–Estados Unidos em navegação por satélite, cujo subgrupo técnico de ARAIM publica a referência) é σ_URA = 0,75 m, σ_URE = 0,67 m, b_nom = 0,75 m, P_sat = 1e-5 e P_const = 1e-4. P_const = 0 reproduz bit a bit o resultado de falha única de araim_raim. O tipo integrity segue este caminho com araim_dual = true (scenarios/araim-gps-galileo.toml: GPS + Galileo, 48 satélites, 145 de 145 épocas disponíveis nos mesmos limites de alerta).
  • Níveis de proteção contra vetores de referência publicados — o tipo araim-reference-check executa araim_protection_level e araim_integrity_risk do motor sobre os próprios exemplos resolvidos do subgrupo ARAIM do WG-C (o Reference Airborne Algorithm Description Document v3.1, 2019, Apêndice D, e o Milestone 3 Report, 2016, Anexo A). A maior diferença de nível de proteção vertical/horizontal no vetor de aceitação é de 0,0437 m, contra a tolerância dos próprios documentos de 0,05 m. Esta linha é VALIDATED em VERIFICATION-MATRIX.md: ela verifica a equação do nível de proteção, não uma ISM operacional nem um receptor.

A lacuna restante (roteiro)#

O que raim.rs ainda não faz:

  • ele não está incorporado à FoM do cenário de relógio/holdover — esses pacotes ainda informam a figura de integridade de autoconsistência do filtro acima, não um HPL/VPL;
  • as hipóteses de falha são o caso sem falha, satélites individuais e constelações inteiras — falhas simultâneas em subconjuntos de dois ou mais satélites (SV: veículo espacial, isto é, um satélite) não são modeladas;
  • a ISM é um conjunto de parâmetros configurável (com os valores de referência do WG-C), não uma mensagem operacional transmitida nem um modelo de ameaças validado;
  • a detecção e exclusão de falhas (FDE) é apenas de um único satélite e de instantâneo: a separação de soluções nomeia o satélite com falha, e snapshot_raim_fde resolve novamente cada exclusão de um satélite e devolve o satélite excluído com o teste de qui-quadrado e os níveis de proteção do subconjunto restante, mas nenhuma posição protegida contra exclusão é informada, e o tipo de cenário integrity não executa a etapa de exclusão.

Os núcleos de instantâneo, de separação de soluções e de ARAIM são exercitados sobre geometria real de órbita precisa do IGS (International GNSS Service) (SP3: Standard Product 3), e não apenas sobre constelações sintéticas: tests/igs_real_data.rs forma a geometria de linha de visada a partir da primeira época de um produto SP3 genuíno do IGS em uma estação terrestre real, e verifica que os níveis de proteção são finitos e estão dentro dos limites de alerta APV-I (aproximação com guiamento vertical) de 40 m na horizontal e 50 m na vertical, que um viés de pseudodistância de 60 m aciona o monitor de χ², que a separação de soluções identifica o satélite com falha e que os níveis do ARAIM satisfazem o P_HMI alocado. tests/araim_dual_real_data.rs executa o caminho de constelação dupla sobre os catálogos reais de GPS e Galileo do Celestrak de 2026-06-07, propagados para uma época comum (veja REAL_TLE_GUIDE.md §3). Uma verificação cruzada mais profunda — comparar os níveis de proteção época a época com o gLAB (a GNSS-Lab Tool, um conjunto de processamento de dados GNSS distribuído pela ESA) ao longo de um arco completo de observações RINEX — acrescentaria paridade no domínio do receptor. Ela não foi feita: o tipo pvt calcula uma posição de ponto único por código a partir de observações RINEX reais, mas nenhum nível de proteção dessa solução foi comparado com o do gLAB.

Assim, raim.rs é um núcleo real de nível de proteção e risco de integridade, alcançável a partir dos tipos de cenário integrity e araim-reference-check, exercitado sobre geometria real de órbitas de referência e verificado contra os vetores de referência do WG-C. Falhas em subconjuntos de vários satélites, paridade com o gLAB no domínio do receptor e integração à FoM de relógio continuam sendo itens do roteiro, e nada disto é evidência de certificação.

Veja também#

  • GLOSSARY.md — definições de uma linha de cada FoM e abreviação.
  • ARAIM_REFERENCE.md — os parâmetros da ISM e os vetores de referência do WG-C.
  • SLOT-TIMING.md — o nível de proteção de temporização (TPL) de um relógio em operação livre, que é condicional à detecção.
  • VALIDATION.md — quais grandezas são validadas por referência e quais são verificações de autoconsistência.
  • src/security.rs — a derivação do limite de detectabilidade de spoofing.

RAIM ao lado das figuras de mérito de holdover do relógio (0,36, opcional)#

Um cenário de relógio pode conter uma seção [integrity] (src/clock_integrity.rs): um local (lat_deg, lon_deg, height_m), predefinições de constelação (systems, padrão gps-baseline), uma máscara, um sigma de resíduo de distância, as probabilidades de falso alarme e de detecção perdida, os limites de alerta horizontal e vertical, um espaçamento de épocas e um viés declarado opcional em um satélite. A execução informa então um bloco integrity_fom separado: por época, os satélites em vista, os níveis de proteção do RAIM de instantâneo e um veredito (available, alarm, unavailable-pl-above-al, unavailable-too-few-satellites, unavailable-gnss-denied), além das contagens e da disponibilidade ao longo da execução. Enquanto a linha do tempo indicar que o GNSS está negado, o RAIM fica indisponível e nada é extrapolado; uma janela degradada é avaliada como nominal. As figuras de mérito de holdover permanecem inalteradas e, sem a seção, a saída é idêntica byte a byte. MODELLED: um céu predefinido representativo, resíduos sintéticos e limites declarados. Exige runs = 1.

A reprodução do URA máximo do Milestone 3 do WG-C de ARAIM UE-EUA (CAP-05c)#

Um plano anterior prometia uma comparação com a "Table A-3" de uma nota técnica do EU-ARAIM. Não foi possível encontrar nenhuma fonte pública dessa tabela (os relatórios públicos Milestone 1 a 3 do Subgrupo Técnico de ARAIM do Grupo de Trabalho C UE-EUA não têm Table A-3); por isso essa comparação está retirada e nada é prometido com esse nome.

O que se tenta, em vez disso, é o relatório que é público: o Milestone 3 Report (25 de fevereiro de 2016, cópia do GPS.gov, SHA-256 156147e1...13d8), Tabelas 5, 6 e 7, que imprimem, para cada configuração de constelação e para cada um de RNP 0,1 e RNP 0,3, o maior sigma_URA para o qual 90 % dos usuários têm 99,5 % de disponibilidade. Doze entradas impressas (as linhas Depleted e Baseline das tabelas de dupla frequência) são verificadas, com limiares fixados antecipadamente em xval/araim-m3/PREREGISTRATION.md antes de qualquer execução avaliada, com os desvios que não podem ser removidos declarados ali: sem arquivos de almanaque, camadas Walker em vez dos slots reais, uma grade e um passo mais grosseiros, e o caminho horizontal ADD v4.2 do motor no lugar do texto do próprio relatório. As Tabelas 8 a 13 (frequência única) e as linhas Optimistic não são tentadas, com os motivos indicados ali. Resultado: 8 de 12 entradas reproduzidas, 4 NOT MET (fixadas): as entradas de constelação dupla e todas as entradas somente Galileo coincidem (incluindo as linhas N/A); a entrada dupla Depleted RNP 0,1 atinge cobertura 0,847 a 9 m contra os 9 m impressos (precisa de 0,90), e três entradas somente GPS erram por ampla margem (cobertura 0,70 a 4 m, 0,58 a 6 m, 0,65 a 10 m contra 4 m, 6 m e ">10 m" impressos). Os erros somente GPS podem vir da camada Walker uniforme usada no lugar dos slots reais do GPS (D1); isso é uma hipótese, não uma constatação. O resultado permanece MODELLED, seja qual for. O estudo é src/bin/gen_araim_m3_study.rs; suas coberturas medidas estão em xval/araim-m3/results.json e são avaliadas por tests/araim_m3_reproduction.rs. O relatório em si é citado, não incorporado.