Pevnost

Proč naše VPN servery běží jen z paměti a co se stane při zabavení.

Blog · 19. 10. 2026 · 8 min

Stav k 19. 10. 2026: Pevnost je v soukromé betě. První server prg1 v Hluboké nad Vltavou (datacentrum WEDOS) běží od 18. října; první krátký test naměřil kolem 300 Mbit/s. Každý nový účet má dvě hodiny zdarma (jedna zkouška na připojení, jedno zařízení), pak 120 Kč za 30 dní nebo 1 200 Kč za rok. Platit jde Bitcoinem on-chain (preferujeme), kartou přes Stripe nebo převodem; Lightning plánujeme, Monero se chystá. Aplikace pro Windows 0.3.1 beta, pro Android 0.1.0 beta. Naposledy revidováno 19. 10. 2026.

Věta „naše VPN servery běží jen z paměti“ se píše snadno. Tento článek vysvětluje, co přesně znamená na našem prvním uzlu prg1 v datacentru WEDOS v Hluboké nad Vltavou: jak startuje, co má na disku, odkud bere klíče, co dokazuje a nedokazuje hash na stavové stránce a co by vydalo zabavení. Model hrozeb, ze kterého návrh vychází, rozebírá článek co skutečně vydá zabavený VPN server; tady jde o to, jak je to postavené.

Jak uzel startuje

Zavaděč na disku nahraje jádro, initramfs a komprimovaný obraz souborového systému o velikosti kolem 260 MB, sestavený z Debianu. Parametr toram zkopíruje celý obraz do paměti; kořenový souborový systém včetně zapisovatelné vrstvy žije v RAM. Od té chvíle systém disk nepotřebuje a nic na něj nezapisuje. Uzel nemá swap, systémový žurnál je jen v paměti, náš DNS resolver nevede log dotazů, neběží žádný SSH server a účet root je zamčený.

Prakticky to znamená, že po restartu je stroj přesně ve stavu, v jakém byl obraz sestaven. Nic, co se dělo za běhu, do dalšího startu nepřenese: žádné soubory, žádné logy, žádné dočasné záznamy, které by na disku zapomněl nějaký program.

Co je na disku

Zavaděč, jádro, initramfs a obraz. A poctivě ještě jedna věc: malý nosný systém z původní instalace serveru, který spouštíme jen při výměně obrazu. Při běžném provozu neběží, nemá žádné klíče VPN ani data zákazníků a jeho vlastní systémové záznamy se týkají jen naší údržby. Odstranit ho plánujeme, jakmile budeme umět obraz vyměnit jinak.

Na disk uzel zapisuje v jediném případě: když sami spustíme výměnu obrazu, nastaví jednorázový příznak v prostředí zavaděče, aby další start šel do nosného systému. Nic jiného se na disk za běhu nedostane.

Odkud se berou klíče

Obraz neobsahuje žádná tajemství, jen veřejné klíče našeho řídicího serveru, jeho certifikační autoritu a adresy. Cokoli z něj si tedy může přečíst kdokoli a nic tím nezíská.

Po startu si uzel v paměti vytvoří dočasný správcovský klíč, zaregistruje se u řídicího serveru, který běží v jiném datacentru, a ohlásí, jaký obraz nabootoval. My ho ručně schválíme, a to po každém jednotlivém startu. Teprve potom dostane svůj klíč WireGuard a seznam veřejných klíčů zařízení. Žádost o schválení, kterou jsme nečekali, je incident, ne restart: neschválíme ji a uzel bez klíčů žádný provoz nenese. Kdo by stroj odnesl a zapnul jinde, dostane krabici, která čeká na schválení, jež nepřijde.

Zveřejněný hash a jeho meze

Na stavové stránce, která se obnovuje každých pět minut, je vidět, které uzly jsou online, a ID a SHA‑256 zveřejněného obrazu. Každá výměna obrazu se tam projeví novým hashem. Počty účtů a zařízení stránka ukazuje jen v hrubých pásmech, aby z ní nešlo nic vyčíst o jednotlivcích.

Co to dokazuje: který build podle nás běží, a že ho nemůžeme potichu vyměnit, aniž by se stránka změnila. Co to nedokazuje: že stroj v racku běží přesně tenhle build. To dnes zvenčí ověřit nejde. V plánu jsou reprodukovatelná sestavení, díky kterým si hash spočítáte sami ze zdrojů, a na vlastním hardwaru vzdálená atestace přes TPM, kdy za to, co nabootovalo, ručí sám hardware a řídicí server bez ní klíče nevydá. Do té doby je hash veřejný závazek, ne důkaz. Říkáme to raději sami, než aby to za nás musel napsat někdo jiný.

Co si můžete zkontrolovat sami

Co se stane při zabavení

Vypnutý stroj

Disk s veřejným obrazem a nosným systémem. Paměť ztratí obsah během sekund až minut po odpojení napájení. O minulých relacích nezůstane nic. Po zapnutí jinde uzel požádá o schválení, nedostane ho a klíč nikdy neobdrží.

Běžící stroj

V paměti je klíč serveru, veřejné klíče zařízení s adresami v tunelu a u každého právě připojeného zařízení jeho aktuální adresa a čas posledního handshaku. Připravený útočník by mohl zkusit útok cold boot: paměť zchladit a vyčíst. Náš pronajatý hardware šifrování paměti nemá; AMD SME/TSME nebo ekvivalent plánujeme na vlastních strojích. Takový útok by prozradil okamžik, kdo byl připojen právě teď, ne historii.

Naše reakce

Pokud bychom měli podezření, že někdo četl paměť běžícího uzlu, vyměníme klíč serveru. Naše aplikace si stáhnou nový podepsaný seznam serverů; s oficiální aplikací WireGuard si stáhnete nový konfigurační soubor ze stránky účtu.

Soudní příkaz vůči nám vrátí krátký seznam ze zásad ochrany dat: ID účtu, datum expirace, veřejné klíče zařízení, záznam o platbě a souhrnné zatížení. A datacentrum, jako každý operátor, vidí, které adresy se k uzlu připojují, a může vzorkovat toky. To žádný návrh běžící z paměti nezmění; víc v článku co uvidí váš operátor.

Proč se s tím namáhat

„Slibujeme, že nelogujeme“ závisí na našem chování. „Stroj nemá kam log uložit“ závisí na jeho návrhu, o kterém si můžete přečíst a částečně ho ověřit. Raději dáme práci sem a řekneme vám, kde ověřování končí. Servery bez disků provozuje i Mullvad a další poskytovatelé, nejsme v tom sami; co přidáváme, je krátký seznam toho, co existuje, a otevřenost o částech, které zatím dokázat neumíme. Srovnání s většími službami je v článku Pevnost vs Mullvad vs Proton VPN.