Cloudflare leállás, avagy centralizált/decentralizált-e a hálózat?
Ma délután (2019. 07. 02. 15:52-kor) körülbelül fél órára elérhetetlenné vált az internet egy része, a Cloudflare hibás frissítésének köszönhetően. A cég egyébként rengeteg weboldalnak nyújt ingyenes védelmet a túlterheléses (dos, ddos) támadások ellen, de sajnos most balul sült el a dolog. Mivel minden forgalom rajtuk keresztül folyik, leállásukkor a weboldalak is elérhetetlenné váltak.
Miért használja mégis megannyi weboldal a Cloudflare-t, miért kell egy szolgáltató uralmának kiszolgálni az internetet?
Nos, pont emiatt hozták létre a Bitcoint is, csakhogy ott épp a bankokkal volt probléma. A következő gondolatmenettel próbálom érzékeltetni, hogy a megoldás sajnos korántsem ennyire egyszerű a weboldalaknál.
Egy átlagos nézettségű weboldal kiszolgálásához egy kisebb saját/bérelt/megosztott szerver is bőven elég. Teljesen rendben van, ám sajnos mindig van egy 10 éves orosz „hacker” kisfiú, aki anyuci számítógépéről egy letöltött program segítségével poénból DOS támadást indít a szervergépünk ellen. Mivel nem egy nagy szerverfarmról beszélünk – nem is lenne rá szükség, a legtöbb magyar weboldal elfut egy krumplin – a kis Szergej simán túlterheli azt, egyetlen darab laptoppal (anyuka persze mit sem sejt).
Erre nyújt megoldást a Cloudflare, ami a weboldalt kiszolgáló szerver és Szergej anyukájának laptopja közé áll. A Cloudflare rengeteg szervert üzemeltet, nemhogy a kis Szergej nem tudja túlterhelni, de még a hatalmas botnetek ellen is felveszi a harcot. A mi weblapunk ugyanúgy a kis szerverről fut, de ez nem baj, mert a Cloudflare már kiszűri az összes támadót, és hozzánk csak a valós látogatók jutnak el. Igazából ilyenkor elrejtőzünk a hálózat mögé, és ha bármilyen adatot szeretnénk küldeni a látogatóknak, azt a Cloudflare-en keresztül tesszük. Ennek pedig igen nagy veszélyei vannak, mint látjuk.
Azt hiszem a dilemma érthető. Vagy megbízunk egy nagy szolgáltatóban, és ezzel centralizáljuk az internetet, vagy mi magunk kell béreljünk rengeteg szervert, ami legalább a kisebb támadásokat kibírja – ez utóbbi viszont elég költséges.
Ha a Bitcoinra gondolunk, akkor láthatjuk, hogy mennyire is költséges lehet ez a második modell. Ebben az esetben ugyanis nem elég, hogy több ezer gép szinkronizálja a főkönyvet, hiszen lehet, hogy csalók vannak a rendszerben. Létre kell hozni egy megbízható mechanizmust, ami alapján minden gép egyetértésre jut: melyik a valódi blokklánc, és melyik az, amelyiket a csaló készítette? El lehetne dönteni ezt sima kézfeltételes szavazással is, csakhogy a digitális világban ez elég könnyen átverhető rendszer lenne. Valami alapján el kellene dönteni, hogy kinek legyen több szavazati joga, és kinek kevesebb, mert a létszám itt nem lehet mérvadó. A Bitcoin esetében az kap szavazati jogot, akinek a számítógépe többet dolgozik (Proof-of-Work). A baj csak az, hogy sajnos ma már nem otthon bányászunk Bitcoint, hanem óriási többnyire kínai cégek ASIC célgépekkel – így megint pár ember kezébe kerülhet az egész hálózat (miközben rengeteg energiát pazarlunk el erre ahelyett, hogy az elektromos autót töltenénk vele).
Mi lenne, ha nem létszám, munka (Proof of Work), vagy birtokolt coin (Proof of Stake) alapján kapnának szavazati jogot a bányászok, hanem egy matematikai algoritmus random választaná ki a őket, utólag bizonyítható módon?