На сёння толькі лянівы не напісаў пра тэхналогію блокчэйн, крыптавалюты і наколькі гэта крута. Але ў гэтым артыкуле не будзе ўсхвалення дадзенай тэхналогіі, гаворка пойдзе як раз пра яе недахопы і спосабы іх ухілення.
Падчас працы над адным з праектаў у кампаніі Альцірыкс сістэмс, з'явілася задача абароненага, цэнзурастойкага пацверджання дадзеных з вонкавай для блокчейн крыніцы. Неабходна было пацвярджаць змены ў запісах трэцяй сістэмы і на аснове гэтых змен выконваць тую ці іншую галінку ў логіцы смарт-кантракту. Задача на першы погляд дастаткова трывіяльная, але, калі ад выніку яе выканання залежыць фінансавы стан аднаго з бакоў-удзельніц працэсу, з'яўляюцца дадатковыя патрабаванні. Найперш гэта ўсебаковы давер да такога механізму валідацыі. Але пра ўсё па парадку.
Праблема заключаецца ў тым, што блокчейн сам па сабе з'яўляецца аўтаномным, замкнёным аб'ектам, таму смарт-кантракты ўнутры блокчейна нічога не ведаюць аб навакольным свеце. У той жа час умовы смарт-кантрактаў часта звязаны з інфармацыяй аб рэальных рэчах (flight delay, курс валют і г.д.). Для правільнай працы смарт-кантрактаў, інфармацыя, атрыманая звонку блокчейна, павінна быць надзейнай і праверанай. Дадзеная праблема вырашаецца з дапамогай выкарыстання аракулаў, такіх як Town Crier і DECO. Дадзеныя аракулы дазваляюць смарт-кантракту ў сетцы блокчейн давяраць інфармацыі з праверанага вэб-сервера, можна сказаць, што гэта пастаўшчыкі надзейнай інфармацыі.
Аракулы
Уявіце, што смарт-кантракт выконвае пераклад 0.001 btc на ваш bitcoin-кашалёк у выпадку перамогі вашага любімага футбольнага клуба ў кубку Расіі. У выпадку сапраўднай перамогі, смарт-кантракту неабходна перадаць інфармацыю аб тым, які клуб перамог, і тут узнікае шэраг праблем: дзе ўзяць гэтую інфармацыю, як яе бяспечна перадаць у смарт-кантракт і як пераканацца, што інфармацыя, якая паступіла ў смарт-кантракт на на самой справе супадае з рэчаіснасцю?
У пытанні з крыніцай інфармацыі могуць быць 2 сцэнарыі: падключэнне смарт-кантракта да даверанага вэб-сайта, на якім цэнтралізавана захоўваецца інфармацыя аб выніках матчаў і другі варыянт - падлучыць адразу некалькі сайтаў і далей рабіць выбар інфармацыі па большасці крыніц, якія прадстаўляюць аднолькавыя дадзеныя. Для таго, каб пераканацца ў правільнасці інфармацыі, выкарыстоўваюцца аракулы, напрыклад Oraclize, які выкарыстоўвае TLSNotary (Мадыфікацыя TLS для доказу сапраўднасці дадзеных). Але пра Oraclize інфармацыі ў гугл дастаткова, і на Хабры ёсць некалькі артыкулаў, я ж сёння раскажу пра аракулы, якія выкарыстоўваюць крыху іншы падыход да перадачы інфармацыі: Town Crier і DECO. У артыкуле прыведзена апісанне прынцыпаў працы абодвух аракулаў, а таксама дэталёвае параўнанне.
Гарадскі плач
Town Crier (TC) быў прадстаўлены IC3 (The Initiative for CryptoCurrencies and Contracts) у 2016 годзе на CCS'16. Асноўная ідэя TC: перадаць інфармацыю з вэб сайта смарт-кантракту і пераканацца, што інфармацыя, дастаўленая TC такая ж, як на вэб сайце. TC выкарыстоўвае TEE (Trusted Execution Environment) для сапраўднасці уласнасці дадзеных. У арыгінальным варыянце TC апісана праца з Intel SGX.
Town Crier складаецца з часткі ўнутры блокчейна і часткі ўнутры самой АС – TC Server.
TC Contract знаходзіцца ў блокчейне і дзейнічае як front end для TC. Ён прымае запыты ад CU (смарт-кантракт карыстальніка) і вяртае адказ ад TC Server. Усярэдзіне TC Server знаходзіцца Relay, які ўсталёўвае сувязь анклава з сеткай інтэрнэт (двунакіраваны трафік) і звязвае анклаў з блокчейном. Enclave утрымоўвае progencl, які ўяўляе сабой код, які выконвае запыты з блокчейна і што вяртае паведамленні ў блокчейн з лічбавым подпісам, progencl утрымоўвае частку кода смарт-кантракту і па ісце выконвае некаторыя з яго функцый.
Анклаў Intel SGX можна разглядаць, як агульную бібліятэку з API, якая працуе з дапамогай ecall. Ecall перадае кіраванне анклаву. Анклаў выконвае свой код, пакуль не завершыцца, альбо пакуль не адбудзецца выключэнне. Для выкліку функцый, вызначаных па-за анклавам, выкарыстоўваюцца ocall. Ocall выконваецца па-за анклавам і апрацоўваецца ім як ненадзейны выклік. Пасля выканання ocall кіраванне вяртаецца анклаву.
У частцы Enclave адбываецца настройка secure channel з вэб-серверам, анклаў сам выконвае TLS handshake з мэтавым серверам і выконвае ўсе крыптаграфічныя аперацыі ўнутры сябе. Бібліятэка TLS (mbedTLS) і HTTP-код у паменшаным варыянце экспартаваны ў сераду SGX. Таксама, Enclave утрымоўвае root CA certificates (калекцыя сертыфікатаў), каб правяраць сертыфікаты выдаленых сервераў. Request Handler прымае запыт datagram у фармаце, які прадстаўляецца Ethereum, расшыфроўвае яго і аналізуе. Затым генеруе транзакцыю Ethereum, утрымоўвальную requested datagram, падпісвае яе з дапамогай skTC і перадае ў Relay.
Частка Relay уключае ў сябе Client Interface, TCP, Blockchain Interface. Client Interface патрэбен для атэстацыі кода анклава і сувязі з кліентам. Кліент адпраўляе запыт на атэстацыю з дапамогай ecall і атрымлівае timestamp, падпісаны skTC разам з att (сігнатура атэстацыі), далей att пацвярджаецца з дапамогай Intel Attestation Service (IAS), а timestamp правяраецца даверанай time service. Blockchain Interface правярае якія паступаюць запыты і размяшчае транзакцыі ў блокчейн для дастаўкі datagrams. Geth - афіцыйны кліент Ethereum і дазваляе Relay ўзаемадзейнічаць з блокчейном праз RPC calls.
Працуючы з TEE, TC дазваляе запусціць адразу некалькі анклаваў раўналежна, тым самым павялічваючы хуткасць апрацоўкі інфармацыі ў 3 разу. Калі пры адным які працуе анклаве хуткасць была 15 tx/sec, то пры 20 раўналежна запушчаных анклавах хуткасць узрастае да 65 tx/sec, для параўнання, максімальная хуткасць працы ў блокчейне Bitcoin — 26 tx/sec.
Дэко
DECO (Decentralized Oracles for TLS) быў прадстаўлены на CCS'20, працуе з сайтамі, якія падтрымліваюць TLS злучэнне. Забяспечвае канфідэнцыяльнасць і цэласнасць даных.
DECO c TLS выкарыстоўваюць сіметрычнае шыфраванне, тым самым у кліента і вэб-сервера ёсць ключы шыфравання, і кліент, калі захоча, можа падрабіць дадзеныя сеансу TLS. Для рашэння дадзенай праблемы DECO выкарыстоўвае трохбаковы пратакол поціску рукі паміж prover (смарт-кантракт), verifier (аракул) і web-server (крыніца дадзеных).
Прынцып працы DECO складаецца ў тым, каб правяраючы (prover) атрымаў частку дадзеных D і пацвердзіў верыфікатару (verifier), што D паступіў ад TLS-сервера S. Яшчэ адна праблема складаецца ў тым, што TLS не падпісвае дадзеныя і TLS-кліенту складана давесці , што дадзеныя атрыманы менавіта з таго сервера (provenance difficulty).
У пратаколе DECO выкарыстоўваюцца ключы шыфравання KEnc і KMac. Кліент адпраўляе запыт Q на вэб-сервер, адказ ад сервера R прыходзіць у зашыфраваным выглядзе, але кліент і сервер валодаюць аднымі і тымі ж KMac, і кліент можа падрабіць TLS паведамленне. Рашэнне ад DECO складаецца ў тым, каб схаваць KMac ад кліента (prover), пакуль ён не адкажа на запыт. Цяпер KMac падзелены паміж prover і verifier - KpMac і KvMac. Сервер атрымлівае KMac для шыфравання адказу з дапамогай аперацыі над часткамі ключа KpMac ⊕ KvMac = KMac.
Наладзіўшы трохбаковы поціск рукі, абмен дадзенымі паміж кліентам і серверам будзе праведзены з гарантыяй бяспекі.
Гаворачы аб сістэме дэцэнтралізаваных аракулаў, нельга не згадаць Chainlink, які імкнецца стварыць дэцэнтралізаваную сетку вузлоў аракулаў, сумяшчальную з Ethereum, Bitcoin і Hyperledger, з улікам модульнасці: кожная частка сістэмы можа быць абноўлена. Пры гэтым для забеспячэння бяспекі, Chainlink прапануе кожнаму аракулу, які ўдзельнічае ў заданні, выдаваць камбінацыю ключоў (адкрыты і зачынены). Закрыты ключ выкарыстоўваецца для генерацыі частковага подпісу, які змяшчае іх рашэнне на запыт дадзеных. Для атрымання адказу неабходна аб'яднанне ўсіх частковых подпісаў аракулаў сеткі.
Chainlink плануе правесці першапачатковы PoC DECO з упорам на дэцэнтралізаваныя фінансавыя прыкладанні, такія як Mixicles. На момант напісання артыкула выйшла навіна на Forbes, аб тым, што Chainlink набыла DECO у Cornell University.
Напады на аракулы
З пункту гледжання інфармацыйнай бяспекі, былі разгледжаны наступныя атакі на Town Crier:
-
Rogue smart-contact code injection на TEE nodes.
Сутнасць атакі: перадача ў TEE загадзя няправільнага кода смарт-кантракта, такім чынам, зламыснік, які атрымаў доступ да вузла, будзе мець магчымасць выканаць уласны (ашуканскі) смарт-кантракт на дэшыфраваны дадзеныя. Тым не менш якія вяртаюцца значэнні будуць зашыфраваныя з дапамогай private key, і адзіны варыянт доступу да такіх дадзеных складаецца ў уцечцы зашыфраванага тэксту пры звароце/выснове.
Абарона ад дадзенага нападу складаецца ў праверцы анклавам правільнасці кода, змешчанага па бягучым адрасе. Гэта можа быць дасягнута з дапамогай схемы адрасавання, дзе адрас кантракта вызначаецца шляхам хэшавання кода кантракта. -
Contract state ciphertext змены ўліку.
Сутнасць атакі: Уладальнікі вузлоў, на якіх выконваюцца смарт-кантракты, маюць доступ да contract state у зашыфраванай форме па-за анклавам. Зламыснік, займеўшы кіраванне вузлом, можа параўноўваць contact state да і пасля выканання транзакцыі і можа вызначыць, якія аргументы былі ўнесены і які менавіта метад смарт-кантракта выкарыстаны, бо сам код смарт-кантракта і яго тэхнічныя спецыфікацыі агульнадаступныя.
Абарона ў забеспячэнні надзейнасці самага вузла. -
Side-channel attacks.
Адмысловы тып нападаў, выкарыстоўвалы маніторынг доступу да памяці і кэшу анклава ў розных сцэнарах. Прыклад такой атакі – Prime and Probe.
Парадак правядзення нападу:- t0: Зламыснік запаўняе ўвесь кэш дадзеных працэсу ахвяры.
- t1: Ахвяра выконвае код са зваротамі да памяці, якія залежаць ад канфідэнцыйных дадзеных ахвяры (крыптаграфічныя ключы). Выбар cache line адбываецца па значэнні keybit. У прыкладзе на малюнку, keybit = 0 і прачытаны адрас X у cache line 2. Дадзеныя, якія захоўваюцца ў X, загружаюцца ў кэш, выцясняючы дадзеныя, якія былі там да гэтага.
- t2: Зламыснік правярае, якія з яго радкоў кэша былі выцесненыя - радкі, якія выкарыстоўваюцца ахвярай. Робіцца гэта з дапамогай вымярэння часу доступу. Паўтараючы гэтую аперацыю для кожнага з keybit, зламыснік атрымлівае ўвесь ключ.
Абарона ад нападу: У Intel SGX ёсць абарона ад side-channel attacks, якая забараняе маніторынг падзей, злучаных з кэшам, але напад Prime and Probe усё роўна мінуе, бо зламыснік назірае за падзеямі кэша свайго працэсу і падзяляе кэш з ахвярай.
Такім чынам, на дадзены момант надзейнай абароны ад гэтага нападу няма.
Вядомыя таксама напады тыпу Spectre і Foreshadow (L1TF), падобныя на Prime and Probe. Яны дазваляюць вырабляць чытанне дадзеных з кэш-памяці праз іншы канал. Прадугледжана абарона ад уразлівасці Spectre-v2, якая працуе супраць двух дадзеных нападаў.
У адносінах да DECO, трохбаковы поціск рукі дае гарантыю бяспекі:
- Prover Integrity: узламаны prover не можа падрабіць інфармацыю аб паходжанні server і не можа прымусіць прымаць server недапушчальныя запыты ці адказваць няправільна на сапраўдныя запыты. Гэта здзяйсняльна праз шаблоны запытаў паміж server і prover.
- Verifier Integrity: узламаны verifier не можа прымусіць prover атрымліваць няправільныя адказы.
- Канфідэнцыяльнасць: Узламаны verifier вывучае толькі агульнадаступную інфармацыю (запыт, імя сервера).
У DECO магчымыя толькі ўразлівасці, злучаныя з ін'екцыяй трафіку. Спачатку, пры трохбаковым поціску рукі verifier можа ўсталяваць ідэнтычнасць сервера з дапамогай fresh nonce. Аднак, пасля поціску рукі verifier павінен спадзявацца на індыкатары сеткавага ўзроўня (IP-адрасы). Такім чынам, сувязь паміж verifier і server павінна быць абаронена ад ін'екцыі трафіку. Гэта дасягаецца з дапамогай выкарыстання Proxy.
Параўнанне аракулаў
Town Crier заснаваны на працы з анклавам у сервернай частцы, DECO жа дазваляе вырабляць праверку сапраўднасці паходжання дадзеных з дапамогай трохбаковага поціску рукі і шыфраванні дадзеных крыптаграфічнымі ключамі. Параўнанне дадзеных аракулаў праводзілася па наступных крытэрыях: хуткадзейнасць, бяспека, кошт і практычнасць.
Гарадскі плач
Дэко
хуткадзейнасць
Хутчэй (0.6s to finish)
Павольней (10.50s to finish the protocol)
бяспеку
Менш бяспечны
Больш бяспечны
кошт
даражэй
танней
практычнасць
Патрабуе спецыяльны hardware
Працуе з любым серверам, які падтрымлівае TLS
хуткадзейнасць: Для працы з DECO патрабуецца настройка трохбаковага поціску рукі, пры наладзе праз LAN гэта займае 0.37 секунд, для ўзаемадзеяння пасля ўстанаўлення сувязі эфектыўны 2PC-HMAC (0,13 с на запіс). Прадукцыйнасць DECO залежыць ад даступных набораў шыфраў TLS, памеру асабістых дадзеных і складанасці доказаў для канкрэтнага дадатку. На прыкладзе дадатку бінарнага апцыёна ад IC3: завяршэнне пратакола праз LAN займае каля 10,50 з. Для параўнання, Town Crier патрабуецца для выканання аналагічнага прыкладання прыкладна 0,6 секунды, гэта значыць прыкладна ў 20 разоў хутчэй, чым DECO. Пры роўных умовах, TC будзе хутчэй.
бяспеку: Напады на анклаў Intel SGX (side-channel attacks) працуюць і могуць нанесці рэальную шкоду ўдзельнікам смарт-кантракта. Адносна DECO магчымыя атакі, звязаныя з ін'екцыяй трафіку, але выкарыстанне proxy зводзіць такія атакі на нішто. Таму DECO больш бяспечны.
Кошт: Кошт абсталявання, які падтрымлівае працу з Intel SGX вышэй кошту налады пратаколу ў DECO. Таму TC даражэй.
практычнасць: Для працы з Town Crier абавязкова спецыяльнае абсталяванне, якое падтрымлівае TEE. Напрыклад, Intel SGX падтрымліваецца на працэсарах сямейства Intel Core 6-га пакалення і навей. DECO ж дазваляе працаваць з любым абсталяваннем, хоць ёсць настройка DECO з выкарыстаннем TEE. Па працэсе налады трохбаковы поціск рукі ў DECO можа заняць некаторы час, але гэта не ідзе ні ў якое параўнанне з абмежаваннем у hardware для TC, таму DECO больш практычны.
Заключэнне
Разгледзеўшы два аракула ў асобнасці і параўнаўшы іх па чатырох крытэрыях, відаць, што Town Crier саступае DECO па трох пунктах з чатырох. DECO больш надзейны з пункту гледжання інфармацыйнай бяспекі, танней і больш практычны, хаця настройка трохбаковага пратакола можа заняць некаторы час і мае свае мінусы, напрыклад, дадатковыя аперацыі з ключамі шыфравання. TC працуе хутчэй DECO, але ўразлівасць, звязаная з side-channel attack робіць яго схільным рызыцы страты прыватнасці. Трэба ўлічваць, што DECO быў прадстаўлены ў студзені 2020 года, і яшчэ не прайшло дастаткова часу, каб меркаваць яго бяспечным. Town Crier ужо 4 гады падвяргаецца нападам і мінуў праз мноства праверак, так што яго ўжыванне ў шматлікіх праектах апраўдана.
Крыніца: habr.com