Základní potřeba lidí na internetu je sdílení dat – k těm legálně šiřitelným patří třeba fotky a videa z dovolené či opensource software, k těm méně legálně distribuovatelným pak filmy, muzika, porno (byť i vlastní). Až doteď k tomu byl vždycky potřeba server – počítač stále připojený do internetu, kde byly sdílené data uložené. Jako příklad můžeme uvést třeba youtube.com. Cloud, jak ho známe, není defakto žádný obláček ve vzduchu, je to nějaká mašina u někoho ve firmě.
Problém se servery je v tom, že něco stojí jejich pořízení a provoz, a ten, kdo za ně platí, jednak rozhoduje o pravidlech, a zároveň do určité míry zodpovídá za uložený obsah. O nějaké datové anarchii nemůže být žádná řeč. Začíná ale svítat na lepší časy, a to díky peer-to-peer technologiím, integrovaným přímo do vašeho internetového prohlížeče. Mám na mysli WebRTC.
Technologie WebRTC zjednodušeně pracuje nějak následovně:
Co z toho plyne? Pokud to podmínky sítě dovolují (pokud jsou prohlížeče spuštěny na počítačích, které jsou nějakým způsobem dostupné z internetu), mohou navázat navzájem spojení a posílat si data bez dalších prostředníků. Pokud podmínky sítě nedovolí přímé spojení, dá se komunikace ještě routovat přes extra server (turn server), ale tuhle variantu budeme ignorovat, ta nás nezajímá.
Kromě WebRTC implementují web browsery i několik variant, jak přímo v prohlížeči ukládat binární data (i relativně velká, neomezeně, stovky gigabajtů, pokud uživatel odklikne souhlas). Už vám svítá? Ano, data uložená v jednom prohlížeči je možné pomocí WebRTC sdílet s jiným prohlížečem, aniž by byl potřeba nějaký server kdekoli v internetu.
Spojení peer-to-peer samozřejmě nebude jeden-na-jednoho, ale v ideálním případě každý-s-každám, nebo mnoho-s-mnoha. Soubor sdílený jedním prohlížečem je možné roztrhat na kousky (podobně jako bittorrent) a stovky klientů můžou mít uložené různé části, které dohromady vytvoří celek. A stejně jako se dá sdílet soubor, je možné sdílet i „virtuální filesystem“ plný souborů, a k nim rovnou webových stránek, které budou data nějak vizualizovat (například přímo poskytnou video přehrávač, atd).
Jak ale zajistit integritu dat? Jednotlivé uzly si totiž nemohou moc důvěřovat. Jak umožnit změny dat jejich „vlastníkem“ (tedy tím, kdo je zveřejnil), ale zároveň se pojistit proti situaci, že mi do narozeninového videa někdo na síti nevnutí blok z pohřbu svojí babičky? Na tuto otázku je odpověď prostá, díky asymetrické kryptografii. Je to podobné jako s bitcoinem. Stejně jako u bitcoinu jedna adresa určuje cíl peněz a jen vlastník privátního klíče může tyto peníze utratit, tak obdobně jedna „adresa“ (hash string) může sloužit jako ověřovací klíč pro soubory, které budou podepsané privátním klíčem, jenž zná jen autor. (Popsal jsem to velmi zjednodušeně a velmi nepřesně, ale pointa je snad jasná).
Takto sdílená data budou v opravdovém „Cloudu“, někde blíže neurčeno kde, v oblaku na síti, po částech roztroušená v prohlížečích jiných uživatelů. Podobně jako u Bittorrentu budou data k dispozici dokud bude existovat aspoň jeden seed, který je sdílí. Čím větší užitečnost či zajímavost, tím větší počet seedů, a tím menší možnost takovýto oblak zablokovat (např. DDoSem). O blokování ze strany jakékoli zájmové skupiny jako je vládní moc ani nemluvě. Pouze vlastník privátního klíče bude pak schopen data změnit, či ve „svém“ subsystému přidávat/mazat soubory. A kdokoli s jiným privátním klíčem bude moci vytvořit vlastní „subsystém“, svých dat.
Pokud jste došli až sem a cítíte stejné nadšení jako já z toho, co by tohle všechno mohlo přinést, mám pro vás dobrou zprávu. Všechny výše popsané technologie již odděleně existují. Jsme jen krůček od technologie, která by se mohla označit jako Web 3.0, kde statický internet je hostován ne na serverech, ale přímo v prohlížečích uživatelů, na desktopech i v mobilech, bez nutnosti instalovat jakýkoli software.
Poskládat díly skládačky je podle mého názoru otázka pár dnů až týdnů. Jestli se do toho někdo chcete pustit, rád budu u toho. Svojí pověstnou „troškou do mlýna“ můžu přispět nějakými financemi. Jestli máte zájem, hoďte mi maila a napište odkud jste (preferuje se Šumperk a okolí). Pochopení jak (v principu) funguje WebRTC a asymetrické kryptografie podmínkou :)
To zní dost podobně jako zeronet (https://zeronet.io/), liší se jen konkrétní implementace, zeronet potřebuje navíc lokálně běžící proxy.
Haha, vidím že se mi opět potvrzuje, že když cokoli nového vymyslím, už to má někdo další na světě dávno implementované (i když trochu jinak) :)
K vašemu nápadu má blíže WebTorrent: BitTorrent over WebRTC, https://webtorrent.io/
Docela by mě zajímalo, co získám tím, že
- svoje video nasekám na 50 částí a každá bude jinde?
- svoje soubory nechám toulat po síti a nebudu mít kontrolu nad tím, kdo k nim má přístup?
- budu potřebovat server třetí strany, který ostatním řekne, kde který kus najdou?
- jak zajistím, že všechny části souboru budou dostupný?
- jak zajistím, že když sdílím 100MB soukromých dat, nebudu hostovat 100MB cizích komerčních dat?
- V čem je tohle řešení pro soukromý data lepší, než připojení SSD s kopií sdílených souborů k routeru (který stejně jede 24/7) a nakonfigurování https přes IPv6?
Název blog postu "Opravdový cloud" jsem asi zvolil nešikovně, uznávám, protože to co popisuju je zaměřené spíš na veřejné sdílení než privátní cloud.
Princip sdílení je, že nechám svoje soubory toulat po síti, bez kontroly nad tím, kdo k nim má přístup...
Žádný server třetí strany není nutný, zjevně jste nepochopil stěžejní myšlenku.
Zajištění dostupnosti je stejné jako u bittorrentu, kdo chce zajistit dostupnost ten musí sám sdílet.
A proč vlastně potřebuju sdílet tak, že dám data po kouskách někomu cizímu? Proč nemůžu mít jedno řešení pro public i privat data, rozlišený jenom přístupovýma právama (na jedno chci AES klíč, na druhý ne) a je kvůli tomu potřeba udržovat dvě různý technologie na serveru i klientovi?
Pan Occam by se rozbrečel...
Až se konečně rozmůže IPv6, nebude již potřeba takových krávovin jako hole punching a serverů 3. stran používaných k jakémukoliv účelu.
Podobně jako ZeroNet je to fajn představa, ale bojím se, že to padne na neochotě většiny uživatelů ukrajovat ze svého diskového prostoru a konektivity. Ne každý bude sdílet gigabajty dat, ne každý bude ochoten vyčlenit bandwidth, ne každý bude mít mašinu zaplou 24/7. Prakticky tak opět větší část WebRTC pojede na nějakém mega node, kde v případě výpadku budeme skoro na nule.
Ale to se stejně asi nestane, protože lidé raději ejakulují na FB apod. svůj život a je jim nějaké soukromí ukradené. Vždyť je to tak snadné, oproti tomu je WebRTC aj. španělská vesnice.
Už jsem podobnou myšlenku slyšel od člověka, co si říká Substack.
Tady jsou nějaké knihovny/moduly, které se toho týkají:
https://github.com/substack/hypercore
https://github.com/substack/hyperlog
https://github.com/substack/hyperkv
Tomáš je autorem několika více či méně známých projektů jak z oblasti operačních systémů, tak internetu. V současnosti samozvaný expert na Linux, Bash, PHP a MySQL.
Přečteno 26 093×
Přečteno 24 044×
Přečteno 19 552×
Přečteno 18 334×
Přečteno 12 926×