Specyfikacja GADNET i potrzebny sprzęt
Raspberry Pi 5, potrzebna przejściówka USB Ethernet, pamięć, kryptografia, retencja — i cztery kroki od nagrania karty do konta administratora.
Specyfikacja techniczna
Sprzęt
| Urządzenie | Raspberry Pi 5 (4 GB lub 8 GB) |
| Zasilanie | Oryginalny zasilacz USB-C 27 W (nieoryginalne ładowarki mogą powodować spadki napięcia pod obciążeniem sieciowym) |
| Chłodzenie | Obudowa z aktywnym chłodzeniem jest konieczna — bez niej Pi 5 zwalnia z powodu przegrzania |
| Pamięć | 32 GB microSD klasy A2 — obsługiwany nośnik. Redis AOF i rotacja logów audytu zużywają kartę; przy intensywnym użyciu licz się z wymianą co 12-24 miesiące |
| NVMe | Jeszcze nieprzetestowane — uruchamianie z nakładki NVMe nie jest dziś obsługiwaną konfiguracją |
| Sieć | Pi 5 ma jeden port 1 GbE na płycie (WAN). Do przewodowego LAN dodaj przejściówkę USB 3.0 Ethernet albo nakładkę — zdecydowanie zalecane; konfiguracja tylko z Wi-Fi (klienci na wbudowanym radiu Pi) też jest obsługiwana. Wi-Fi 5 (802.11ac) na wbudowanym radiu; Wi-Fi 6 (802.11ax) włącza się automatycznie z obsługiwaną kartą USB/M.2 Wi-Fi 6 |
| Przepustowość | Ok. 1 Gbps to teoretyczny limit portu na płycie; nie zmierzono jeszcze przepustowości z pełnym stosem GADNET. Brak sprzętowego odciążania i celowo jednoprocesowa warstwa sterowania — to router stawiający na bezpieczeństwo, nie urządzenie wielogigabitowe |
| Jądro | linux-rpi 6.18 |
System operacyjny
| Dystrybucja | Alpine Linux 3.24 stable (ARM64) |
| Minimalne wersje pakietów | OpenSSL ≥3.5 (PQC), Python ≥3.14, Redis 8 (rozszerzone kategorie ACL) — wszystko z Alpine 3.24 stable. Obraz nie ma skonfigurowanego repozytorium edge |
| Init | OpenRC, uvicorn z jednym procesem roboczym |
| Trwałość danych | Alpine LBU apkovl + partycja /data |
Uwierzytelnianie
| Logowanie admina | Dwie alternatywne ścieżki dwuskładnikowe: certyfikat urządzenia + PIN (telefony) albo klucz dostępu / klucz FIDO2 (komputery) |
| Klucze dostępu | W3C WebAuthn Level 2, AAL2 (algorytmy COSE: ES256, EdDSA, ES384, ES512, RS256); Level 3 jest rekomendacją W3C od sierpnia 2026 |
| Logowanie certyfikatem | Certyfikat urządzenia wystawiony przez wewnętrzne CA, powiązany z adresem IP urządzenia, plus PIN |
| Odzyskiwanie | Fraza odzyskiwania (seed) wygenerowana w panelu admina |
| Hashowanie haseł | Argon2id (64 MiB, 3 iteracje, 4 wątki — powyżej rekomendacji OWASP, dostrojone do RPi5) |
Kryptografia
| TLS 1.3 KEM | X25519MLKEM768 + SecP256r1MLKEM768 (hybrydowe PQC, NIST FIPS 203 — sierpień 2024) na punktach TLS samego routera |
| Podpisy PKI | EC P-384/P-256 + równoległe ML-DSA-65 (NIST FIPS 204 — sierpień 2024) |
| Szyfrowanie kopertowe | AES-256-GCM z HKDF-SHA-256 |
| Wyprowadzanie kluczy | HKDF-SHA-256 (RFC 5869, rejestr etykiet per przeznaczenie) dla kopert w spoczynku. PBKDF2-HMAC-SHA-256 z 600 tys. iteracji został wyłącznie dla starych kopert, przeliczanych przy następnym zapisie |
Sieć
| Domyślne strefy | 5 wbudowanych (Izolacja, Zaufana, IoT, Gość, Admin) + dowolnie wiele własnych |
| Firewall | iptables stateful, macierz stref, bezpiecznik fail-secure. Reguły ip6tables są w komplecie, ale IPv6 jest domyślnie wyłączone i włącza się je świadomie |
| DHCP | Dnsmasq, osobna podsieć dla każdej strefy |
| DNS | Resolver Unbound; DoT do serwera nadrzędnego domyślnie włączony, nasłuch DoH do włączenia, DoQ wymaga specjalnej wersji resolvera; filtrowanie kategorii oparte na regułach (UT1, RPZ) z listami, które dodajesz |
| Captive portal | RFC 8908 + sondy Apple/Android/Windows/Firefox (odpowiedzi co do bajtu) |
Dane i przechowywanie
| Główny magazyn | Redis 8 z trwałością RDB + AOF |
| Tryb awaryjny | Plikowy bezpiecznik (fail-secure, nie ciche SQLite) |
| Szyfrowanie w spoczynku | Koperta AES-256-GCM dla SENSITIVE_KEY_PREFIXES; na razie bez szyfrowania całego dysku (LUKS w planach) |
| Warstwy backupu | apkovl LBU + lokalny snapshot domyślnie; zdalny SSH (rsync) i S3 (rclone) po ustawieniu AUDIT_BACKUP_DESTINATION / AUDIT_BACKUP_S3_REMOTE. Wszystkie podpisane (manifest SLH-DSA), weryfikowane przed przywróceniem; kopii poza urządzeniem router nie szyfruje. Przywracana jest baza Redis; klucze wymagają pakietu odzyskiwania (jeszcze niedostępnego) |
Obserwowalność
| Format audytu | Strukturalny JSONL ze stabilnymi polami event_type |
| Retencja logów logowania | 90 dni (TTL_AUTH_ATTEMPT) |
| Retencja audytu bezpieczeństwa | Wydłużona (odtwarzanie zdarzeń po incydencie; cel 7 lat) |
| Wykrywanie zagrożeń | Wykrywanie skanowania portów oparte na regułach, filtrowanie kategorii DNS, wykrywanie anomalii w ruchu (IsolationForest); IPS w trybie próbnym poza wykryciami krytycznymi |
| Obsługa danych osobowych | Maskowanie IPv4 /24 i IPv6 /48 w wychodzących powiadomieniach i webhookach |
Oprogramowanie i licencja
| Backend | Python 3.14 + FastAPI + Pydantic 2 |
| Frontend | Vanilla JS ES2024+ + PWA + Service Worker |
| SBOM | CycloneDX 1.6 (ECMA-424) dla każdego wydania — tak samo Python, PWA i Alpine; 1.7 dostępne od października 2025 |
| Licencja | Apache 2.0 — kod zostanie opublikowany wraz z pierwszym stabilnym wydaniem |
Jak zacząć
Około 20 minut od czystej karty SD; do logowania wystarczy telefon lub laptop · sprzęt kupujesz we własnym zakresie: Raspberry Pi 5 4 GB + oryginalny zasilacz 27 W + obudowa z aktywnym chłodzeniem + 32 GB microSD A2 + przejściówka USB 3.0 Ethernet (Pi ma jeden port Ethernet na płycie, używany od strony internetu; przejściówka daje przewodowy LAN i jest zdecydowanie zalecana)
Pobierz i nagraj
Nagraj system na kartę SD
5 minPodłącz i uruchom
Podłącz do modemu
10 minSkonfiguruj Wi-Fi
Połącz z GADNET-Setup
3 minUtwórz konto admina
Utwórz konto lokalne i dodaj urządzenia
3 min