Hlavní navigace

Anonymizační sítě, vpsAdminOS a blockchain, zápisky z OpenCamp BA

Petr Krčmář

V sobotu 21. dubna se v Bratislavě konal první ročník konference OpenCamp, která se zabývala otevřeným software, technologiemi a daty. Hovořilo se o bezpečnosti, svobodné společnosti i provozu vlastního datacentra.

Doba čtení: 11 minut

První ročník nově založené konference Bratislava OpenCamp navázal na tradiční slovenské OSS Víkendy, které se časem vyčerpaly a původní organizátoři chtěli předat štafetu někomu dalšímu. Chopili se jí Ľubor Jurena a Marek Galiński, kteří se rozhodli začít znovu budovat otevřenou komunitu na Slovensku.

Akce se konala v sobotu 21. dubna 2018 na FIIT STU a probíhala ve čtyřech sálech, kde běžely přednášky v češtině a slovenštině. Přišlo přibližně 300 posluchačů a zazněly tři desítky přednášek a workshopů. Mezi jednotlivými bloky bylo možné se občerstvit dobrou kávou, prohlédnout si stánky různých firem a organizací a popovídat si s mnoha chytrými lidmi.

Přestože šlo o první ročník a přestože se o vše postarala hrstka organizátorů z komunity, nic podstatného nechybělo. Program běžel perfektně, technika fungovala na jedničku a hlavně se podařilo poměrně ambiciózní akci naplnit zajímavým programem. Záznam pořizován nebyl, protože na dva organizátory toho i bez něj bylo dost. Ovšem, na konference se má chodit. Tak příště přijďte a podpoříte slovenskou komunitu.

Petr Hanáček: anonymizační sítě

Pojem anonymita říká, že můžeme provést nějaké akce, aniž by se vědělo, kdo je provedl. Kromě toho existuje ještě pojem pseudonymita, který znamená téměř totéž, ale máme navíc možnost získat odpověď. Ve všeobecném vnímání se tyto dva pojmy nerozlišují a obvykle znamená, že když říkáme anonymita, máme vlastně na mysli pseudonymitu, řekl na začátku Hanáček.

V případě Toru se často uvádí, že základní princip je postaven na „cibulovém šifrování“, ale to samo o sobě nezajišťuje anonymitu. Šifrováním nikdy nezajistíme anonymitu, to jen doplňuje Toru další dobré vlastnosti. Existují tři různé metody, jak být anonymní: proxy, mixer a veřejná nástěnka.

Proxy nám umožňuje využívat její vlastní IP adresu a vyřizuje komunikaci za nás. Mixer umožňuje zamíchat komunikaci více různých zdrojů, kdy pak není možné zjistit, kdo přesně co poslal. Veřejná nástěnka pak umožňuje zveřejňovat anonymní informace kýmkoliv, libovolný kolemjdoucí si ji pak může přečíst.

Nejrychleji je možné implementovat anonymitu pomocí proxy, což je jednoduché, rychlé a latenci to zhoršuje jen velmi málo. Samotná proxy je ale slabým článkem, je možné přijít za provozovatelem proxy serveru a začít ho přesvědčovat, že má vydat IP adresu skutečného uživatele. Toto riziko je možné zmírnit tím, že se proxy servery zařazují do kaskád. To sice zvyšuje latenci, ale útočník by musel obejít všechny proxy servery a získat z nich citlivé informace.

Princip mixeru navrhl už velmi dávno David Chaum původně pro anonymí e-mail. Odesílatelé pak posílají zprávy do mixeru, tam se zamíchají a odešlou se různým příjemcům. Případný útočník pak sice může vidět všechny strany komunikace, ale netuší, kdo s kým přesně komunikuje. Vidíte, že to ale funguje jen v případě opravdu velkých mixérů s tisíci uživateli. Nemá smysl si založit mixer pro dva uživatele.

Nástěnka umožňuje zveřejňovat informace například na veřejném diskusním fóru. Bude to fungovat ale jen v případě, že každý čte všechno. Pokud budete číst jen něco, je možné statistickou analýzou zjistit, co který uživatel čte. Při dodržení pravidel je to ale velmi dobrý způsob, pokud nám nevadí, že se přenáší výrazně více dat.

Lze tu najít analogii z reálného světa, tedy spíše ze špionážních románů. Bílý kůň či mrtvá schránka jsou jako proxy, inzeráty v novinách jsou veřejné nástěnky a použití klasické pošty je vlastně mixer.

Z hlediska implementace se dnes používá několik různých aplikací. Pro komunikaci z internetu do internetu se obvykle používají VPN, protože obě strany musí mít svou IP adresu. Pro komunikaci uvnitř darknetu existuje například Freenet nebo I2P. Tady existuje vlastní adresní prostor a neexistuje jednoduchý způsob, jak zevnitř komunikovat ven a naopak.

Nejrozšířenější je pak určitě Tor, který nediskriminuje ani jednu stranu: umožňuje komunikaci jak po internetu, tak i uvnitř darknetu. Byl navržen pro komunikaci s nízkou latencí, takže se hodí i pro použití na webu. Síť běží od roku 2003, má tisíce uzlů a miliony uživatelů.

Tor musel v průběhu času opustit čistě asymetrickou kryptografii a dnes používá symetrické klíče, které jsou na začátku předány asymetricky. Klient se připojí k prvnímu uzlu, domluví si s ním šifrovací klíč a předá informaci o tom, s kým si přeje komunikovat. Uzel se pak spojí s dalším uzlem, opět si vymění klíče a tak dále až do výstupního uzlu. Počet uzlů by mohl být vlastně libovolný, ale Tor se rozhodl, že se budou používat tři, což je minimální počet zajišťující anonymitu. Ty mají své názvy: entry guards, onion router a exit router.

Kvůli anonymitě směrem ven by Tor vůbec šifrování používat nemusel, ale pak by někdo odposlouchávají uzly snadno spojil informace o odesílateli a příjemci. Nejvíce jsou ohroženy exit nody, které by mohly klientům do nešifrované komunikace přidávat také malware. Přestože tedy šifrování pomocí TLS nijak Toru nepomůže, vy byste jej rozhodně měli používat.

Toto je jen jedna polovina Toru, tedy komunikace z internetu do internetu. Druhou polovinou je pak komunikace uvnitř darknetu. Dnes se to jmenuje Location Hidden Services, ale pravděpodobně se bude název měnit. Princip ale zůstane stejný. Tato služba umožňuje vytvořit server uvnitř sítě, který zůstává také anonymní. V původní situace byl anonymní jen klient, tady je anonymní i server.

Uvnitř sítě existují uzly, na kterých server ohlásí svou interní adresu v síti Tor a klient jej umí kontaktovat. Aby se neporušila anonymita, dohodne se ještě takzvaný rendez-vous point, na kterém se obě strany potkají a ke komunikaci používají také síť Tor. Sice se tím prodlouží komunikační cesta, ale obě strany jsou anonymizovány a neznají se.

Útoky na Tor obvykle nevyužívají slabiny samotné sítě, ale snaží se přesvědčit počítač klienta, aby sám vyzradil svou skutečnou IP adresu. To není tak těžké, jak to vypadá. Používají se různé metody využívající Flash, PDF nebo JavaScript. Stejně tak je možné například sledovat komunikaci klienta s DNS nebo mu na server umístit personalizovaný soubor. Samozřejmě je možné zneužít také exploit na prohlížeč a nainstalovat malware.

Existují také ale externí útoky, za které nemůže klientský počítač, ale samotná síť. Je možné zneužít například pakety typu RELAY_EARLY a RELAY, které se chovají téměř stejně a mohou proudit oběma směry. Je možné střídat obě varianty a tím si do komunikace zakódovat adresu cíle. Pokud tedy útočník sledoval komunikaci na obou stranách Toru, mohl takto postavit postranní kanál a spojit si obě strany. Tomuto útoku současný Tor už brání.

Známý je případ obchodu Silk Road, který právě využíval skrytou službu v darknetu Toru. Obvykle se na něm prodávaly doplňky stravy jako tráva, LSD a podobně. Byly tam třeba i počítače, ale dominantní byly ty doplňky stravy. Dva a půl roku to takto fungovalo a vydělávalo to spoustu peněz. FBI vůbec nevěděla, co s tím má dělat a tlak na ni stoupal. Vyšetřování ale probíhalo a podařilo se vypátrat konkrétního člověka a zatknout ho v knihovně.

Průběh zatčení byl velmi zajímavý: do tichého oddělení science fiction přišla dvojice lidí, která se začala nahlas hádat. Jakmile se jeden z uživatelů rozhodl zvednout a okřiknout je, jiná dáma mu ze stolu sebrala notebook. Odemčený, přihlášený a s dešifrovanými disky. Tím člověkem byl Ross Ulbricht, autor a správce Silk Roadu.

Za měsíc byl 30letý Ulbricht uznán vinným ve všech sedmi bodech obžaloby včetně pašování drog. Jednání trvalo jen tři a půl hodiny a vyneslo možnost trestu v rozsahu 30 let až doživotí. Soudkyně pak rozhodla o trestu nejvyšším, Ulbricht je tedy ve vězení na doživotí. Jak přesně FBI na konkrétního člověka přišla, není jasné. Ulbricht ale udělal několik chyb, nechal si například poslat z Kanady balíček falešných pasů na svou běžnou adresu. Ptal se také na podrobnosti na veřejných diskusních fórech a podobně. Při soudu mu pak přitížilo to, že si o své práci vedl velmi podrobný deník, ke kterému se vyšetřovatelé dostali, protože byl uvnitř otevřeného notebooku.

Existuje několik konkurentů Toru jako Pond, Vuvuzela, Riposte a Dissent. Bohužel mají buď vysokou latenci nebo nejsou tak bezpečné. Zatím ještě hledání rozumný kompromis, který by přinesl zároveň použitelnost a dobrou anonymitu.

Ondrej Sarnecký: Blockchain

Ondrej Sarnecký se zabývá technologiemi skrytými za kryptoměnami, zajímají ho především implementační detaily. Přednáška začala netradičně: Jan Hus, Johannes Gutenberg a Martin Luther. Jejich společným jmenovatelem je decentralizace a snaha odstranit zbytečného prostředníka. To je paralela se současností, protože i my se snažíme odstranit prostředníka.

Snaha zbavit se bank a klasické měny nahradit něčím moderním a decentralizovaným není vůbec nová. Začala už v 80. letech, kdy David Chaum založil neúspěšný projekt DigiCash. Trvalo ale dalších dvacet let, než Satoshi Nakamoto vytvořil Bitcoin. Protože Bitcoin používá hodně stejných principů jako DigiCash, myslí si řada lidí, že Chaum je Nakamoto.

V současné době jsou data na internetu hodně centralizovaná, je možné je cenzurovat nebo ovlivnit. Ovlivnění může být buď záměrné nebo dané prostou chybou. Tady přichází na řadu Blockchain, který nabízí tři hlavní výhody: transparentnost, decentralizovanost a neměnnost.

Funkci je si možné představit na modelové situaci: dejme tomu, že malá skupina lidí se rozhodne, že se bude sama starat o svoje finance. Začnou si mezi sebou posílat informace o platbách a dokud nemají informaci všichni, je neplatná. Jakmile ji všichni potvrdí, je považovaná za ultimátní a neměnnou pravdu. Jednotlivé transakce jsou pak ukládány do neměnného logu, ve kterém záznamy nepřerušitelně navazují.

V případě Bitcoinu se na potvrzování plateb může podílet kdokoliv tím, že řeší výpočetně náročnou úlohu. To je energetické náročné, proto by to nikdo nedělal zadarmo. Za svou práci tak může být odměněn přímo v bitcoinech. Jakmile je úloha vyřešena, jsou transakce potvrzeny a zapsány navždy do Blockchainu. Protože jednotlivé záznamy navazují, není možné takto zapečetěná data nepozorovaně změnit.

Samotné transakce mají jen omezené použití, jde jen o jednoduchou účetní knihu. Nabízí se ale možnost přidat do nich nějakou inteligenci, například do nich přidat podmínky a další složitější funkce. Proto vzniklo Ethereum, což je nadstavba nad Bitcoinem, která zpracovává kód. Ten říká transakcím, jak se mají chovat. Tento kus kódu je neměnný a běží navždy. To nám umožňuje vytvořit nezničitelné a nezastavitelné aplikace, které budou fungovat, dokud s nimi bude někdo interagovat.

Vznikají takzvané Smart Contracts, které umožňují rozdělit práci s kryptoměnami na dvě části: peněženku a navíc kód, který s peněženkami pracuje. Když má například zaměstnanec právo na dividendy, nemusí nikomu kvůli vyplacení volat a hlídat dodržování smluv. Vytvoří se kód, který se o jeho pravidelnou výplatu postará. Smart Contracty se píší v jazyce Solidity, který je hodně podobný JavaScriptu.

Ve Smart Contractu může být napsaná cela firma včetně všech pravidel nebo třeba napojení na zaměstnance. Představte si to jako pracovní smlouvu: když je zaměstnanec ve firmě nějakou dobu, udělal danou práci a odevzdal ji, vyplať mu předem dohodnutou částku. Je to neporušitelná smlouva, která platí vždy. Takto organizované firmě se říká DAO: Decentralized Autonomous Organisation.

Postupně už vznikají decentralizované služby, které jsou náhradou těch současných. Takové služby budou nezničitelné a neměnné. Tím vzniká Web 3.0, zcela decentralizovaný. Jde například o datová úložiště, sociální sítě, platformy pro distribuované výpočty a podobně.

Pavel Šnajdr: vpsAdminOS – distribuce pro kontejnery

Pavel Šnajdr je zakládajícím členem spolku vpsFree.cz, jehož smyslem je nabídnout členům sdílený hardware, na který by sami nedosáhli nebo by ho nevyužili. Spolek používá od začátku technologii OpenVZ, na které v současné době běží přes 1753 kontejnerů používajících 7 TB RAM a 3506 jader. To nám díky kontejnerům může běžet na 17 fyzických serverech s 256 GB RAM.

OpenVZ 6 bylo označeno za zastaralé, protože jde o obrovský patch pro velmi staré linuxové jádro. Mezi tím vyšel nástupce OpenVZ 7, ale vývojářský tým se zaměřuje na příjmy a komunita musela jít stranou. Dostanete od nich konkrétní distribuci a nemůžete si nic moc vymýšlet. Starou verzi jste ještě mohli nainstalovat do libovolné distribuce. Tím pro vpsFree.cz padla možnost aktualizovat na novou verzi OpenVZ a bylo nutné hledat nové řešení.

Pro člena je důležité, aby se systém choval jako běžný plnohodnotný virtuál, přesto je kvůli správě paměti důležité zůstat u kontejnerů. Zároveň ale chceme dostatečné oddělení, aby si uživatelé nemohli výrazně ovlivňovat své servery. Pavel Šnajdr mezi dalšími požadavky uvedl silně spravovatelnou storage a mocnou administrovatelnost.

Standardním řešením je LXC, které je dobré, ale jeho správa je komplikovaná. Jakmile tam přidáte namespaces, tak je to peklo. Ani LXD není řešení, protože bychom ho museli spouštět pod každým uživatelem zvlášť. Navíc na infrastruktuře vpsFree.cz běží ZFSonLinux, který má spoustu výborných vlastností (třeba nativní šifrování), s jehož integrací běžná řešení nepočítají. Chtěli bychom mít nativně šifrované rootovské oddíly.

Nové řešení musí používat user namespaces, aby nebyl root ve virtuálu zároveň rootem na hostiteli. Pomocí namespaces je možné běžného uživatele ve virtuálním prostředí přemapovat tak, že se chová jako root. Výsledkem bylo, že pro nás bylo jednodušší napsat si vlastní řešení místo LXD.

Výsledkem je operační systém vpsAdminOS. Vytváříme si vlastní live distribuci, nad kterou máme plnou kontrolu. Celé to pak může být bezestavové a nemusíme řešit, že systém na každém serveru je mírně upravený. Vývojáři ale nechtěli vytvářet úplně vlastní distribuci, jen chtěli použít nějaké hotové řešení a upravit si ho.

Nakonec byla zvolena distribuce NixOS, která je funkcionální a celá podoba systému je zapsaná v konfiguračních souborech, které je možné udržovat na GitHubu. Čistě funkcionální správce balíků Nix umožňuje přesně sestavit systém na míru, celá kompilace je reprodukovatelná a je možné například také nainstalovat více různých verzí jednoho balíku.

MIF18 tip v článku ROSA

vpsAdminOS je tedy NixOS bez zbytečných součástí, používá jádro 4.15 a novější, místo systemd je používán runit, kontejnery staví nad LXC/LXCFS a samozřejmě ZFSonLinux. Systém se dá bootovat po síti, z flash disku nebo z CD, nebo je možné jej nainstalovat přímo na disk. Nasazování a správa bude řízena pomocí standardního nástroje NixOps.

Místo LXD je použito vlastní řešení s názvem osctl, které samo řeší user namespaces, cgroups, správu kontejnerů, přípravu repositáře šablon a podobně. Cokoliv, co umí LXD, umí také náš osctl. Veškerý vývoj probíhá na GitHubu, kde je možné si vše vyzkoušet a přidat se k vývoji. Do podzimu bychom měli připravit vydání včetně podrobné dokumentace k tomu, jak si pustit vlastní virtualizační datacentrum.

Našli jste v článku chybu?