Blockchain je technologie vzniklá a stále hojně používaná ve světě financí. Spolu s robotikou a umělou inteligencí je však také považován za jeden z pilířů průmyslu 4.0. K tomu, aby se blockchain stal nástrojem pro výrobu, je třeba jej emancipovat od jeho původu jako nástroje k úřadování s penězi. Tento původ jej stále směřuje k administrativním aplikacím. Blockchain je třeba převést do průmyslu až na úroveň factory floor. To považujeme za misi a důvod existence naší společnosti ELA Blockchain Services. Jedním z řešení, která u nás vznikají na základě toho, že se na blockchain snažíme dívat z jiného úhlu pohledu, je průmyslový řídicí systém.
průmyslový blockchain řídicí systémy odolné proti selhání Hyperledger Fabric řídicí systémy kyberneticky bezpečné
Proč blockchain?
Hlavní důvod vývoje blockchainového řídicího systému obsahuje již název tohoto článku: odolnost proti selhání a kybernetická bezpečnost. Existuje nespočet řešení systémů odolných proti selhání pracujících na různých principech a nespočet způsobů ochrany proti kybernetickým útokům využívajících jiné principy. Vždy však jde o oddělené světy: svět principů spolehlivosti a svět principů kybernetické bezpečnosti. Žádná známá technologie však neumí tyto světy sloučit v jednom principu, pouze blockchain. A jak ještě uvidíme, přidává výhody i v praktické realizaci.
Blockchain jako řídicí systém
Podívejme se na blockchain z jiného úhlu pohledu, než je obvyklé, a pokusme se zjistit, co může řídicí systém využít z finančního nástroje, za jaký se blockchain považuje. Naše úvahy jsou zobrazeny na Obr. 1. S trochou představivosti objevíte technické řešení pro využití této analogie. Tak vznikl Obr. 2, který ukazuje příklad řízení technologie pomocí redundantního systému vybudovaného na blockchainu. Systém obsahuje tři redundantní sensory sledující stejnou veličinu, tři redundantní akční členy působící na řízený systém.
K tomu, aby takový systém mohl fungovat, je třeba node vybavit vstupy a výstupy fyzikálních veličin. To lze udělat mnoha způsoby. Obr. 3 vlevo ukazuje na vrstvovém modelu softwaru, jak blockchainový node ve finančním světě typicky komunikuje se svým okolím. Služby blockchainu jsou uživateli zprostředkovány uživatelskou (obvykle webovou) aplikací komunikující s API. Mohou zde být ještě další vrstvy, ale hlavní rozhraní vstupu dat do blockchainu je většinou určeno pro člověka.
Vrstvu služeb lze však postavit i tak, aby pomocí API mohly služby komunikovat s jiným hardwarem a jeho softwarem, např. jednotkou RTU (Remote Terminal Unit) s převodníky fyzikálních veličin připojených do řízené technologie. Není ani nutné trvat na rozhraní API, vstupy a výstupy mohou pracovat na jakémkoli hardwaru (např. I/O PC karty) a služby s nimi komunikují pomocí příslušných knihoven nebo SDK (viz Obr. 3 vpravo).
Abychom mohli postoupit dál k funkci blockchainového řídicího systému, jehož vlastností má být odolnost proti selhání, je třeba se nejdříve podívat, co tato vlastnost ve světě průmyslových řídicích systémů znamená.
Systémy odolné proti selhání
Tyto systémy lze rozdělit podle různých hledisek, velmi často podle využití v oboru. Jiné rozdělení a odlišné názvosloví je používáno pro oblast výpočetních systémů, samořízených vozidel, letectví atd. Obr. 4 ukazuje dělení, které se často využívá pro řídicí systémy průmyslových technologií.
Obr. 1: Analogie blockchainu s redundantním řídicím systémem
Na systémové úrovni se zde rozeznávají dvě základní skupiny:
- Fail-safe systémy, které v případě poruchy přejdou do provozního režimu s omezenou funkčností. Cílem je zde zabránit škodám, ke kterým by mohlo dojít v důsledku chybného řízení technologie, nikoli zabránit zastavení řízení systému (např. přerušení výroby). Používají se tam, kde lze systém bez problémů nouzově odstavit.
- Fail-operational systémy mají i v poruše plnou funkčnost. Jejich cílem je pokračovat v řízení systému i v situaci, kdy jsou některé části v poruše nebo mimo provoz. Typické použití nacházejí v technologiích, kde by došlo při nouzovém odstavení k velkým škodám na technologii nebo surovinách (chemické reaktory).
Obr. 2: Blockchain jako průmyslový řídicí systém
Obr. 3: Vrstvové schéma přidání I/O jednotek k blockchainovému nodu
Realizační úroveň může obsahovat různé prostředky, jakými se systémová úroveň uskutečňuje. Nejobecnějším řešením je komplexní systém zahrnující i metody (předimenzování) nebo procesy a postupy (údržba, testování…). Zde se soustředíme na realizaci pomocí řídicích systémů. Většina řídicích systémů v průmyslu je postavena jako varianta některé ze tří následujících realizací:
- Fail-safe modul je přídavný modul připojený ke standardnímu řídicímu systému, který provádí nepřetržitou diagnostiku vybraných částí systému a v případě poruchy systém převede do definovaného bezpečnostního stavu. Nejjednodušším příkladem je bezpečnostní relé.
- Fail-safe řídicí systém během své činnosti monitoruje sám sebe a v případě poruchy se opět přestaví do definovaného bezpečného stavu. Často je zde využíván princip redundance.
- Fault-tolerant řídicí systém je v průmyslu obvyklou realizací Fail-operational systému a většinou se staví na principu redundance.
Pokračujme dál v cestě k realizaci řídicího systému blockchainem. Na Obr. 1 se hovoří o tom, že přechod automatu ze stavu do stavu je možné realizovat blockchainovou transakcí. Nejprve se tedy podíváme, jak funguje blockchainová transakce.
Obr. 4: Hierarchie systémů odolných proti selhání
Blockchainová transakce
Je to proces, který začíná tím, že uživatelé navrhnou uložit do blockchainu nějaké informace a na konci jsou na všech nodech blockchainové sítě nové kopie blockchainového souboru s připojeným novým blokem, ve kterém jsou tyto informace uloženy. Co se děje mezi tím, je u každého blockchainu (Bitcoin, Ethereum…) trochu jiné, ale vždy to probíhá podobným způsobem:
- volba proposera
- návrh nového bloku
- rozeslání návrhu bloku validátorům
- ověření správnosti a platnosti nového bloku validátory
- zaslání výsledku validace proposerovi
- rozhodnutí, zda je blok v pořádku a je možné jej zapsat
- rozeslání nového bloku všem nodům
- ověření, že mají všechny nody totožný nový blok
- připojení nového bloku ke stávajícímu blockchainovému souboru na všech nodech
Důležité je mít na paměti, že provedení blockchainové transakce je jediným okamžikem, kdy je tato distribuovaná technologie centrálně řízena, neboť zajistit uložení nové instance blockchainového souboru na všech nodech tak, aby byla skutečně na všech nodech totožná, není jinak možné. Je to zároveň okamžik největší zranitelnosti blockchainu. Proto se objev prvního bezpečného a spolehlivého postupu legendárním (a nejspíš bájným) Satoshim Nakamotou považuje za počátek éry blockchainu a proto je tento postup využívající i jiné výchozí principy tak komplikovaný.
Zjednodušený průběh typické transakce ukazuje signálový graf na Obr. 5. Návrh bloku provádí node 1. U kryptoměnových blockchainů se mu říká proposer a o tuto funkci nody soutěží. Proposer sestaví blok a rozešle jej ke kontrole několika dalším nodům k ověření. U Etherea se jim říká validátoři. Ověření transakce u kryptoměnových blockchainů spočívá hlavně v kontrolách podpisů a oprávnění. Samotný obsah bloku validátory moc nezajímá, ani nekontrolují, zda jsou správně vypočteny hodnoty ve smart kontraktech.
Výsledky ověřování jsou odeslány zpět proposerovi a pokud se jen jeden odlišuje, proposer transakci zamítne. Uzná-li ji jako validní, je blok rozeslán celé síti a všechny nody si ověřují, zda jej dostaly v pořádku a mohou jej zapsat. K tomu slouží nástroj zvaný algoritmus shody. Připojením identických bloků k blockchainovým souborům na všech nodech transakce končí.
Obr. 5: Průběh blockchainové transakce
Blockchainová transakce jako základ přechodu mezi stavy automatu
Z toho, jak probíhá blockchainová transakce, je jasné, proč se kryptoměnové blockchainy ke stavbě redundantního automatu nehodí. Systém nelze vytvořit na veřejném blockchainu např. Bitcoinu nebo Etherea. Důvodem jsou specifické vlastnosti těchto blockchainů související s orientací na využití v kryptoměnách. Týkají se způsobu návrhu transakce a její validace nebo způsobu zpracování smart kontraktů. Kryptoměnové blockchainy provádějí ověření návrhu transakce jen na základě dat, která dostanou od proposera. Není žádoucí, aby použily jiná. Tím by byl porušen deterministický charakter transakce.
V redundantním automatu na Obr. 2 však potřebujeme porovnat data vytvořená několika „uživateli“ – redundantními sensory. Blockchain, který k tomu potřebujeme, musí disponovat možností zahrnovat do kontroly navrhované transakce i jiná data než jen ta, která dostal od proposera.
To kryptoměnové blockchainy neumějí, a i kdyby měl ethernetový validátor k dispozici data ze vstupů, viz Obr. 2, sáhnout si pro ně při validaci nesmí.
Pro vytvoření řídicího systému se hodí instance privátních nebo konsorciálních blockchainů, hlavně těch, které umožňují flexibilní využití výpočetního aparátu smart kontraktů a parametrizaci procesu transakce. Tyto vlastnosti má blockchainová technologie Hyperledger Fabric se systémem politik a výkonným aparátem chaincode. Na této technologii blockchainový řídicí systém také stavíme. Hyperledger Fabric umí do endorsmentu (obdoba validace u Etherea) zahrnout i výpočty prováděné v chaincode (obdoba smart kontraktů v kryptoměnových blockchainech). A chaincode si zase umí sáhnout pro externí data.
Na Obr. 6 je (velmi zjednodušený) signálový diagram provedení transakce v blockchainu Hyperledger Fabric. Zároveň jde o přechod mezi dvěma stavy blockchainového automatu (jen připomeňme: stav automatu tvoří hodnoty vstupů, výstupů a vnitřních proměnných). Průběh je velmi podobný Obr. 5, principy některých fází transakce jsou však odlišné.
Transakce i přechod automatu z původního stavu do nového začíná opět na nodu 1. Proposer se tady jmenuje client a o právo návrhu transakce nesoutěží. Client sestaví návrh bloku, který obsahuje obvyklý výpočet nového stavu automatu provedený na základě hodnot vstupu z technologie a s využitím současného stavu automatu uloženého v blockchainu. Návrh rozešle k validaci, které se zde říká endorsment. Endorsment provádějí nody 2 a 3. A tady je první velká odlišnost. Endorsing nody neprovedou jen formální a bezpečnostní kontroly navrženého bloku. Samy si spočítají svůj vlastní nový stav automatu. A co je důležité, nevyužijí k tomu informaci o hodnotě vstupu, kterou jim dodá client, ale hodnoty svých vlastních vstupů připojených k technologii. Tímto způsobem je v blockchainovém automatu realizována skutečná hardwarová redundance.
Vypočtené návrhy bloků odešlou zpět clientovi. A tady je při schválení návrhu možná další podstatná odlišnost. Samozřejmě je možné, aby stejně jako v kryptoměnových blockchainech client zamítl návrh, pokud i jediný endorsing node dodá odlišný výsledek od ostatních. Při klasickém zapojení redundantních sensorů a vhodném zpracování signálu v chaincode při endorsmentu lze i takto realizovat fail-safe i fail-operational systém. Ale v technologii Hyperledger Fabric je možné i modifikovat rozhodovací funkci vyhodnocení endorsmentu, např. na dva ze tří. Tím vytvoříme z endorsmentu voter 3-modulárního redundantního systému. A to je cesta k novému typu fault-tolerant systému. Technicky je to samozřejmě složitější. Vstupy je třeba synchronizovat a porušujeme deterministický charakter procesu transakce. V blockchainu použitém pro zajištění finančních transakcí je něco takového samozřejmě nepřípustné, ale pro funkci v řídicím systému stačí, aby byla dodržena podmínka, že rozhodovací funkce musí být regulární. Pak se tento systém chová jako konečný automat.
Obr. 6: Přechod mezi stavy v blockchainovém automatu
Dále už je proces standardní. Sestavení bloku a realizaci algoritmu shody zde vykonává skupina nodů zvaných orderery. A když je na všech nodech nový blok připojen k blockchainového souboru, vezmou z něj nody s připojenými výstupy nový stav automatu, nové hodnoty výstupů a do výstupů jej zapíší. Tím je transakce skončena a automat přešel do dalšího stavu.
Využití blockhainového řídicího systému
Blockchainový řídicí systém má svá specifika. Jako distribuovaný redundantní konečný automat s poměrně složitým procesem přechodu mezi stavy vykazuje zpoždění (latenci) změny stavu za vstupním signálem. Nebude tudíž vhodný k rychlým aplikacím, např. řízení krokového motoru. Velmi dobře se však bude hodit tam, kde je řízená technologie distribuována, neboť blockchain je také distribuovaná technologie. Nalezne tedy využití v oblastech řízení infrastruktury – v energetice nebo dopravě.
Zajímavou alternativou je blockchainový fail-safe modul. Při poruše standardního řídicího systému nebo při jeho kybernetickém napadení může fail-safe a kyberneticky bezpečný systém převzít řízení a zaparkovat řízenou infrastrukturu do bezpečného stavu.
Aktuální jsou aplikace v oblasti bezpečnosti smart systémů nebo v oblasti komunikací. I velké a částečně distribuované řídicí smart systémy mívají kritické místo: smart gateway, kterým systém komunikuje s okolím a realizuje centrální část řídicího algoritmu. Po kybernetickém útoku na gateway může chaos v systému způsobit mnoho škod. Zde je využití blockchainového řídicího systému na místě a opět se dá využít sítě počítačů, kterými smart systém obvykle disponuje.
Také řízení datových sítí obsahuje centrální řídicí jednotky. Typickým příkladem je moderní koncept softwarem definované sítě. Napadení jeho centrální administrativní jednotky může skončit naprostým rozpadem sítě i datové komunikace. Blockchainová řídicí jednotka v této funkci zvýší kybernetickou bezpečnost a spolehlivost.
Kybernetická bezpečnost blockchainového řídicího systému
Blockchain je považován za vysoce bezpečnou technologii. Samotný blockchainový soubor je vzhledem k distribuci na mnoho nodů kybernetickým útokem nezfalšovatelný. Pozornost hackerů se proto obrací k aplikacím.
Útoky na stávající blockchainy lze rozdělit na dvě skupiny. Standardní útoky obvykle ohrožující systémy využívající internetovou síť. Sem patří DDoS nebo Spoofing. Blockchainová síť řídicího systému však nemá veřejné webové aplikace, klasický DDoS útok se nedá provést tak snadno. Nejnadějnější je tedy útok na neošetřené porty a služby za nimi. Komunikační síťové protokoly blockchainu jsou vysoce odolné, tady velké nebezpečí nehrozí. Problémem může být špatně navržená aplikace, ale i samotný server, na kterém je blockchainový node instalován. Standardně je třeba věnovat těmto hrozbám pozornost, nezanedbávat bezpečností upgrady a aplikovat penetrační testy.
S rozvojem blockchainu se objevují i útoky vyvinuté pro napadení blockchainových systémů. Hackeři mají propracované útoky na veřejné, a hlavně kryptoměnové blockchainy. K typickým útokům patří Sybil Attack, snaha rozvětvit a ovládnout blockchain (forking) nebo značně přeceňovaný 51% útok. Tyto hrozby jsou v permissioned blockckchainu využívajícím Hyperledger Fabric zanedbatelné. Největším nebezpečím jsou chyby v konfiguraci blockchainu, které by mohly otevřít přístup k vulnerabilitě. Ale taková nebezpečí podstupuje každý IT systém a je třeba je kontinuálně kontrolovat a odstraňovat.
Závěr
Princip blockchainového automatu budeme rozvíjet v projektu FW10010237 „Fail-safe a kyberneticky bezpečný distribuovaný řídicí systém založený na technologii blockchainu“ podpořeném agenturou TAČR, na kterém spolupracujeme s Univerzitou Tomáše Bati ve Zlíně. Výsledkem projektu bude i funkční vzorek takového systému. Pokud někoho z čtenářů prezentovaná technologie zaujala a uvažuje o možnosti jejího využití, jsme spolupráci otevřeni a rádi mu přístup k nodům sítě blockchainového automatu propůjčíme k vybudování pilotní aplikace a jejímu testování.
Otto Havle
Věra Šmídová
Jakub Kozák
Jakub Vodseďálek