Klucze publiczne
Klucze mają dwa zastosowania. Klucze wydań potwierdzają autentyczność oprogramowania. Klucz Ed25519 potwierdza tożsamość serwera w opcjonalnym protokole wymiany kluczy. W obu przypadkach klucz prywatny służy do podpisywania, a publiczny — do sprawdzania podpisów. Podpisywanie wydań nie wymaga dostępu do serwera dystrybucji.
Klucz wydań — SLH-DSA-SHA2-128s
Prywatny klucz wydań podpisuje manifesty, pakiety, raporty i zestawy kluczy. Powinien być przechowywany offline, osobno od serwera dystrybucji. Serwer ma klucz publiczny do sprawdzania podpisów. Routery mają początkowy klucz publiczny w /etc/gadnet/release-public-key-slhdsa.pem; kolejne klucze przyjmują ze zweryfikowanych zestawów. Poprawna weryfikacja pozwala odrzucić aktualizację bez zaufanego podpisu. Nie wyklucza błędów w podpisanym oprogramowaniu ani ataków na inne komponenty.
SLH-DSA-SHA2-128s to postkwantowy algorytm podpisu oparty na funkcjach skrótu, opisany w NIST FIPS 205. Jego bezpieczeństwo zależy od konstrukcji, parametrów i funkcji skrótu; nie oznacza odporności na każdy błąd implementacji lub przyszły atak.
Publiczna kopia do weryfikacji używana przez serwer: release-public-key-slhdsa.pem
Opublikowany zestaw kluczy
Podpisany zestaw informuje routery o nowych kluczach wydań. Router sprawdza go kluczem, któremu już ufa, i może przyjąć nowe klucze bez instalacji całego obrazu systemu. Samo przejęcie serwera nie pozwala podpisać zestawu wprowadzającego klucz atakującego.
Numer zestawu: 2, wygenerowano 2026-09-25 17:46 (UTC).
| Odcisk klucza (SHA-256) | Status | Okres ważności |
|---|---|---|
52db 3adc d469 d1af ce92 5d73 793f 58c6 50af 5ee0 43e3 2c9d 3396 fbd3 f80a 99ea |
bieżący | 25.09.2026 – 24.09.2028 |
66b2 74b0 ca6b 3153 c6dd 1496 ad29 5114 5925 b13c c5b4 14ad 857f 24cb b3c4 1431 |
wycofany | 22.09.2026 – 21.09.2028 |
Klucz wycofany lub unieważniony nie jest akceptowany do weryfikacji, nawet jeśli podana data końca ważności jeszcze nie minęła. Klucze bieżące i kolejne podlegają również kontroli okresu ważności na routerze.
Zwykła wymiana kluczy nie wymaga Twojego działania. Jeśli router pominął okres przejściowy, może być potrzebne ręczne zatwierdzenie klucza w panelu: Ustawienia → Aktualizacje systemu → Klucz podpisujący wydania. Najpierw potwierdź odcisk niezależnym, zaufanym kanałem, np. przez wcześniej zweryfikowany kontakt z pomocą GADNET. Sama tabela na tej stronie nie wystarcza — przejęty serwer może zmienić również ją. Bez niezależnego potwierdzenia nie zatwierdzaj klucza.
Dokument do automatycznego odczytu i jego podpis (dostępne tylko dla routerów GADNET):
https://updates.gadnet.pl/v1/keyset.jsonhttps://updates.gadnet.pl/v1/keyset.json.slhdsa.sig
Odcisk klucza wydań to SHA-256 jego reprezentacji DER SubjectPublicKeyInfo. Aby obliczyć go z publicznego pliku PEM, użyj OpenSSL 3.5 lub nowszego z obsługą SLH-DSA. Samo obliczenie odcisku nie potwierdza zaufania do pliku.
openssl pkey -pubin -in release-public-key-slhdsa.pem -outform DER | openssl dgst -sha256
Klucz tożsamości serwera — Ed25519
Klucz Ed25519 podpisuje przebieg opcjonalnej wymiany kluczy. Klient, który ma niezależnie potwierdzoną, zaufaną kopię klucza publicznego, może wykryć podstawiony serwer, nawet jeśli jego certyfikat TLS jest zaufany na urządzeniu. Dotyczy to również firmowego proxy. Pobranie klucza z tego samego niezaufanego serwera nie ustanawia zaufania. Routery GADNET nie korzystają z tego mechanizmu ani z przypisania tego klucza.
- Klucz publiczny (base64url)
cLYPHokx5Q_rOiSqMPBK4cxs9xXyKh1IBmq-mX4Y2R4- Odcisk (SHA-256 surowych bajtów klucza publicznego)
70b6 0f1e 8931 e50f eb3a 24aa 30f0 4ae1 cc6c f715 f22a 1d48 066a be99 7e18 d91e
Kradzież klucza tożsamości umożliwia podszywanie się pod serwer w nowych wymianach, ale nie pozwala fałszować podpisów wydań. Wcześniejsze sesje chroni wymiana z kluczami tymczasowymi, przy zachowaniu założeń kryptograficznych i pod warunkiem, że ich sekrety nie zostały ujawnione. Nie obejmuje to przejęcia działającej sesji.
Wymiana kluczy na poziomie aplikacji: szczegóły integracji
To protokół aplikacyjny serwera działający przez HTTPS, a nie opis wymiany kluczy TLS. Obecne routery GADNET go nie używają. Klient musi sprawdzić podpis przebiegu wymiany względem zaufanej tożsamości serwera, wyprowadzić klucze sesji i uwierzytelniać kolejne żądania. Sesja wymiany kluczy nie zastępuje certyfikatu urządzenia wymaganego do pobrania chronionych plików wydań.
Algorytm:
X25519MLKEM768 — Połączenie X25519 z ML-KEM-768 (FIPS 203). Aplikacja wyprowadza klucze z x25519_shared || mlkem_shared. Przy zachowaniu założeń bezpieczeństwa konstrukcji i poprawnej implementacji część klasyczna chroni w razie przełamania ML-KEM, a ML-KEM chroni sekrety sesji przed przyszłym kwantowym odszyfrowaniem nagranego ruchu. Podpis tożsamości Ed25519 pozostaje klasyczny.
Adres wymiany kluczy: POST https://updates.gadnet.pl/api/v1/kex/init
{
"version": 1,
"x25519_public": "<32 bajty, base64url>",
"mlkem768_public": "<PEM SubjectPublicKeyInfo, base64url>"
}
Odpowiedź zawiera tymczasowy klucz publiczny X25519 serwera, szyfrogram ML-KEM, identyfikator sesji, czas jej wygaśnięcia i podpis Ed25519 skrótu przebiegu wymiany. Po sprawdzeniu podpisu obie strony wyprowadzają klucze sesji przez HKDF-SHA-384 z x25519_shared || mlkem_shared, używając skrótu przebiegu wymiany jako soli. Klient musi też sprawdzić wybrany algorytm i ważność sesji. Powyższy przykład pokazuje tylko pierwsze żądanie, a nie kompletnego klienta pobierania.