05. Projekt koncepcyjny komunikacji

Podział funkcji

Podział funkcji stacji WICI W schronieniu A stacja WICI zawiera ekran i przyciski, trwałą kolejkę w pamięci FRAM z LXMF, transport Reticulum oraz interfejs radiowy (LoRa w pilotażu, P1 w wariancie zapasowym). Opcjonalnie do stacji przez USB podłącza się laptop ze stroną, panelem i bazą SQLite, a do laptopa przez Ethernet router Wi-Fi, z którym łączą się telefony mieszkańców. Stacja łączy się radiem z przekaźnikiem B, który jest taką samą stacją zasilaną z ogniw lub źródła 12 V. Przekaźnik łączy się radiem ze stacją stanowiska, która przez USB przekazuje pakiety komputerowi stanowiska z tożsamością odbiorcy, LXMF i bazą SQLite, a dyżurny podejmuje decyzję. Schronienie A Stacja WICI · MCU Przekaźnik B Stanowisko odbiorcze Telefon / przeglądarka Zwykły router / DHCP Laptop: strona, panel SQLite Ekran i przyciski Kolejka FRAM · LXMF Reticulum · transport Interfejs radiowy + antena stacja · ogniwa / 12 V Dyżurny · decyzja o pomocy komputer stanowiska · LXMF stacja stanowiska Wi-Fi / HTTP · poziom 3 Ethernet LAN USB · poziom 2 radio radio USB
Droga zgłoszenia przez przekaźnik. Wyróżnione bloki to części wykonywane w projekcie WICI; przekaźnik i stanowisko odbiorcze używają tych samych stacji. Bloki z przerywaną linią to rozszerzenia: laptop (poziom 2) oraz router i telefony (poziom 3). Router Wi-Fi nie uczestniczy w łączności radiowej.

Bezpośrednie połączenie ze stanowiskiem odbiorczym jest możliwe, gdy pozwalają na to warunki radiowe. Transport Reticulum (otwartego stosu sieciowego z szyfrowaniem i trasowaniem) działa w mikrokontrolerze stacji, więc każda włączona stacja przekazuje pakiety innych stacji. Przekaźnik nie potrzebuje laptopa.

Stacja jest jedynym węzłem sieci w schronieniu: ma tożsamość, jeden router LXMF (warstwy wiadomości działającej nad Reticulum) i trwałą kolejkę. Komputer nie ma własnej tożsamości Reticulum. Przekazuje stacji intencje wysyłki i odbiera zdarzenia przez lokalny protokół USB (D17). Odłączenie lub restart komputera nie przerywa przekazywania pakietów ani wysyłki kolejki. Na stanowisku odbiorczym podział jest inny (D19): tożsamość odbiorcy, router LXMF i baza działają na komputerze stanowiska z Reticulum w Pythonie, a stacja stanowiska przekazuje pakiety między radiem a komputerem jako węzeł transportu. Awaria komputera zatrzymuje przyjmowanie zgłoszeń, ale nie przekazywanie ruchu; dlatego stanowisko ma drugi komputer i przenośny nośnik z tożsamością i bazą (stanowisko odbiorcze). Implementacja transportu, kontrakty WICI.

Droga zgłoszenia

  1. Opiekun wybiera przyciskami kategorię, liczbę osób i pilność. Stacja dodaje zapisany adres i niepodzielnie (atomowo) zapisuje zgłoszenie z intencją wysyłki w pamięci FRAM (nieulotnej pamięci ferroelektrycznej). Na poziomie 3 telefon wysyła formularz przez lokalny HTTP do kolejki opiekuna. Laptop atomowo zapisuje zgłoszenie i dostęp mieszkańca. Po sprawdzeniu i zatwierdzeniu zgłoszenia przez opiekuna laptop zapisuje intencję przekazania do stacji. Stacja przyjmuje zgłoszenie idempotentnie według id i revision (numeru wersji), czyli ponowne przekazanie tej samej wersji nie tworzy duplikatu, i potwierdza je laptopowi po własnym zapisie.
  2. Po zatwierdzeniu zapisu (COMMIT) ekran lub strona pokazuje „ZAPISANE W STACJI – CZEKA NA WYSŁANIE”. Brak radia nie zmienia tego znaczenia. Błąd zapisu (FRAM w stacji, dysk laptopa) nie może dawać pozornego sukcesu.
  3. Kolejka stacji przekazuje treść SA1 do LXMF. Reticulum zapewnia ochronę komunikacji i transport. Interfejs radiowy w tym samym oprogramowaniu (LoRa w pilotażu, P1 w wariancie zapasowym) dzieli pakiety na ramki i przestrzega budżetu czasu nadawania (TX).
  4. Aktywne węzły pośrednie przekazują pakiety. Odbiorca weryfikuje nadawcę, format i duplikat, następnie zapisuje zgłoszenie wraz z intencją RECEIVED.
  5. Odbiorca wysyła RECEIVED dopiero po COMMIT. Źródło pokazuje „ODBIORCA ZAPISAŁ” po przyjęciu potwierdzenia od zaufanej tożsamości.
  6. Dyżurny osobno zapisuje odczyt („ODBIORCA PRZECZYTAŁ”) i decyzję: „POMOC SKIEROWANA (DECYZJA, NIE GODZINA PRZYJAZDU)”, „PRZEKAZANE DALEJ (PSP / POGOTOWIE / POWIAT)”, „ODBIORCA NIE MOŻE TERAZ POMÓC – CZYTAJ ODPOWIEDŹ” (zawsze z REPLY) albo „ZAMKNIĘTE”. „POMOC SKIEROWANA” dyżurny wysyła dopiero, gdy podmiot dysponujący siłami potwierdzi skierowanie; panel zapisuje źródło i czas. Samo przekazanie to „PRZEKAZANE DALEJ”. Teksty pochodzą z tabeli „Teksty ekranu” w specyfikacji oprogramowania. STATUS wraca tą samą siecią. Decyzja o wysłaniu ludzi nie wynika automatycznie z numeru pilności.

Potwierdzenie LXMF DELIVERED (doręczenie transportowe) dotyczy tylko transportu. Awaria między odbiorem transportowym a zapisem w bazie nadal wymaga ponowienia zgłoszenia. WICI zachowuje przy tym jego id, a odbiorca odrzuca duplikaty według uwierzytelnionego nadawcy, id i revision. Konflikt treści dla tego samego klucza nie nadpisuje danych. Kolejne zmiany mają nową revision. LXMF, transakcje i ponowienia.

Rozmiar wiadomości a sposób dostarczenia

LXMF wybiera sposób dostarczenia według rozmiaru. W analizowanych wersjach (Reticulum e40191b, LXMF c3ff2d6) pojedynczy pakiet okazjonalny (ang. opportunistic) mieści około 284 B treści SA1 przy tytule SA1 i pustych fields. Większa wiadomość przechodzi na dostarczenie przez link (zestawione połączenie Reticulum), a powyżej około 316 B na przesłanie jako zasób (Resource, transfer wielopakietowy). Zestawianie linku i przesyłanie zasobu mają własne limity czasu; dotyczy ich kontrprzykład F02. Wartości wynikają ze stałych ENCRYPTED_MDU, Link.MDU i 112 B narzutu LXMF; trzeba je potwierdzić dla wersji wydania. LXMessage.

Rozmiary wiadomości zakodowanych w modelu wynoszą: typowe zgłoszenie po polsku 174 B, REQUEST lub TEST z maksymalnymi polami 222 B, BULLETIN 246 B, REPLY 156 B, RECEIVED 50 B. Wcześniej limity pól liczone przed kodowaniem nie ograniczały rozmiaru po kodowaniu, bo cudzysłów prosty i ukośnik wsteczny zajmują w JSON po 2 B. REQUEST z polami złożonymi z " miał 382 B, a BULLETIN z polami złożonymi z \ – 438 B. Mieściły się w przejściowym limicie 480 B, ale nie w jednym pakiecie. Treść wpisana przez mieszkańca mogła więc zmienić drogę dostarczenia bez wiedzy opiekuna.

Decyzja robocza (do potwierdzenia w D01 i T3):

  • teksty SA1 nie mogą zawierać znaków U+0022 i U+005C – formularz i ekran zamieniają je odpowiednio na „ ” i /;
  • cała treść po kodowaniu ma ≤256 B zamiast 480 B;
  • wymagana jest normalizacja NFC, a znaki kategorii Cc, Cf, Cs, Co, Cn, Zl i Zp są odrzucane.

Polecenie configure odrzuca adres i frazę, jeśli najgorsze zgłoszenie z przycisków przekroczyłoby limit. Najgorsze przypadki to wtedy REQUEST 222 B, BULLETIN 246 B i REPLY 156 B, z zapasem wobec około 284 B pakietu okazjonalnego. Limit sprawdza się po kodowaniu JSON, nie tylko dla pól, a przypadek graniczny jest częścią modelu.

Na mikrokontrolerze jeden pakiet na wiadomość ma dodatkową zaletę. Omija przesyłanie zasobu, w którym microReticulum (implementacja Reticulum dla mikrokontrolerów) ma znane błędy przy stratnym łączu, i ogranicza pamięć potrzebną na wiadomość. Zgłoszenie wybrane przyciskami jest krótsze niż typowe zgłoszenie z formularza: w modelu około 106 B bez frazy.

LXMF jest skonfigurowany wyłącznie na dostarczenie okazjonalne (OPPORTUNISTIC), bez przejścia na dostarczenie bezpośrednie przez link, zasób ani propagację (przechowanie w węźle pośrednim). Za duża treść jest błędem przy tworzeniu intencji, a nie powodem zmiany drogi. Znaczki pracy (obliczeniowy dowód pracy nadawcy) nie są używane – stamp_cost pozostaje nieustawiony. Ruch aplikacji nie wymaga wtedy zestawiania linku ani przesyłania zasobu. Pozostają zapytania o trasę, ogłoszenia i potwierdzenia pakietów. Czy włączyć ratchety (rotowane klucze odbioru w LXMF), rozstrzyga D01; wtedy klucze trzeba przechowywać w FRAM.

Interfejsy i granice odpowiedzialności

Granica Kontrakt Co sprawdzić
Opiekun–stacjaekran i przyciski: zgłoszenie z listy kategorii i fraz, TEST, cisza radiowa, odczyt statusów i komunikatów, stan energii; teksty z jednej tabeli „Teksty ekranu”obsługa według karty, w rękawicach, po polsku, ukraińsku i angielsku; czytelność na mrozie
Telefon–laptop (poziom 3)lokalny HTTP: w LAN tylko strona i API zgłoszenia mieszkańca, token w ciasteczku HttpOnly (niedostępnym dla skryptów strony); panel opiekuna tylko na 127.0.0.1 (ekran laptopa)50 połączonych / 15 aktywnych; izolacja dostępu i brak zasobów internetowych
Laptop–nośnikjedna baza SQLite; dane mieszkańca + intencja przekazania w jednej transakcjifizyczne przerwanie zasilania i błąd zapisu; poprawna kopia i import
Komputer stanowiska–stacja stanowiskapakiety Reticulum przez USB w ramkach KISS z kontrolą przepływu; stacja jako węzeł transportu egzekwuje limity interfejsu radiowego, dług ciszy i IFAC; komputer z Reticulum i LXMF w Pythonie, z opcją bitrate ustawioną według czasu potwierdzenia przez radio (radio)zgodność z microReticulum, czasy potwierdzeń i ponowień, bufor przy 5 s odblokowania kontroli przepływu, przekazywanie ruchu bez komputera (T3, D19)
Laptop–stacja (poziom 2)lokalny protokół USB: intencje SA1 z adresem odbiorcy, id i revision, idempotentne po kluczu wiadomości, potwierdzenie po zapisie w stacji, zdarzenia statusu; źródłem prawdy jest skrzynka stacji; configure, export, import i aktualizacja tylko w trybie przygotowania; laptop bez tożsamości Reticulumodłączenie w trakcie przekazania, duplikaty, zgodność stanu po ponownym połączeniu (D17)
Stacja–pamięć nieulotnadziennik FRAM, przed wydaniem szyfrowany AEAD (szyfrowanie z uwierzytelnieniem; w pilotażu jeszcze nie, 07): zgłoszenie + intencja wysyłki, statusy, trasy i znane tożsamości; dług ciszy (zaległa obowiązkowa przerwa w nadawaniu) osobno, jawnieprzerwanie zasilania w trakcie zapisu, wymiana ogniw, pełna pamięć
Kolejka–LXMFsześć wiadomości SA1, treść ≤256 B po kodowaniu (roboczo, D01), bez załączników; wyłącznie jeden pakiet okazjonalnyrozmiar po kodowaniu JSON i wybrany sposób dostarczenia; rzeczywiste pakiety i kontrola ponowień
Reticulum–interfejs radiowysterownik interfejsu w oprogramowaniu stacji; stos zna dług ciszy i stan kolejki radiowej i musi je uwzględniać w odstępie ponowieńoczekiwanie na ciszę, limity czasu linku i ponowień LXMF, ograniczone bufory, powrót do odbioru
Radio–eterw pilotażu LoRa na układzie SX1262: 869,525 MHz, 125 kHz, SF7, CR 4/5, format ramek zgodny z RNode (do potwierdzenia w T3), pakiet Reticulum >254 B w dwóch ramkach; w wariancie zapasowym profil P1: datagram 1–600 B, fragmenty do 86 Bzgodność z RNode, emisje, CRC i składanie; cisza 12t po każdym nadaniu; całkowity czas TX; dla P1 także zgodność wykonań radia TI (CC1120) i ST (S2-LP)
Stanowisko–dyżurnykolejka przyjętych potrzeb i jawne statusydostępny człowiek, odczyt, decyzja i odpowiedź

Szczegóły podają specyfikacje radia i oprogramowania. Interfejs radiowy (LoRa i P1) nie implementuje szyfrowania, potwierdzeń ani trasowania; zapewnia je Reticulum w tym samym oprogramowaniu. Suma kontrolna CRC wykrywa błędy ramki, ale nie uwierzytelnia nadawcy. Po każdym nadaniu trwającym t stacja milczy co najmniej 12t (dług ciszy, limit pasma 10%). Ta sama reguła obowiązuje dla LoRa i P1.

Kolejki, opóźnienia i praca bez trasy

Własne zgłoszenia pozostają w pamięci FRAM stacji do obsłużenia według kontraktu. LXMF prowadzi aktywną transmisję, a WICI nie rozpoczyna równoległego ponowienia tej samej intencji; zasady ponowień podaje sekcja Ogłoszenia, ponowienia i pojemność. Potwierdzenia RECEIVED i statusy mają pierwszeństwo w kolejce aplikacji; inne stacje, transport i obcy ruch radiowy nie podlegają tej kolejce. WICI nie gwarantuje pilnemu zgłoszeniu czasu dostarczenia podczas przeciążenia.

Interfejs radiowy ma ograniczone bufory (sterownik P1: cztery miejsca na datagramy i osiem kontekstów składania). Przepełnienie musi być widoczne w licznikach. Limity trwałej kolejki stacji, bazy laptopa i dzienników oraz zachowanie przycisków i formularza po ich osiągnięciu określa specyfikacja oprogramowania. Nie wolno pozornie potwierdzić odrzuconych danych.

Tryb ciszy radiowej zatrzymuje całe nadawanie stacji, także przekazywanie cudzych pakietów. W ciszy stacja nie nadaje też żadnych ogłoszeń. Ekran, strona, odbiór i zapis działają, a kolejka rośnie. Kolejka wychodzi po ręcznym wyłączeniu ciszy, gdy organ, który polecił ciszę, ją odwoła. Polecenie ciszy przekazuje odbiorca komunikatem BULLETIN i przez gońca.

Wyjątek dla pojedynczego zgłoszenia dotyczy wyłącznie ciszy operacyjnej ustawionej z panelu (poziom 2) i tylko wtedy, gdy polecenie wprost go dopuszcza. Przełącznik CISZA na stacji wyklucza wyjątek. Wyjątek nie zwalnia z ciszy przekaźników, więc zgłoszenie dociera tylko drogą przez stacje, które nie są w ciszy.

Wyjątek nie dotyczy też zakazu używania urządzeń nadawczych w stanie wojennym lub wyjątkowym – wtedy podstawową procedurą jest goniec. Wyjątek zapisuje się w dzienniku stacji i na papierze. Szczegóły w specyfikacji oprogramowania, uzasadnienie w rozdziale 02.

Węzeł transportowy jest aktywnym przekaźnikiem, nie magazynem wszystkich cudzych zgłoszeń. Opcjonalny węzeł przechowywania LXMF (propagation node) na stanowisku odbiorczym jest inną funkcją: mógłby być przyszłą funkcją aplikacji stanowiska na komputerze stanowiska, poza wydaniem 0.5, i wymaga osobnych prób, zwłaszcza przy długim braku odbiorcy. Role LXMF.

Ogłoszenia, ponowienia i pojemność

Stacja schronienia ogłasza swój adres w sieci (announce w Reticulum) przy starcie (z losowym opóźnieniem 0–120 s), na polecenie opiekuna oraz automatycznie, gdy intencja do odbiorcy nie dostała potwierdzenia transportowego po 2 próbach LXMF (najwyżej raz na 30 min). Odbiorca ogłasza adres co 6 h ±20%, po starcie aplikacji, po ponownym połączeniu ze stacją i na polecenie dyżurnego. W ciszy radiowej nie ma ogłoszeń. Tablica tras, znane tożsamości i buforowane ogłoszenia są zapisywane w FRAM i odtwarzane po restarcie, więc restart przekaźnika nie wymaga ręcznego ogłoszenia (T3, T5). Stacja przedstawia się neutralną nazwą WICI-xxxxxx (6 cyfr szesnastkowych).

Odstęp ponowień LXMF dla wiadomości okazjonalnych wynosi ≥ max(60 s, 2 × liczba skoków × 13 × czas TX największego datagramu + bieżący dług ciszy + czas opróżnienia kolejki radiowej). Na jedno ponowienie intencji przypadają najwyżej 2 próby LXMF. W pustej sieci z jednym przekaźnikiem potwierdzenie przez P1 wraca po ≥13 s (czas dla LoRa SF7 mierzy T3), więc domyślne ponowienie LXMF po 10 s podwajałoby ruch i naruszało W10.

Ponawianie intencji: po DELIVERED stacja czeka 10 min na RECEIVED, a potem ponawia co 30–60 min (±20%). Po FAILED ponawia po 1, 2, 5 i 15 min (±20%), a po 6 h co 60 min. STATUS lub REPLY od przypiętej tożsamości odbiorcy także kończy ponawianie danej rewizji. Intencja w oczekiwaniu nie blokuje następnych; stacja przekazuje do LXMF najwyżej 2 własne wiadomości jednocześnie. Kolejka radiowa ma priorytety: potwierdzenia pakietów i zapytania o trasę, potem dane, ogłoszenia na końcu. Szczegóły w specyfikacji oprogramowania.

Pojemność całej sieci, a nie pojedynczego przekaźnika, ogranicza najbardziej obciążony węzeł – zwykle stacja stanowiska i przekaźnik obok niej. W modelu bez strat dla LoRa SF7 stanowisko odbiorcze obsługuje ok. 164 zgłoszenia/h z RECEIVED i dwoma STATUS, a przekaźnik przed stanowiskiem ok. 95/h (P1: 121/h i 68/h). 50 zgłoszeń przechodzi przez przekaźnik B w 16,4–17,2 min z 30 min W10 (P1: 22,6–24,0 min). SF8 tego nie mieści (29,1–30,4 min), więc nie jest profilem bazowym. Dodanie przekaźników nie zwiększa tego limitu; zwiększa go tylko drugi odbiorca albo podział sieci.

BULLETIN wysyła się osobno do każdej stacji (w modelu LoRa SF7 50 stacji ≈ 8,5 min pracy nadajnika stanowiska z obowiązkową ciszą, P1 ≈ 11,9 min; tyle trwa też rozesłanie polecenia ciszy). Okno, w którym stacje w losowej chwili wysyłają startowy TEST, skaluje się z wielkością sieci: ≥50 s × liczba stacji (0–15 min tylko dla małej sieci). Obliczenie w rozdziale 06 i w modelu (lora_pilot), pomiar w T5.

Zaufanie i informacja lokalna

Kartę zaufanego odbiorcy zapisuje się w stacji podczas przygotowania, przed kryzysem, niezależnym uzgodnionym sposobem. Nazwa widoczna w radiu lub na ekranie nie nadaje uprawnień. Na stanowisku odbiorczym zgłoszenie nieznanego nadawcy trafia do kwarantanny i dostaje RECEIVED dopiero po decyzji dyżurnego. Stacja przyjmuje RECEIVED, statusy, odpowiedzi i komunikaty wyłącznie od aktywnej przypiętej tożsamości odbiorcy (głównej albo, po przełączeniu, zapasowej). Wymianę i zapas kluczy oraz listę zaufanych stacji opisuje model zaufania i kluczy.

Szyfrowanie radiowe nie zabezpiecza lokalnego HTTP, bazy na dysku ani pamięci stacji. Nie wysyła się przez radio identyfikatorów osób lub dokumentów. Do wskazania potrzeby wystarczą lokalizacja, kategoria, liczba osób i krótki opis. Strona mieszkańca pokazuje jego zgłoszenie; kolejkę zbiorczą widzi opiekun. Ograniczenia ochrony.

Zamiast jednego zielonego wskaźnika ekran stacji i panel pokazują osobno:

  • stan radia („RADIO WŁĄCZONE” albo „CISZA RADIOWA – STACJA NIE NADAJE. PILNE: GONIEC”);
  • „OSTATNI KONTAKT Z ODBIORCĄ: [czas] TEMU”, liczony od ostatniej uwierzytelnionej wiadomości od odbiorcy: RECEIVED, STATUS, REPLY lub BULLETIN (brak świeżego kontaktu nie jest awarią);
  • wiek najstarszego oczekującego zgłoszenia.

Wiek liczy się od lokalnego licznika czasu pracy stacji, a nie od zegara kalendarzowego. Licznik jest zapisywany w FRAM co 60 s i służy stosowi jako monotoniczny zegar między restartami. Odbiorca ignoruje znacznik czasu LXMF i używa czasu lokalnego odbioru. Komunikat odbiorcy oznacza się źródłem i czasem od lokalnego odbioru. Poprawny podpis potwierdza źródło, nie aktualność ani prawdziwość treści. Zegara laptopa dostępnego na miejscu ani stacji bez synchronizacji nie traktować jako zaufanej podstawy koordynacji.

Model zaufania i kluczy

Zaufanie powstaje podczas przygotowania, nie przez radio. Szczegóły w specyfikacji oprogramowania (sekcja „Model zaufania i kluczy”).

  • Karta stacji: stacja eksportuje przez USB pełny klucz publiczny tożsamości (64 B), skrót adresu LXMF, nazwę, adres schronienia i odcisk klucza (krótki skrót do porównania wzrokowego) do odczytu z ekranu. Odbiorca importuje kartę (plik lub QR) po porównaniu odcisku z ekranem stacji.
  • Karta odbiorcy: dwie tożsamości odbiorcy, główna i zapasowa, każda ze skrótem adresu i pełnym kluczem publicznym (64 B). Klucz prywatny zapasowy jest wygenerowany offline i przechowywany w zaplombowanej kopercie u organizatora sieci, zaszyfrowany kluczem z hasła, które leży w drugiej kopercie, w innym miejscu; wczytuje go aplikacja stanowiska na przygotowanym komputerze. Stacja rejestruje klucze z kart przy starcie, więc weryfikacja podpisu nie zależy od odebranych ogłoszeń.
  • Kwarantanna: zatwierdzenie w kwarantannie dotyczy pojedynczej wiadomości i nie dodaje nadawcy do zaufanych. Aplikacja stanowiska ma jedną listę zaufanych stacji: dodanie wymaga karty stacji i zgody dwóch osób, a do usunięcia wystarczy jedna. Wiadomość od nadawcy, którego klucza odbiorca jeszcze nie zna, aplikacja stanowiska zapisuje jako „do weryfikacji”, wysyła zapytanie o trasę i sprawdza podpis po ogłoszeniu.
  • Utrata stacji lub klucza odbiorcy: stację zaginioną, skradzioną lub przejętą dyżurny usuwa z listy; jej wiadomości trafiają do kwarantanny z alarmem „możliwe przejęcie stacji”, a limit 4 wiadomości na nadawcę chroni kwarantannę przed zapełnieniem. Po utracie lub przejęciu klucza odbiorcy opiekun przełącza stację na tożsamość zapasową z karty odbiorcy (menu KLUCZ ZAPASOWY), tylko na polecenie przekazane słownie lub przez gońca; zapasowa tożsamość ma inny adres, więc stacja wysyła niepotwierdzone zgłoszenia ponownie, z tym samym id i revision. Nowego klucza stacja nigdy nie przyjmuje przez radio. Karty zaufanych stacji przechowuje i sprawdza aplikacja stanowiska na komputerze stanowiska. Rotacja kluczy odbiorcy przebiega według planu kart (D08).
  • Oprogramowanie: obraz jest podpisany kluczem wydania przechowywanym offline. Program rozruchowy odrzuca obraz bez podpisu oraz starszy od zainstalowanego (ochrona przed starszą wersją, anti-rollback). Aktualizacja jest możliwa tylko przez USB w trybie przygotowania; przycisk tego trybu jest pod plombowaną pokrywą serwisową, która daje dostęp tylko do niego, nie do płytki. Zerwanie plomby zapisuje się w ewidencji, a po przeglądzie zakłada się nową; opiekun sprawdza plombę w przeglądzie kwartalnym. Konsola diagnostyczna jest wyłączona w wydaniu.
  • Laptop: panel opiekuna nasłuchuje tylko na 127.0.0.1, a w LAN widoczna jest tylko strona mieszkańca. Router używa WPA2/WPA3 i izoluje klientów od siebie. Dziennik aplikacji nie zapisuje treści zgłoszeń, tokenów, IP ani MAC.
  • Komputer stanowiska: panel dyżurnego tylko na 127.0.0.1; komputer bez połączenia z siecią poza USB do stacji; tożsamość odbiorcy i baza na zaszyfrowanym nośniku z hasłem stanowiska; dodanie zaufanej stacji za zgodą dwóch dyżurnych.
  • Koniec pracy: ZAMKNIJ ZDARZENIE eksportuje zaszyfrowane archiwum dla administratora danych i usuwa dane zdarzenia, zostawiając tożsamości i klucze odbioru; ZNISZCZ DANE jest nieodwracalne i usuwa także tożsamość (definicja w rozdziale 07).

Dodatkowy kanał internetowy może przenosić ten sam stos po osobnej próbie. Podstawowe działanie nie zależy od jego obecności. Kopiowanie wiadomości na pamięć USB, nadajniki Wi-Fi i Bluetooth w stacji, automatyczna replikacja stanowiska odbiorczego i wspólna tablica mieszkańców nie należą do bazowego kontraktu komunikacji.