Sdílený cloud v prohlížeči přes WebRTC

3. 5. 2016 10:21 (aktualizováno) Tomas Matějíček

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ě:

  1. prohlížeč A se zeptá nějakého veřejného serveru na internetu (stun server),
    jak se na venek jeví IP adresa počítače na kterém sám běží (a port).
  2. až to zjistí, předá tuhle informaci jinému prohlížeči B (přes nějaký společný „signalling“ server,
    nebo emailem, po facebooku, po chatu, jakkoli)
  3. prohlížeč B pak ví, jak se má připojit k prohlížeči A, tak to zkusí. Když to firewally a NATy po cestě dovolí, spojení se naváže přímo a další komunikace probíhá přímo mezi prohlížeči A a B, které mohou být na úplně jiných stranách zeměkoule.

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 :)

Sdílet