Авторы: Омер Шломовиц, ZenGo.
Шектік қолтаңба схемасы (TSS) – таратылған кілттер генерациясына және қол қоюға арналған криптографиялық примитив. Блокчейн клиенттерінде TSS пайдалану, әсіресе, қауіпсіздік тұрғысынан көптеген артықшылық бере алатын жаңа парадигма болып табылады. Кең мағынасында TSS кілттерді басқару жүйелерін (мысалы, криптовалюта әмияндары) әзірлеуге әсер етуі мүмкін және орталықтандырылмаған қаржы қызметтерін (DeFi) пайдалану жағдайларында жергілікті қолдауға жол көрсете алады. Соған қарамастан TSS әлі де жаңа технология, сондықтан тәуекелдер мен шектеулерді де ескеру қажет.
Бұл мақалада біз TSS дегеніміз не екенін, ол блокчейн саласына қандай әлеуетті артықшылықтар беретінін, оны блокчейн клиентінде қалай жүзеге асыруға болатынын, Shamir құпия бөлісу және Мультиқолтаңбамен қалай салыстыруға болатынын, таратылған кілттерді басқару үшін TSS пайдаланудың әртүрлі әдістерін қарастырамыз және соңында тәуекелдер мен шектеулерді талқылаймыз.
Криптографияның күші
TSS-ді түсіну үшін алдымен криптография туралы іргелі ақпарат алу қажет. 1970 жылдардан бастап көптеген интернет жүйелері (TLS және PGP сияқты) жария кілт криптографиясы (PKC) ретінде де белгілі асимметриялық криптографияны қолданды. PKC екі кілтті пайдаланады: біреуі жария және екіншісі жеке. Жария кілт құпия емес және оны кез келген адам жариялап, пайдалана алады, ал жеке кілт жүйенің қауіпсіздігін қамтамасыз ететін құпия ақпарат бөлігі болып табылады.
Шифрлау және цифрлық қолтаңбалар PKC үшін ең көп таралған екі қолданыс болып табылады. Шифрлау және цифрлық қолтаңба схемалары үш алгоритм жиынтығына негізделген. Біріншісі – жеке және жария кілт жұбын генерациялау, екіншісі – шифрлық мәтін/қолтаңба жасау, үшінші – шифрдан шығару/тексеру процесі. Цифрлық қолтаңбаға келетін болсақ, қол қою алгоритмі бірегей қолтаңба жасау үшін оның иесіне ғана белгілі жеке кілтті талап етеді. Қолтаңба берілген хабарламаға жария кілті бар кез келген адам оның түпнұсқалығы мен дұрыстығын тексере алатындай етіп тіркеледі.
Блокчейн
Блокчейн өте қуатты технология екені даусыз. Ол іс-шараларды ұйымдастыратын және жазатын консенсус деңгейін қамтамасыз етеді. Мұндай инфрақұрылым бізге, пайдаланушыларға, орталықтандырылмаған экономикаларды және тіпті үкіметтерді құру үшін әлеуетті күш береді. Бір қызығы, негізгі блокчейнді іске қосу үшін қажет криптография тек цифрлық қолтаңбаларға негізделуі мүмкін. Блокчейн контекстінде жеке кілттер жеке куәліктерді білдіреді, ал қолтаңба жеке куәлік жасаған ашық мәлімдеме немесе шағым болып табылады. Блокчейн мәлімдемелерге тапсырыс береді және оларды басқалармен қатар қолтаңбалардың ұмытылмайтын және дұрыс екендігін қамтамасыз ететін ережелер жиынтығына сәйкес тексереді.
Блокчейнде қолданылатын классикалық криптографиядан айырмашылығы, заманауи криптографиялық құралдар жинағы бірқатар керемет сиқырлы амалдарды қамтиды: нөлдік білім дәлелдері, гомоморфтық шифрлау және бірнеше тарапты есептеулер олардың тек кейбіреулері. Соңғы онжылдықта көргеніміздей, блокчейн зерттеулері қолданбалы криптографияға қатты әсер етті және соңғы жетістіктер жоғарыда аталған барлық салада және т.б. орын алды.
Бұл мақалада тиімді әрі қауіпсіз шектік қолтаңбалар (TSS) түріндегі жетістікке тоқталамыз.
MPC және шектік қолтаңба схемасы (TSS)
Көп тарапты есептеулер (MPC) – 40 жылдай бұрын Эндрю Си Яоның негізгі жұмысынан бастау алған криптографияның бір саласы. MPC есептеуінде бір-біріне сенбейтін тараптар жиыны осы кірістерді құпия сақтай отырып, олардың кірістері бойынша функцияны бірлесіп есептеуге тырысады.
Мысал ретінде компанияның n қызметкері кімнің көп жалақы алатынын білгісі келеді, бірақ олардың нақты жалақысын бір-біріне көрсетпейді. Мұнда жеке кірістер жалақы болып табылады және шығыс ең жоғары жалақысы бар қызметкердің аты болады. Бұл есептеуді MPC көмегімен жасай отырып, есептеу кезінде бірде-бір жалақының жылыстап кетпейтінін көреміз.
MPC-дің екі негізгі қасиеті – дұрыстық пен құпиялылық:
Дұрыстық: алгоритм шығарған нәтиже дұрыс (күтілгендей).
Құпиялық: тарап иеленетін құпия кіріс деректер басқа тараптарға жіберілмейді.
Цифрлық қолтаңбаны таратылған әдіспен есептеу үшін MPC қолданамыз. Жоғарыдағы сипаттарды қолтаңбаларға қалай қолдануға болатынын көрейік. Қол қою үшін бізде үш қадам барын еске саламыз:
Негізгі буын: бірінші қадам да ең күрделі. Бізге жалпыға қолжетімді және болашақ қолтаңбаларды тексеру үшін пайдаланылатын кілтті жасау керек. Бірақ әрбір тарап үшін құпия үлес деп атайтын жеке құпияны да жасауымыз керек. Дұрыстық және құпиялық тұрғысынан біз бұл функция барлық тараптарға бірдей жария кілтті және әрқайсысы үшін әртүрлі құпия үлесті беретінін айтамыз: (1) құпиялық: тараптар арасында ешқандай құпия бөлісу деректері жылыстап кетпейді және (2) дұрыстығы: жария кілт құпия үлестердің функциясы болып табылады.
Қол қою: бұл қадам қолтаңбаны жасау функциясын қамтиды. Әрбір тараптың кірісі алдыңғы қадамның (таратылған кілт генерациясының) нәтижесі ретінде жасалған оның құпия үлесі болады. Сондай-ақ бұл хабарламаға қол қою керек деген барлығына белгілі жария дерек бар. Шығару цифрлық қолтаңба болады және құпиялылық қасиеті есептеу кезінде құпия акциялардың жылыстап кетпеуін қамтамасыз етеді.
Тексеру: тексеру алгоритмі классикалық параметрдегідей қалады. Дара кілт қолтаңбаларымен үйлесімді болу үшін жария кілтті білетін әрбір адам қолтаңбаларды тексеріп, растай алуы керек. Блокчейнді тексеру түйіндері дәл осылай жасайды.
Шектік қолтаңба схемасы (TSS) – таратылған кілт генерациясы (DKG) мен таратылған қол қоюдың шектік қолтаңба схемасының құрылысына берілген атау.
TSS схемасын блокчейндермен біріктіру
TSS схемасын блокчейнде қолдануға болатын кәдімгі әдіс – TSS көмегімен кілттер мен қолтаңбаларды генерациялау үшін блокчейн клиентін өзгерту. Бұл жерде біз блокчейн клиенті терминін толық түйінмен орындалатын пәрмендер жинағына сілтеме жасау үшін қолданамыз. Тәжірибеде TSS технологиясы жеке кілттерге қатысты барлық пәрменді таратылған есептеулермен ауыстыруға мүмкіндік береді.
Оны толығырақ түсіндіру үшін классикалық блокчейн схемасында жаңа мекенжайлар қалай жасалатынын қысқаша сипаттаудан бастаймыз. Қарапайым тілмен айтқанда, біз жеке кілт жасап, содан кейін жария кілтті жеке кілттен есептеу арқылы жаңа мекенжай жасай аламыз. Соңында блокчейн мекенжайы жария кілттен алынады.
Енді TSS пайдалану арқылы бізде жария кілтті бірлесіп есептейтін n тараптың жиынтығы болады, олардың әрқайсысы жеке кілттің құпия үлесіне ие болады (жеке үлестер басқа тараптарға көрсетілмейді). Жария кілттен мекенжайды дәстүрлі жүйедегідей шығара аламыз, бұл блокчейнді мекенжайдың жасалу жолынан тәуелсіз етеді. Артықшылығы – жеке кілт енді бірде-бір қателік нүктесі емес, өйткені әрбір тарап оның бір бөлігін ғана ұстайды.
Мәмілелерге қол қойған кезде де солай жасауға болады. Бұл жағдайда бір тарап жеке кілтпен қол қоюдың орнына, біз бірнеше тарап арасында таратылған қолтаңбаны генерациялауды іске қосамыз. Сондықтан әрбір тарап жеткілікті түрде адал әрекет етсе, жарамды қолтаңба қоя алады. Біз қайтадан жергілікті есептеуден (бір қателік нүктесі) интерактивті есептеуге көштік.
Таратылған кілттер генерациясы әртүрлі қол жеткізу құрылымдарын ұсынатын жолмен жасалуы мүмкін екенін атап өткен жөн: жалпы «t/n» параметрі жеке кілтпен байланысты операцияларда қауіпсіздікке нұқсан келтірмей, t ерікті бұзылуларына төтеп бере алады.
TSS және мультиқолтаңба айырмашылығы
Кейбір блокчейндер TSS функционалдығын бағдарламалық құралдың кірістірілген немесе бағдарламаланатын бөлігі ретінде ұсынады. Біз бұл функцияны мультиқолтаңба деп атаймыз. Айырмашылықтарды жақсырақ түсіну үшін мультиқолтаңбаны блокчейннің қолданба деңгейіндегі TSS ретінде қарастыруға болады.
Басқаша айтқанда мультиқолтаңба мен TSS екеуі де ұқсас мақсаттарға жетуге тырысады, бірақ TSS офчейн криптографияны пайдаланады, ал мультиқолтаңба ончейн жүреді. Дегенмен блокчейнге мультиқолтаңбаны кодтау тәсілі қажет, ол құпиялылыққа зиян келтіруі мүмкін, себебі кіру құрылымы (қол қоюшылар саны) блокчейнде ашылады. Мультиқолтаңба транзакциясының құны жоғарырақ, өйткені әртүрлі қол қоюшылар туралы ақпарат блокчейнде хабарлануы керек.
TSS схемасында қол қоюшылардың мәліметтері әдеттегі көрінетін транзакцияға біріктіріледі, құнын төмендетіп, құпиялықты сақтайды. Екінші жағынан мультиқолтаңба интерактивті емес болуы мүмкін, бұл әртүрлі қол қоюшылар арасында күрделі байланыс деңгейін жасауды қажет етпейді.
Негізгі айырмашылық мынада: мультиқолтаңба блокчейнге тән және оны әрбір блокчейн үшін қайта енгізу қажет, ал кейбір жағдайларда оған мүлде қолдау көрсетілмейді. Керісінше TSS таза криптографияға сүйенеді, сондықтан қолдау әрқашан мүмкін. Айырмашылықтар туралы суреттері бар тамаша мақаланы мына жерден табуға болады.
TSS және Shamir құпия бөлісу схемасы
Shamir құпия бөлісу схемасы (SSSS) жеке кілтті таратылған күйде сақтау жолын қамтамасыз етеді, осылайша жеке кілт тыныштықта болған кезде ол бірнеше жерде сақталады. SSSS және TSS арасында екі айырмашылық бар:
Кілт жасау: SSSS схемасында жеке кілттердің құпия акцияларын құруға жауапты «дилер» деп аталатын жалғыз тарап бар. Яғни кілт жасау кезінде жеке кілт бір жерде жасалады, содан кейін дилер әртүрлі орындарға таратады. TSS схемасында дилер жоқ, өйткені оның рөлі толық жеке кілт ешқашан бір жерде болмайтындай таратылған.
Қол қою: SSSS жүйесінде тараптар қол қою үшін толық жеке кілтті қайта құруы керек, бұл қолтаңба қажет болған сайын бір сәтсіздікке әкеледі. TSS схемасында қол қою құпия акцияларды қайта құрусыз таратылған жолмен жүзеге асырылады.
Көріп отырғанымыздай, TSS схемасында жеке кілт (жүйенің қауіпсіздігін білдіреді) өзінің бүкіл қызмет ету мерзімінде ешқашан бір жерде болмайды.
Шектік әмияндар
TSS технологиясына негізделген әмиян дәстүрлі криптовалюта әмияндарынан біршама ерекшеленеді. Әдетте кәдімгі әмиян сид-фраза жасайды және оны мекенжайларды анықтау үшін пайдаланады. Пайдаланушы кейінірек осы иерархиялық детерминистік (HD) құрылымды 1) әмиян мекенжайларына сәйкес келетін жеке кілттерге жету және олармен транзакцияларға қол қою және 2) сид-фраза арқылы барлық әмиян кілттерін қалпына келтіру үшін пайдалана алады.
Шектік әмиянда заттар күрделірек. HD құрылымын құру мүмкін болса да, оның генерациясын басқа MPC протоколы сияқты таратылған түрде есептеу керек. Тараптар келесі кілттің қайсысын пайдалану керектігін бірлесіп шешуі керек. Басқаша айтқанда әр партияның өзіндік сид-фразасы болады. Сид-фразалар бөлек жасалады және ешқашан біріктірілмейді, сондықтан бір тарап өз тұқымынан жеке кілттерді ала алмайды.
Сондықтан TSS негізіндегі әмияндарда қауіпсіздік функциясы жақсы, ол сәйкес жария кілт пен блокчейн мекенжайын өзгертпей жеке кілттерді айналдыруға мүмкіндік береді. Белсенді құпия бөлісу ретінде де белгілі жеке кілт айналымы – құпия үлестерді кіріс ретінде қабылдайтын және құпия бөлістердің жаңа жинағын шығаратын тағы бір MPC протоколы. Ескі құпия акцияларды жойып, жаңаларын бірдей пайдалануға болады.
Мұндай құрылым қауіпсіздікке уақыт өлшемін қосады, яғни шектік әмиянға шабуыл жасау үшін шабуылдаушы бір уақытта бірнеше жерде болуы керек. Айналу алдында және айналдырудан кейін жасырын үлестерді біріктіру (егер олар қолтаңба жасағысы келсе), шабуылдаушыға қосымша қуат бермейді.
Әмиянның бұл түрінің кемшілігі – сид-фразаның болмауынан ол бір кілті бар әмиян жүйелерімен үйлеспейді. Сондықтан жасырын акцияларды қай тараптар ұстайтынын ойластыру маңызды.
Бірнеше ықтимал архитектура бар:
TSS аутсорсингі: пайдаланушы «n» серверлеріне олардың атынан есептеу жүргізуге мүмкіндік береді. Активтердің иесі болып табылмайтын, бірақ қандай да бір ынталандырудың орнына қауіпсіздік деңгейін қамтамасыз ететін қызмет жеткізушілеріне негізгі генерация, басқару және қол қою мүмкіндіктерін тиімді беру.
Бірнеше құрылғыны пайдалану: пайдаланушы TSS схемасын өзіне тиесілі құрылғылар арасында іске қосады. Мысалы, бір тарап IoT құрылғысы болады, екінші тарап пайдаланушының мобильді телефоны болады, тағы бір тарап ноутбук болады және т.с.с.
Гибридтік: TSS кейбір тараптарды сыртқы қызмет жеткізушілері басқаратындай, ал кейбір тараптар пайдаланушыға тиесілі құрылғыларда іске қосылатындай жұмыс істейді.
Бірінші әдіс пайдаланушы клиенті тарапынан ауыр TSS есептеу жүктемесін түсіреді. Екінші жағынан қызмет жеткізушілері сөз байласып (олардың жеткілікті санына бір уақытта шабуыл жасалмайды деп есептейміз, бірақ іс жүзінде болуы мүмкін), пайдаланушының активтерін ұрлауы мүмкін.
Екінші әдіс пайдаланушыға толық бақылау береді, бірақ транзакция жүргізуді қиындатады, өйткені желіге қосылып, TSS есептеуімен айналысуға бірнеше құрылғы қажет.
Үшінші нұсқа екі нұсқаның ішіндегі жақсысы саналады, өйткені ол пайдаланушыға транзакцияларды жүргізудің оңай және жылдам әдісін ұсынады, сонымен бірге пайдаланушы авторизациясынсыз транзакция жасау мүмкіндігін шектемейді.
TSS және смарт келісімшарттар
Осы жылдар ішінде зерттеушілер цифрлық қолтаңбалардың көптеген қолданыстарын тапты, ал кейбіреулерінің тривиальды еместігі таң қаларлық. Жоғарыда айтылғандай, TSS қауіпсіздікті айтарлықтай арттыра алатын криптографиялық примитив болып табылады. Блокчейн контекстінде көптеген функцияларды TSS негізіндегі криптографиямен ауыстыруға болады деп айта аламыз. Орталықтандырылмаған қолданбалар, 2-деңгей масштабтау шешімдері, атомдық своптар, араластыру, мұрагерлік және т.б. TSS құрылымының үстіне салынуы мүмкін. Бұл соңында қымбат және қауіпті желідегі смарт келісімшарт операцияларын арзанырақ және сенімдірек баламалармен ауыстыруға мүмкіндік береді.
Нақты мысалдар: Multi-Hop Locks екі тарапты қолтаңбаларды ақылды жолмен пайдаланады және қауіпсіз әрі жеке төлем арнасы бар Биткоин жылдам желісіне балама ретінде пайдаланылуы мүмкін. ShareLock бір шектік қолтаңбаны тексеруге негізделген Ethereum үшін ең арзан тізбекті араластыру шешімі сияқты.
Тәуекелдер
Соңғы екі жылда TSS енгізу қарқыны айтарлықтай өсті. Алайда салыстырмалы түрде жаңа технология болғандықтан, оның әлі де кейбір шектеулері мен кемшіліктері бар. Классикалық жария кілт криптографиясымен салыстырғанда, TSS протоколы өте күрделі болуы мүмкін және әлі де «шайқастық сынақтан» өтпеді. Әдетте TSS қарапайым цифрлық қолтаңбалармен салыстырғанда қосымша, әлсіз, криптографиялық болжамдарды талап етеді. Нәтижесінде қазір дәстүрлі қондырғыларда болмаған криптографиялық шабуыл векторлары табылып жатыр (Breaking Bitcoin Conference 2019 бөлімінен осы презентацияны қараңыз). Қауіпсіздік инженерлері мен қолданбалы криптография мамандары жүйеңізде TSS схемасын қауіпсіз орналастыруға көмектесе алады.
Жақсы жағы – қолданыстағы және жаңа енгізу процестері жасалған сапалы үлес қосу, сарапшы бағалауы, аудиттер және алгоритм өнімділігін жақсарту есебінен тиімдірек бола түсуде.
Қорытынды ойлар
Бұл мақалада біз блокчейнді қолдану тәсілін айтарлықтай өзгертуге қабілетті қызықты криптографиялық примитив болып табылатын шектік қолтаңба схемасының (TSS) негіздерімен таныстық.
Бұл мақалада Binance Chain мен Биткоинде қолдануға болатын шектік ECDSA талқыланбағандықтан, қызығушылық танытқандар келесі соңғы мақалалар тізімін қарай алады. Сондай-ақ кейбір TSS енгізулерімен танысқыңыз келсе, екі тарапты Binance Chain әмиянының кодын осы жерден таба аласыз немесе кастодиандық емес екі тарапты Binance Chain әмиянын қамтамасыз ету үшін гибридтік әдісті пайдаланатын ZenGo әмиянын қолданып көріңіз.
Қосымша оқитын материалдар: