Byzantine fault tolerance

Byzantine fault tolerance

Dnes se zaměříme na základní kryptografickou úlohu – na problém byzantských generálů. Kdo doteď nepochopil, k čemu ten blockchain vlastně je, ať si prosím, před veškerými dalšími úvahami a dotazy, přečte tento článek. Omlouvám se, že ho zveřejňuji až teď.

Zdroj: www.czechfreepress.cz/valky/1453-pad-konstantinopole-zanik-byzantske-rise-1.html

Úvod

Byzantine fault tolerance, problém dvou generálů nebo byzantine resistance znamená odolnost systému vůči komplikacím spojeným s úlohou byzantských generálů. Navazuje na teorii her a týká se elementární otázky bezpečného přenosu informace.

Obsah

  • Zadání
    • Armáda
    • Letadlo
    • Škodlivé uzly
      • Útok 51% výkonem
      • Zamezení propagace adresy
  • Konsensus
    • Záruka práce
      • Princip veřejné databáze a blockchain
      • Transakce
  • Přechod od důvěry v lidi k důvěře ve stroje
    • Kde je třeba lidská důvěra
    • Armáda a tyhle technologie
  • Nekonečná globalizace
  • Anonymita
  • Scalability problem
  • Závěr
    • Co všechno potřebuju vědět“
    • Kde mám začít?

1      Zadání

1.1   Armáda

Máme dvě armády a město, na nějž se chystají zaútočit. Armády se nacházejí daleko od sebe a musí se domluvit tak, aby zaútočily současně, protože jinak město neporazí. Jedna z nejzákladnějších kryptografických otázek zní, jak se mají dohodnout? Pokud pošlou posla, tak kterému mohou věřit?

Při detailním pohledu zjistíme, že hledáme mediátor – nějaké ideální prostředí pro přenos informace. A dále – co je pro takové prostředí pro přenos informací naprosto zásadní? Představte si to, nahráváte do hypotetického prostředí zprávy, jež si poté čte druhá armáda. Když vynecháme asymetrické šifrování, nějaké adresy, veřejné klíče nebo ideální neodposlouchávatelný kanál, zbyde nám jediná naprosto nutná podmínka. Víte, která to je?

Armády musejí v databázi vidět ta samá data, a to je ještě důležitější než šifrování těch dat. Armády musejí mít jistotu nezměnitelnosti.

Tolerance proti byzantskému selhání je schopnost dosáhnout schody tak, že účastníci (nody, uzly, resp. uživatelé) chovající se škodlivě (např. pokus o dvojité utracení stejné částky v síti Bitcoin) nemohou systém ovlivnit. Decentralizovatelnost takového prostředí má totiž jednu nepříjemnou vlastnost – nikomu nebrání v účasti.

1.2   Letadlo

„Aircraft manufacturers could save a lot of weight by tossing the wires and doing it all through Bluetooth, but then the passengers are at risk of a remote hijack. Commercial aircraft are horribly inefficient because they have to optimize for reliability. Everything else is secondary.“ (zdroj: https://elaineou.com/2017/02/12/byzantine-fault-tolerant-airplanes/)

Obrovský problém!! Problém byzantských generálů se vyskytuje zpravidla všude, kde je něco bezdrátové (proto mají Boeingy několik tisíc kilometrů drátů), ale není to samozřejmě nutnou podmínkou (příklad internet). Kryptografie (nauka o šifrování zpráv) tak zasahuje do obrovské oblasti lidské činnosti.

Ukažme si na praktickém příkladu, jak se „škodlivé“ chování uzlů promítá v jejich slabém vlivu na celou síť. Pokud neznáte Bitcoin, přeskočte na nadpis Konsensus.

1.3   Škodlivé uzly

Příkladem budiž Bitcoin – elektronická měna, kterou pravděpodobně znáte, pokud tohle čtete. Podívejme se, co se stane, pokud chce někdo do sítě propagovat (tzn. rozšířit) vadná data.

1.3.1 Útok 51% výkonem

Tomuto útoku není odolný zatím žádný známý algoritmus na vytvoření shody. Termín je spjat s PoW (proof of work – záruka práce) – správné znění veřejné databáze, jež v případě Bitcoinu slouží jako veřejná účetní kniha (tzv. public ledger), je takové, za nímž stojí nejvíce výpočetní práce (povíme si o tom více, nebojte).

Pokud se těžaři potvrzující finanční transakce sjednotí a využijí svou sílu k tomu, aby tvořili zdání o započtení transakce do sítě a vzápětí řetězec se svou obří výpočetní silou předběhnou s řetězcem novým, který je neobsahuje, poškodí sami sebe. Sice budou nějakou dobu moct dvojitě utrácet, ale z technického hlediska Bitcoinu budou brzy odhaleni. Co to znamená?

Činnost, kterou nejprve dělali kvůli zbohatnutí, znehodnotí jejich Bitcoiny. Jak? Jejich verzi transakční historie (kde mají připsané Bitcoiny, které utratili) lidi jednoduše zavrhnou, i když vykazuje nejvíce výpočetní práce, a to je na Bitcoinu to nejhezčí – nikdo vám nic nediktuje. Všechno je vaše volba.

Tento útok je proto dost mizerný a jde spíš proti cílům jeho zprostředkovatelů, resp. „špatné“ chování se prostě nevyplatí a znehodnotí potenciální lup. A to je strašně důležité – je třeba myslet na to, aby špatné chování uzlů mělo vždy negativní efekt na ně samotné.

1.3.2 Zamezení propagace adresy

Při myšlenkových experimentech a při hledání slabých míst je třeba počítat s tím, že zrádce je všude. Co když mezi vás a internetové připojení zapojí chytrou krabičku, která vás bude klamat? Pomůže mu to?

V Bitcoinu, pokud si chcete založit peněženku, tak vyšlete do sítě její veřejnou adresu, což je veřejný kryptografický klíč (resp. „peněženka“), který naprosto zkráceně zajišťuje prokázání vlastnictví – pokud za pomocí soukromého klíče podepíšu data, veřejný klíč (také můj) ověří, zda jsem to provedl já. Tak může ve výsledku s Bitcoiny manipulovat jen ten, kdo „má klíč k peněžence“.

V případě, že bych zmanipuloval propagovanou adresu, jsem nedosáhl vůbec ničeho – on má klíč ke své adrese a když tu adresu změním, tak mu peníze neukradnu. Takže manipulace s výstupními daty mě nijak nepoškodí – pokud podepisuju transakci, dělám to bez připojení k internetu a do sítě propaguju až hotový podpis. Nikdo nic nemůže udělat za mě.

2      Konsensus

Konsensus řeší, podle čeho se shodnout na obsahu veřejné databáze. Mluvil jsem o záruce práce – to je také odpověď na vaši rodící se otázku, co když někdo zmanipuluje připojení z druhé strany. Konsensus musí být logicky naprosto neoblomný.

2.1   Záruka práce (proof of work)

Představte si, že někomu předložíte matematický problém (tzv. NP-úplný problém), u nějž víte, že jeho řešení je velmi obtížné nebo minimálně neúměrné velikosti úlohy. V závislosti na velikosti zadání jste si jisti, že pokud řešitel úlohu zvládl, musel vykonat nezbytné množství výpočetní práce. Nešlo to jinak. Ale zároveň platí, že čas pro ověření je mnohonásobně kratší než čas pro výpočet. Jak to souvisí s kryptografickými systémy?

Vysíláte data do veřejné sítě, která, jak již jsme si řekli, slouží jako ideální mediátor nebo prostředí mezi dvěma armádami a funguje i tehdy, pokud do něj zasáhne útočník.

2.1.1 Princip veřejné databáze a blockchain

Princip databáze tkví v tom, že je decentralizovaná a distribuovaná. K tomu, aby fungovala, proto musí být její záznamy zapsané alespoň u většiny uzlů (uživatelů, účastníků). Jakmile data vyšlete, těžaři sesbírají ještě další vyslané ve stejnou dobu a udělají z nich balíček – blok. Potom na základě všech těch dat hledají číslo, tzv. nonci, kterou když proženou jednosměrnou funkcí, tak jim zkráceně řečeno vyjdou ta samá data v bloku. Je to matematika – nonce nemá nikdo nikde napsané a jde o férovou soutěž. Kdo nalezl nonci, musel vynaložit hodně výpočetního výkonu.

K bloku se nonce přidá a blok další vzniká stejným způsobem (jsou tam technické detaily o hashování, ale ty vás teď nezajímají). Nonce se hledá pro všechna data v bloku – včetně kousku dat z bloku minulého (minulé nonce) – takže bloky jsou propojené. I ten nejnovější blok má něco z úplně prvního bloku. Vzniká řetězec – blockchain. A vy věříte tomu, který je nejdelší. Proč?

Za nejdelším řetězcem stojí nejvíce výpočetní práce. Kdyby vás chtěl někdo oklamat, abyste si mysleli, že v databázi je něco, co tam ve skutečnosti není, musel by vytvořit dočasnou větev blockchainu. Co to obnáší?

Těžaři potvrzují zápisy do blockchainu a hledají nonce. To je náročné – existuje proto mnohem větší pravděpodobnost, že další nonci pro vyslaná data najde někdo jiný než útočník. Co více – pokud by chtěl útočník falešnou historii dat udržovat, musela by být stále nejdelší. Dokud nemá nadpoloviční výkon celé sítě, ten „pravý“ blockchain ho vždy předběhne.

Jenom připomenu – k čemu takový útok je? Takový útok je stejný jako zrada posla v problému byzantských generálů. Útočník navodí zdání, že jedna strana má jistotu o zobrazení stejných dat u strany druhé. První generál si bude myslet, že druhý ví, na kdy naplánoval útok. Útočník ale zařídil, že to neví, což má fatální dopad na úspěšnost celé akce. Nad tím, jak klíčové je si zobrazit stejná data, se ještě zastavím.

2.1.2 Transakce

Elektronická měna je jen jedna z mnoha aplikací takového systému – do databáze lze uložit jakákoliv data. V dalších článcích ale používám pro vysvětlování téměř výhradně elektronickou měnu, protože se na ní nejlépe demonstruje nutnost nezměnitelnosti dat.

3      Přechod od důvěry v lidi k důvěře ve stroje

Je naprosto zřejmé, že posel nedokáže být dostatečně důvěryhodný. Nemáme žádnou záruku jeho chování. Kde všude potřebujeme lidskou důvěru?

3.1   Kde je třeba lidská důvěra

  1. Veškeré registrační služby – banky, internetové účty, předplatné

Jak je to možné? Zde se uplatňuje princip poskytnutého hesla – heslo k těmto službám nemá pouze jeden člověk, ale minimálně dva. Vy a poskytovatel. A vy nemáte vůbec žádnou záruku, co s ním bude poskytovatel dělat neboli má vás v plné kontrole. To je nebezpečné.

  1. Dohled nad stroji

To, čemu se říká revoluce autonomity, by nikdy nenastalo bez vyřešení problému byzantských generálů. Ve chvíli, kdy se stroje dorozumívají přes libovolné prostředí, zasáhne hacker pod jménem (adresou) druhého zařízení a začne tomu prvnímu udělovat vlastní rozkazy. Veřejná databáze zaručuje nezměnitelnost nutnou pro prevenci před takovými scénáři.

Důkaz, že druhá adresa skutečně zastupuje druhý stroj, s nímž se chce ten první dorozumět, zajistí elektronický podpis. Nebudu vás nutit, abyste si četli další články, takže ve zkratce – jak funguje elektronický podpis? Kdo přeskočil podnadpisy na začátku, ať se nyní prosím vrátí na bod 1. 3. 2 Zamezení propagace adresy.

Všechno dobré, jak to ale souvisí s autonomitou? Jestliže blockchain zajistí spolehlivý mediátor, tak už nikdy nebude platit pravidlo, že to, co je od vás dál, je ve větším nebezpečí. Nikdo na dálku nic nehackne. Stroje se mohou spolehnout na dálkovou komunikaci a není třeba člověk, aby je kontroloval. Mohou pracovat nezávisle, resp. autonomně. Proč? Protože existuje jen jediný způsob, jak by je někdo „hacknul“ – musí fyzicky přijít a začít se v nich hrabat.

3.2   Armáda a tyhle technologie

Musím zmínit, že mediátor počítá s tím, že povede přes nepřátelské území. Jako komunikace Sovětského svazu za Karibské krize. Proč? Jednoduše proto, že by bylo příliš nákladné udržovat soukromí komunikačních cest. Myslím vojáky podle kabelů apod. Moc drahé.

Všimněte si, že internet je v podstatě také mediátorem, akorát bez proof of work mechanismu. Zajištění bezpečného přenosu dat jako v případě problému byzantských generálů totiž nesouvisí pouze s armádou, ale se soukromím vůbec.

4      Nekonečná globalizace

Globalizace. Řízení firem na dálku. Propojenější svět. Obrovská nabídka, neskutečná konkurence a vysoká kvalita produktů i služeb. Možnost ovládat cokoliv bez omezení na místo, v němž se aktuálně nacházíte. Zboření limitů vzdálenosti.

Nic z toho by nešlo, dokud by jedna strana viděla něco jiného než strana druhá. A proč střídám budoucí a přítomný čas? No, blockchain už k tomu dopomáhá, ale je stále na začátku.

5      Anonymita

Problém byzantských generálů nemá v případě požadavku na přesnou identifikaci řešení. Nic na světě vám úplně nezaručí, s kým doopravdy komunikujete (ale existují na to samozřejmě triky např. přes znalost informace, na konci článku jsou na to odkazy). Ale to vám v dnešní době nezaručí ani blízký fyzický kontakt, pokud bych měl být filosofičtější.

Navíc anonymita udržuje maximální bezpečnost, protože čím méně toho o vás někdo ví, tím méně jste zranitelní (odkaz na konkrétní příklad a dovysvětlení na konci článku).

6      Scalability problem

Největší problém decentralizovaných systémů. Uzly u sebe drží kopii veřejné databáze. Frekvence zápisu dat naráží na omezení výkonu větší části ověřovacích uzlů. Co když frekvence stoupne nad technický limit uzlů? Pak se síť centralizuje jen na ty nejvýkonnější.

Scalability problem vyjadřuje neschopnost systému být škálovatelný. Zvýšení počtu uzlů, a tedy i celkového výkonu sítě úměrně nezvýší kapacitu, resp. maximální počet zápisů (u kryptoměn tzv. transakcí) za jednotku času.

Vzhledem k tomu, že ještě nebyl oficiálně vyřešen, tak vám tady nebudu dělat přednášku o konceptech a hrát si na nadějný startup před investorskou delegací. Škálovatelnost je stále největším problémem blockchainu a s jeho narůstající velikostí je logicky palčivější a palčivější. Nezoufejte ale – za tři až pět příspěvků vám podrobně vysvětlím tzv. lightning network – nejnadějnějšího adepta na řešení.

7      Závěr

7.1   Co všechno potřebuju vědět?

Abyste pochopili kryptosystémy, potřebujete si tykat s následujícími pojmy, které se do dnešního článku vejít nemohly:

  1. Elektronický podpis
  2. Blockchain
  3. Public ledger (veřejná účetní kniha)
  4. Záruka vlastnictví
  5. Proof of work
  6. Chytré smlouvy

Tento blog je unikátní v tom, že poskytuje všechny tyto informace na jednom místě. Nejde o obsah – ten se od jiných příliš neliší. Jde o souvislosti. I sesbírání částí nevlastních informací může být originální, pokud má řád a smysl.

7.2   Chci vědět víc – kde mám začít?

  • Pokud chcete vědět více o tom, jak fungují veřejné databáze, začněte blockchainovými větvemi:

https://splinter.cz/2019/02/reknete-mi-jak-funguje-bitcoin-4-potvrzovani-transakci-a-tezba-prvni-cast/Řekněte mi, jak funguje bitcoin #4: Potvrzování transakcí a těžba, první část (detailněji rozpracované fungování tvorby blockchainu)

https://splinter.cz/2019/02/reknete-mi-jak-funguje-bitcoin-5-potvrzovani-transakci-a-tezba-druha-cast/Řekněte mi, jak funguje bitcoin #5: Potvrzování transakcí a těžba, druhá část (úvod do větvení a souvislost s kryptoměnami)

https://splinter.cz/2019/02/reknete-mi-jak-funguje-bitcoin-6-potvrzovani-transakci-a-tezba-treti-cast/Řekněte mi, jak funguje bitcoin #6: Potvrzování transakcí a těžba, třetí část (útoky větvením)

  • Pro vyvrácení klasických mýtů pokračujte četbou:

https://splinter.cz/2019/03/bitcoin-specificke-dotazy-bitcoin-je-nebezpecny-zadane-heslo-muze-v-pocitaci-nekdo-zachytit-a-dalsi/Bitcoin – specifické dotazy: „Bitcoin je nebezpečný. Zadané heslo může v počítači někdo zachytit.“ a další (čím méně toho o vás někdo ví, tím lépe – vysvětlení)

https://splinter.cz/2019/05/bitcoin-specificke-dotazy-proc-pouzivat-pro-kazdou-transakci-jinou-adresu/Bitcoin – specifické dotazy: Proč používat pro každou transakci jinou adresu?

https://splinter.cz/2019/04/slovnik-tokenizace-prihlasovacich-udaju/Slovník: Tokenizace přihlašovacích údajů (článek o principu poskytnutého hesla)

  • Až to všechno pochopíte, můžete se věnovat mnohem zajímavějším věcem, jako např.:

https://splinter.cz/2019/04/smlouvy-teorie-vlastnictvi-a-elektronicky-podpis-v-sirsich-souvislostech-3-chytre-smlouvy-a-majetek/Smlouvy, teorie vlastnictví a elektronický podpis v širších souvislostech #3: Chytré smlouvy a majetek (článek detailně vysvětlující chytrý majetek)

https://splinter.cz/2019/04/smlouvy-teorie-vlastnictvi-a-elektronicky-podpis-v-sirsich-souvislostech-4-informacni-dukaz/Smlouvy, teorie vlastnictví a elektronický podpis v širších souvislostech #4: Informační důkaz

https://splinter.cz/2019/04/smlouvy-teorie-vlastnictvi-a-elektronicky-podpis-v-sirsich-souvislostechsmlouvy-teorie-vlastnictvi-a-elektronicky-podpis-v-sirsich-souvislostech-1-kde-je-zakopan-pes/Smlouvy, teorie vlastnictví a elektronický podpis v širších souvislostech #1: Kde je zakopán pes (kryptografie a koncept vlastnictví)

  • Proč mají kryptoměny vůbec hodnotu?

https://splinter.cz/2019/03/reknete-mi-jak-funguje-bitcoin-7-hodnota/Řekněte mi, jak funguje bitcoin #7: Hodnota

  • Článek o autonomních vozech vyjde už brzy. A kdo stále nechápe princip elektronického podpisu, pro něj bude článek hned následující.

Zatím ahoj – nebo vlastně vítejte. Vítejte v neuvěřitelném a nekonečném kryptovesmíru!

Zdroj: https://www.publish0x.com/noticiasbitcoin-io/phishing-racketeering-and-booming-industry-in-the-cryptospace-xmgok
Sdílet příspěvek

Napsat komentář

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..