You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Zdefiniować i egzekwować granice bezpieczeństwa aplikacji przemysłowej, zaimplementować ProfileTrustPort, zweryfikować pakietowane profile offline i dopiero po #16/#22 aktywować kontrolowany write w produkcyjnym composition root.
Założenie bezpieczeństwa
VFD Lantern nie jest safety-rated i nie zastępuje E-stop, blokad sprzętowych, LOTO, instrukcji producenta ani kwalifikowanego personelu.
Niezmienniki funkcjonalne
Read-only default.
Aktywna sesja tylko po Verified identification.
Brak auto-connect, blind scan, auto-write, auto-restore, fault reset i motion.
Produkcyjne funkcje Modbus: 3,4,6,16; brak slave 0, coils, raw PDU i FC23.
Każdy write: process gate, Verified, trust, Armed, audit Healthy, prepare/confirm, durable Prepared, jeden write, bounded read-back, finalize.
Packaged — profil zgodny z manifestem wbudowanym w uruchomione binarium.
LocalUntrusted — każdy inny profil, w tym zmieniony albo nieznany plik w /usr/share.
PackagedProfilesManifestV1
Build generuje z dokładnego zestawu zwalidowanych profili tabelę:
build/version ID;
profile ID;
revision;
profile_hash;
write-capable flag;
qualification_report_id dla profilu write-capable.
qualification_report_id wskazuje raport kwalifikacji danego profilu na fizycznym sprzęcie istniejący przed buildem i związany z profile hash, firmware/manual revision oraz bezpiecznym zakresem write. Nie jest tym samym co candidate HIL wykonywany później w #25; kandydat wymaga obu dowodów.
Wymagania:
Tabela jest wbudowana w binarium jako read-only dane.
Kanoniczna kopia trafia do /usr/share/vfd-lantern/manifest/profiles-v1.json oraz archiwum release.
Runtime nadaje Packaged wyłącznie wtedy, gdy plik profilu z systemowego katalogu ma profile ID/revision/hash zgodne z tabelą wbudowaną w binarium.
Dla write-capable profilu wpis bez qualification_report_id jest nieważny i nie daje Packaged write trust.
Kopia manifestu na dysku służy diagnostyce i package-integrity checks; nie jest root of trust i nie wpływa samodzielnie na runtime origin.
Brak albo mismatch kopii na dysku jest trwałym ostrzeżeniem oraz blockerem package/release tests.
Podmiana całego binarium przez root/właściciela instalacji pozostaje poza gwarancją i jest jawnie opisana.
Local trust
LocalUntrusted może działać read-only po walidacji i poprawnej identyfikacji.
Write wymaga osobnej zgody dokładnego profile_hash.
Trust store zawiera schema, profile hash/ID/revision, czas, app version i summary pokazane operatorowi.
Zmiana semantyki unieważnia zgodę.
Local approval jest decyzją operatora, nie kryptograficznym root of trust.
Brak network/update/telemetry. Seriale hashowane. Values/CSV/backup/audit/full profile tylko opt-in. Logi bez ramek/telemetrii.
Threat model
Rozróżnia przypadkowe uszkodzenie, złośliwe urządzenie, inny proces użytkownika, właściciela konta i root/właściciela instalacji. Każde zagrożenie ma inwariant, test i właściciela.
Testy
złośliwe profile i terminal escapes;
symlink/path traversal/irregular files;
zmieniony profile hash i brak approval;
systemowy plik nieobecny w embedded manifest = LocalUntrusted;
systemowy write-capable wpis bez qualification report = brak Packaged write trust;
kopia manifestu na dysku różna od embedded = diagnostyczny/package-integrity błąd, bez zmiany autorytatywnego porównania runtime;
brak AuditPort/ProfileTrustPort = zero write;
niedozwolone funkcje nieosiągalne;
owner account może zmienić local trust store — brak fałszywego claimu;
domyślna diagnostyka bez danych opt-in.
Kryteria akceptacji
ProfileTrustPort używa profile_hash.
Origin Packaged wymaga tabeli wbudowanej w binarium.
Write-capable Packaged profile wymaga qualification_report_id istniejącego przed buildem.
Cel
Zdefiniować i egzekwować granice bezpieczeństwa aplikacji przemysłowej, zaimplementować
ProfileTrustPort, zweryfikować pakietowane profile offline i dopiero po #16/#22 aktywować kontrolowany write w produkcyjnym composition root.Założenie bezpieczeństwa
VFD Lantern nie jest safety-rated i nie zastępuje E-stop, blokad sprzętowych, LOTO, instrukcji producenta ani kwalifikowanego personelu.
Niezmienniki funkcjonalne
Origin profilu
Packaged— profil zgodny z manifestem wbudowanym w uruchomione binarium.LocalUntrusted— każdy inny profil, w tym zmieniony albo nieznany plik w/usr/share.PackagedProfilesManifestV1
Build generuje z dokładnego zestawu zwalidowanych profili tabelę:
profile_hash;qualification_report_iddla profilu write-capable.qualification_report_idwskazuje raport kwalifikacji danego profilu na fizycznym sprzęcie istniejący przed buildem i związany z profile hash, firmware/manual revision oraz bezpiecznym zakresem write. Nie jest tym samym co candidate HIL wykonywany później w #25; kandydat wymaga obu dowodów.Wymagania:
/usr/share/vfd-lantern/manifest/profiles-v1.jsonoraz archiwum release.Packagedwyłącznie wtedy, gdy plik profilu z systemowego katalogu ma profile ID/revision/hash zgodne z tabelą wbudowaną w binarium.qualification_report_idjest nieważny i nie dajePackagedwrite trust.Local trust
profile_hash.Aktywacja write
Produkcja udostępnia arming/write dopiero gdy:
Bezpieczeństwo plików
Limity wejść
Config 1 MiB; profil 4 MiB/20k parametrów/4096 faultów/256 presetów/16 KiB tekst; backup 64 MiB/20k wartości; fault/diagnostic manifest 16 MiB; limity głębokości/kolekcji; ASCII IDs; odrzucenie ESC i niedozwolonych C0/C1; checked arithmetic.
Unsafe
Supply chain
Prywatność i sieć
Brak network/update/telemetry. Seriale hashowane. Values/CSV/backup/audit/full profile tylko opt-in. Logi bez ramek/telemetrii.
Threat model
Rozróżnia przypadkowe uszkodzenie, złośliwe urządzenie, inny proces użytkownika, właściciela konta i root/właściciela instalacji. Każde zagrożenie ma inwariant, test i właściciela.
Testy
Kryteria akceptacji
profile_hash.qualification_report_idistniejącego przed buildem.Zależności