Town Crier vs DECO: які аракул выкарыстоўваць у блокчейне?

На сёння толькі лянівы не напісаў пра тэхналогію блокчэйн, крыптавалюты і наколькі гэта крута. Але ў гэтым артыкуле не будзе ўсхвалення дадзенай тэхналогіі, гаворка пойдзе як раз пра яе недахопы і спосабы іх ухілення.

Town Crier vs DECO: які аракул выкарыстоўваць у блокчейне?

Падчас працы над адным з праектаў у кампаніі Альцірыкс сістэмс, з'явілася задача абароненага, цэнзурастойкага пацверджання дадзеных з вонкавай для блокчейн крыніцы. Неабходна было пацвярджаць змены ў запісах трэцяй сістэмы і на аснове гэтых змен выконваць тую ці іншую галінку ў логіцы смарт-кантракту. Задача на першы погляд дастаткова трывіяльная, але, калі ад выніку яе выканання залежыць фінансавы стан аднаго з бакоў-удзельніц працэсу, з'яўляюцца дадатковыя патрабаванні. Найперш гэта ўсебаковы давер да такога механізму валідацыі. Але пра ўсё па парадку.

Праблема заключаецца ў тым, што блокчейн сам па сабе з'яўляецца аўтаномным, замкнёным аб'ектам, таму смарт-кантракты ўнутры блокчейна нічога не ведаюць аб навакольным свеце. У той жа час умовы смарт-кантрактаў часта звязаны з інфармацыяй аб рэальных рэчах (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.
Town Crier vs DECO: які аракул выкарыстоўваць у блокчейне?
TC Contract знаходзіцца ў блокчейне і дзейнічае як front end для TC. Ён прымае запыты ад CU (смарт-кантракт карыстальніка) і вяртае адказ ад TC Server. Усярэдзіне TC Server знаходзіцца Relay, які ўсталёўвае сувязь анклава з сеткай інтэрнэт (двунакіраваны трафік) і звязвае анклаў з блокчейном. Enclave утрымоўвае progencl, які ўяўляе сабой код, які выконвае запыты з блокчейна і што вяртае паведамленні ў блокчейн з лічбавым подпісам, progencl утрымоўвае частку кода смарт-кантракту і па ісце выконвае некаторыя з яго функцый.

Анклаў Intel SGX можна разглядаць, як агульную бібліятэку з API, якая працуе з дапамогай ecall. Ecall перадае кіраванне анклаву. Анклаў выконвае свой код, пакуль не завершыцца, альбо пакуль не адбудзецца выключэнне. Для выкліку функцый, вызначаных па-за анклавам, выкарыстоўваюцца ocall. Ocall выконваецца па-за анклавам і апрацоўваецца ім як ненадзейны выклік. Пасля выканання ocall кіраванне вяртаецца анклаву.
Town Crier vs DECO: які аракул выкарыстоўваць у блокчейне?
У частцы 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 (крыніца дадзеных).

Town Crier vs DECO: які аракул выкарыстоўваць у блокчейне?

Прынцып працы 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.

Наладзіўшы трохбаковы поціск рукі, абмен дадзенымі паміж кліентам і серверам будзе праведзены з гарантыяй бяспекі.
Town Crier vs DECO: які аракул выкарыстоўваць у блокчейне?
Гаворачы аб сістэме дэцэнтралізаваных аракулаў, нельга не згадаць Chainlink, які імкнецца стварыць дэцэнтралізаваную сетку вузлоў аракулаў, сумяшчальную з Ethereum, Bitcoin і Hyperledger, з улікам модульнасці: кожная частка сістэмы можа быць абноўлена. Пры гэтым для забеспячэння бяспекі, Chainlink прапануе кожнаму аракулу, які ўдзельнічае ў заданні, выдаваць камбінацыю ключоў (адкрыты і зачынены). Закрыты ключ выкарыстоўваецца для генерацыі частковага подпісу, які змяшчае іх рашэнне на запыт дадзеных. Для атрымання адказу неабходна аб'яднанне ўсіх частковых подпісаў аракулаў сеткі.

Chainlink плануе правесці першапачатковы PoC DECO з упорам на дэцэнтралізаваныя фінансавыя прыкладанні, такія як Mixicles. На момант напісання артыкула выйшла навіна на Forbes, аб тым, што Chainlink набыла DECO у Cornell University.

Напады на аракулы

Town Crier vs DECO: які аракул выкарыстоўваць у блокчейне?

З пункту гледжання інфармацыйнай бяспекі, былі разгледжаны наступныя атакі на Town Crier:

  1. Rogue smart-contact code injection на TEE nodes.
    Сутнасць атакі: перадача ў TEE загадзя няправільнага кода смарт-кантракта, такім чынам, зламыснік, які атрымаў доступ да вузла, будзе мець магчымасць выканаць уласны (ашуканскі) смарт-кантракт на дэшыфраваны дадзеныя. Тым не менш якія вяртаюцца значэнні будуць зашыфраваныя з дапамогай private key, і адзіны варыянт доступу да такіх дадзеных складаецца ў уцечцы зашыфраванага тэксту пры звароце/выснове.
    Абарона ад дадзенага нападу складаецца ў праверцы анклавам правільнасці кода, змешчанага па бягучым адрасе. Гэта можа быць дасягнута з дапамогай схемы адрасавання, дзе адрас кантракта вызначаецца шляхам хэшавання кода кантракта.

  2. Contract state ciphertext змены ўліку.
    Сутнасць атакі: Уладальнікі вузлоў, на якіх выконваюцца смарт-кантракты, маюць доступ да contract state у зашыфраванай форме па-за анклавам. Зламыснік, займеўшы кіраванне вузлом, можа параўноўваць contact state да і пасля выканання транзакцыі і можа вызначыць, якія аргументы былі ўнесены і які менавіта метад смарт-кантракта выкарыстаны, бо сам код смарт-кантракта і яго тэхнічныя спецыфікацыі агульнадаступныя.
    Абарона ў забеспячэнні надзейнасці самага вузла.

  3. Side-channel attacks.
    Адмысловы тып нападаў, выкарыстоўвалы маніторынг доступу да памяці і кэшу анклава ў розных сцэнарах. Прыклад такой атакі – Prime and Probe.
    Town Crier vs DECO: які аракул выкарыстоўваць у блокчейне?
    Парадак правядзення нападу:

    • t0: Зламыснік запаўняе ўвесь кэш дадзеных працэсу ахвяры.
    • t1: Ахвяра выконвае код са зваротамі да памяці, якія залежаць ад канфідэнцыйных дадзеных ахвяры (крыптаграфічныя ключы). Выбар cache line адбываецца па значэнні keybit. У прыкладзе на малюнку, keybit = 0 і прачытаны адрас X у cache line 2. Дадзеныя, якія захоўваюцца ў X, загружаюцца ў кэш, выцясняючы дадзеныя, якія былі там да гэтага.
    • t2: Зламыснік правярае, якія з яго радкоў кэша былі выцесненыя - радкі, якія выкарыстоўваюцца ахвярай. Робіцца гэта з дапамогай вымярэння часу доступу. Паўтараючы гэтую аперацыю для кожнага з keybit, зламыснік атрымлівае ўвесь ключ.

Абарона ад нападу: У Intel SGX ёсць абарона ад side-channel attacks, якая забараняе маніторынг падзей, злучаных з кэшам, але напад Prime and Probe усё роўна мінуе, бо зламыснік назірае за падзеямі кэша свайго працэсу і падзяляе кэш з ахвярай.
Town Crier vs DECO: які аракул выкарыстоўваць у блокчейне?
Такім чынам, на дадзены момант надзейнай абароны ад гэтага нападу няма.

Вядомыя таксама напады тыпу Spectre і Foreshadow (L1TF), падобныя на Prime and Probe. Яны дазваляюць вырабляць чытанне дадзеных з кэш-памяці праз іншы канал. Прадугледжана абарона ад уразлівасці Spectre-v2, якая працуе супраць двух дадзеных нападаў.

У адносінах да DECO, трохбаковы поціск рукі дае гарантыю бяспекі:

  1. Prover Integrity: узламаны prover не можа падрабіць інфармацыю аб паходжанні server і не можа прымусіць прымаць server недапушчальныя запыты ці адказваць няправільна на сапраўдныя запыты. Гэта здзяйсняльна праз шаблоны запытаў паміж server і prover.
  2. Verifier Integrity: узламаны verifier не можа прымусіць prover атрымліваць няправільныя адказы.
  3. Канфідэнцыяльнасць: Узламаны 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

Дадаць каментар