Autentyczność plików binarnych
Speedwave weryfikuje integralność wydań za pomocą dwóch niezależnych warstw kryptograficznych: podpisywania kodu na poziomie systemu operacyjnego podczas pierwszej instalacji oraz wewnętrznej weryfikacji podpisów przy aktualizacjach automatycznych. Szerszy kontekst znajdziesz w sekcji Architektura bezpieczeństwa.
Podpisywanie kodu na poziomie systemu operacyjnego
Dział zatytułowany „Podpisywanie kodu na poziomie systemu operacyjnego”W systemie macOS każdy plik wykonywalny wchodzący w skład paczki Speedwave.app (w tym wbudowane środowisko Lima, Node.js, mostki w języku Swift oraz CLI w Rust) jest podpisany oficjalnym certyfikatem Apple Developer ID firmy Speednet. Wszystkie binarki korzystają z mechanizmu Apple Hardened Runtime i posiadają bezpieczny znacznik czasu. Paczki instalacyjne przechodzą proces notaryzacji w usłudze Apple Notary Service z dołączonym biletem (stapled ticket), co umożliwia weryfikację przez Gatekeepera również w trybie offline.
W systemie Windows, począwszy od wersji 0.19, instalatory (.exe i .msi), aplikacja, deinstalator oraz CLI speedwave są podpisywane certyfikatem Speednet za pośrednictwem usługi Azure Artifact Signing firmy Microsoft. Każdy podpis opatrzony jest zaufanym znacznikiem czasu RFC 3161, dzięki czemu zachowuje ważność również po wygaśnięciu krótkoterminowego certyfikatu. Klucz prywatny nie opuszcza bezpiecznej infrastruktury Microsoftu, a potok wydań (pipeline) uzyskuje do niego dostęp za pośrednictwem tożsamości federacyjnej GitHub OIDC w chronionym środowisku release (dostępnym wyłącznie dla gałęzi main). Dzięki temu w procesie budowania nie są przechowywane żadne sekrety ani certyfikaty. Zewnętrzne pliki binarne dołączane do dystrybucji (np. node.exe) zachowują oryginalne podpisy swoich twórców.
Ta warstwa zapewnia potrójną ochronę:
- Jakakolwiek modyfikacja pliku w trakcie pobierania sprawia, że systemowa weryfikacja podpisu kończy się niepowodzeniem (Gatekeeper w macOS, Authenticode w Windows).
- System operacyjny wskazuje Speednet jako wydawcę wyłącznie w przypadku plików podpisanych przez Speednet.
- W macOS Apple Hardened Runtime uniemożliwia wstrzykiwanie obcego kodu do działających procesów.
Kryptograficzna weryfikacja aktualizacji
Dział zatytułowany „Kryptograficzna weryfikacja aktualizacji”W przypadku zainstalowanych aplikacji moduł automatycznej aktualizacji weryfikuje każde pobrane archiwum względem klucza publicznego Ed25519 wbudowanego na stałe w binarkę. Klucz prywatny znajduje się wyłącznie w odizolowanym środowisku CI i nie jest przechowywany na stacjach roboczych deweloperów. Nawet w razie przejęcia serwerów dystrybucyjnych mechanizm aktualizacji odrzuci każdy pakiet, który nie został podpisany autoryzowanym kluczem CI.
Dwuwarstwowy model integralności
Dział zatytułowany „Dwuwarstwowy model integralności”Pierwsza instalacja jest chroniona podpisem systemowym, natomiast aktualizacje przechodzą przez obie warstwy: weryfikację sumy i podpisu Ed25519 podczas pobierania oraz systemową weryfikację podpisu przy starcie nowej wersji.
Szczegóły procedury uzgadniania wersji znajdziesz w rozdziale Aktualizacja i odzyskiwanie (architektura).