Paaiškinta slenkstinė parašo schema
Pradžia
Straipsniai
Paaiškinta slenkstinė parašo schema

Paaiškinta slenkstinė parašo schema

Paskelbta Jul 21, 2019Naujinta Apr 29, 2021
12m

Autorius: Omeris Shlomovitsas, ZenGo.

Slenkstinė parašo schema (TSS) yra kriptografinis elementas, skirtas paskirstyto rakto generavimui ir pasirašymui. TSS naudojimas blokų grandinės klientuose yra nauja paradigma, galinti suteikti daugybę pranašumų, ypač saugumo srityje. Platesne prasme TSS gali turėti įtakos raktų valdymo sistemų (tokių kaip kriptovaliutų piniginės) dizainui ir atverti kelią vietiniam palaikymui DeFi naudojimo atvejais. Vis dėlto TSS vis dar yra nauja technologija, todėl taip pat derėtų apsvarstyti riziką ir apribojimus.

Šiame straipsnyje aptarsime, kas yra TSS, kokių potencialių pranašumų ji suteikia blokų grandinės erdvėje, kaip ją galima įdiegti blokų grandinės kliente, palyginsime ją su Shamiro paslapčių pasidalijimu ir daugialypiu parašu (Multisig), sužinosime, kokiais skirtingais būdais galima naudoti TSS paskirstyto rakto valdymui ir galiausiai aptarsime rizikas ir apribojimus.


Kriptografijos galia

Norint suprasti TSS, pirmiausia reikia susipažinti su kriptografijos pagrindais. Nuo 1970-ųjų vis daugiau interneto sistemų (pvz., TLS ir PGP) naudojo asimetrinę kriptografiją, dar vadinamą viešojo rakto kriptografija (PKC). PKC naudoja du raktus: vieną viešąjį ir vieną privatųjį. Viešasis raktas nėra slaptas, bet koks asmuo gali jį skelbti ir naudoti, o privatusis raktas turi slaptos informacijos, užtikrinančios sistemos saugumą.

Šifravimas ir skaitmeniniai parašai yra du dažniausi PKC naudojimo atvejai. Šifravimas ir skaitmeninių parašų schemos pagrįstos trijų algoritmų rinkiniais. Pirmasis yra privačiųjų ir viešųjų raktų poros generavimas, antrasis – šifro arba parašo generavimas, o trečiasis – iššifravimo arba patvirtinimo procesas. Kalbant apie skaitmeninius parašus, kad būtų galima sukurti unikalų parašą, pasirašymo algoritmas reikalauja turėti privatųjį raktą, kuris žinomas tik jo savininkui. Parašas pridedamas prie tam tikros žinutės tokiu būdu, kad bet koks asmuo, turintis viešąjį raktą, galėtų patvirtinti jo autentiškumą ir teisingumą.


Blokų grandinė

Nėra jokių abejonių, kad blokų grandinė yra labai galinga technologija. Ji suteikia sutarimo sluoksnį, kuris sutvarko ir registruoja įvykius. Dėl tokios infrastruktūros mes, vartotojai, turime potencialią galią kurti decentralizuotas ekonomikas ir net vyriausybes. Nuostabu, kad kriptografija, kurios reikia pagrindinei blokų grandinei, gali būti pagrįsta tik skaitmeniniais parašais. Blokų grandinės kontekste privatieji raktai atspindi tapatybes, o parašas yra viešasis pareiškimas arba reikalavimas, kurį pateikia tapatybė. Blokų grandinė pateiks pareiškimus ir patvirtins juos pagal taisyklių rinkinį, užtikrinantį parašų autentiškumą ir teisingumą.

Kitaip nei klasikinė kriptografija, naudojama blokų grandinėje, šiuolaikinė kriptografinė įrankių dėžė apima kelias nuostabias gudrybes: įrodymus neatskleidžiant informacijos, homomorfinį šifravimą ir daugiašalį skaičiavimą. Kaip matėme per pastarąjį dešimtmetį, blokų grandinės tyrimai labai paspartino taikomąją kriptografiją, o neseniai pasiekta pažanga apima viską, kas išdėstyta anksčiau, ir dar daugiau. 

Šiame straipsnyje sutelksime dėmesį į vieną tokį proveržį: efektyvią saugią slenkstinę parašų schemą (TSS).


MPC ir slenkstinė parašų schema (TSS)

Daugiašalis skaičiavimas (MPC) yra kriptografijos šaka, kuri prasidėjo beveik prieš keturiasdešimt metų nuo Andrew C. Yao fundamentalaus darbo. MPC kontekste grupė šalių, kurios viena kita nepasitiki, bando kartu apskaičiuoti funkciją, remdamosi savo įvestimis ir išlaikydamos šias įvestis privačias. 

Tarkime, kad n įmonės darbuotojų nori sužinoti, kas gauna didžiausią atlyginimą, tačiau nenori atskleisti vieni kitiems savo tikrųjų atlyginimų. Čia privatieji įnašai yra atlyginimai, o rezultatas bus didžiausią atlyginimą gaunančio darbuotojo vardas. Atliekant šį skaičiavimą naudojant MPC, galima užtikrinti, kad skaičiavimo metu nenutekėtų informacija nė apie vieną atlyginimą. 

Dvi pagrindinės MPC savybės yra teisingumas ir privatumas:

  • teisingumas: algoritmo sugeneruotas rezultatas yra teisingas (kaip tikėtasi);

  • privatumas: slapti įvesties duomenys, kuriuos turi viena šalis, nenutekės kitoms šalims.

Mes naudosime MPC, kad apskaičiuotume skaitmeninį parašą paskirstytu būdu. Pažiūrėkime, kaip anksčiau išvardytos ypatybės gali būti taikomos parašams. Priminkime, kad parašams turime tris toliau nurodytus etapus. 

  • Raktų generavimas: pirmasis ir pats sudėtingiausias veiksmas. Reikia sugeneruoti raktą, kuris bus viešas ir naudojamas būsimiems parašams patvirtinti. Tačiau taip pat kiekvienai šaliai turime sugeneruoti individualią paslaptį, kurią vadinsime slaptąja dalimi. Teisingumo ir privatumo atžvilgiu funkcija visoms šalims išves tą patį viešąjį raktą ir skirtingą slaptąją dalį kiekvienai, taip, kad būtų pasiektas: (1) privatumas: šalims nenuteka jokie kitų šalių slaptųjų dalių duomenys, ir (2) teisingumas: viešasis raktas yra slaptųjų dalių funkcija.

  • Pasirašymas: šio veiksmo metu vykdoma parašo generavimo funkcija. Kiekvienos šalies įvestis bus jos slaptoji dalis, išvestis, sukurta vykdant ankstesnį veiksmą (paskirstyto rakto generavimą). Taip pat yra viešoji visiems žinoma įvestis – pranešimas, kurį reikia pasirašyti. Išvestis bus skaitmeninis parašas, o privatumo apsauga užtikrins, kad skaičiuojant neįvyktų slaptųjų dalių duomenų nutekėjimas.

  • Patvirtinimas: patvirtinimo algoritmas lieka toks pat, kaip ir klasikinėje aplinkoje. Kad jis būtų suderinamas su vieno rakto parašais, kiekvienas, turintis žinių apie viešąjį raktą, turėtų galėti patikrinti ir patvirtinti parašus. Būtent tai daro blokų grandinės patvirtinimo mazgai.

Slenkstinė parašų schema (TSS) yra pavadinimas, kurį suteikiame šiai paskirstyto rakto generavimo (DKG) ir paskirstyto pasirašymo slenkstinės parašų schemos kompozicijai.


TSS derinimas su blokų grandinėmis

Natūralus būdas, kuriuo TSS gali būti naudojama blokų grandinėje, yra pakeisti blokų grandinės klientą, kad jis generuotų raktus ir parašus naudodamas TSS. Čia mes naudojame terminą blokų grandinės klientas, norėdami nurodyti komandų rinkinį, kurį vykdo visas mazgas. Praktikoje TSS technologija leidžia mums pakeisti visus su privačiaisiais raktais susijusius komandų vykdymus paskirstytais skaičiavimais.

Norėdami tai paaiškinti išsamiau, pradėsime trumpai aprašydami, kaip nauji adresai kuriami klasikinės sandaros blokų grandinėje.  Kalbant paprastai, galime sukurti naują adresą sugeneruodami privatųjį raktą, o tada apskaičiuodami viešąjį raktą iš privačiojo rakto. Galiausiai blokų grandinės adresas gaunamas iš viešojo rakto.

Dabar, naudodami TSS, turėtume rinkinį n šalių, kurios kartu apskaičiuoja viešąjį raktą, kiekviena turėdama slaptąją privačiojo rakto dalį (individualios dalys neatskleidžiamos kitoms šalims). Iš viešojo rakto galime išvesti adresą tokiu pačiu būdu, kaip tradicinėje sistemoje, todėl blokų grandinė yra nepriklausoma nuo to, kaip sugeneruojamas adresas. Pranašumas yra tas, kad privatieji raktai nebėra vienintelis trikties taškas, nes kiekviena šalis laiko tik vieną jo dalį. 

Taip pat galima pasirašyti sandorius. Šiuo atveju pasirašo ne viena šalis su savo privačiuoju raktu, bet kelios šalys vykdo paskirstyto parašo generavimą. Taigi kiekviena šalis gali sukurti galiojantį parašą, jei pakankamai šalių elgiasi sąžiningai. Vėl nuo vietinio skaičiavimo (vieno trikties taško) perėjome prie interaktyvaus skaičiavimo.

Svarbu paminėti, kad paskirstyto rakto generavimą galima atlikti taip, kad būtų galima naudoti įvairių tipų prieigos struktūras: bendras nustatymas „t iš n“ galės atlaikyti ne daugiau nei t atsitiktinių su privačiuoju raktu susijusių operacijų trikčių nepažeidus saugumo.


TSS ir daugialypis parašas (Multisig)

Kai kurios blokų grandinės siūlo TSS funkciją kaip integruotą arba programuojamą programinės įrangos dalį. Šią funkciją vadiname daugialypiu parašu arba Multisig. Norint geriau suprasti skirtumus, galime žiūrėti į daugialypį parašą kaip į TSS blokų grandinės programinės įrangos sluoksnį.

Kitaip tariant, tiek naudojant daugialypį parašą (Multisig), tiek TSS iš esmės siekiama panašių tikslų, tačiau TSS naudoja kriptografiją užgrandininiuose sandoriuose, o daugialypis parašas (Multisig) vykdomas grandinėje. Vis dėlto blokų grandinei reikalingas daugialypio parašo (Multisig) užkodavimo būdas, o tai gali pakenkti privatumui, nes prieigos struktūra (pasirašančiųjų skaičius) yra atskleidžiamas blokų grandinėje. Daugialypio parašo (Multisig) sandorio kaina yra didesnė, nes informacija apie skirtingus pasirašančiuosius taip pat turi būti perduodama blokų grandinėje.

TSS atveju pasirašančiųjų duomenys yra įtraukiami į įprastą sandorį, sumažinant išlaidas ir išlaikant privatumą. Kita vertus, daugialypis parašas (Multisig) gali būti neinteraktyvus, tuomet nereikia rūpintis dėl sudėtingo ryšio tarp skirtingų pasirašančiųjų sluoksnio kūrimu.

Pagrindinis skirtumas yra tas, kad daugialypis parašas (Multisig) yra būdingas blokų grandinei ir turi būti iš naujo įdiegtas kiekvienai blokų grandinei, o kai kuriais atvejais jis visai nepalaikomas. O TSS yra pagrįsta gryna kriptografija, todėl palaikymas visada įmanomas. Puikų straipsnį su iliustracijomis apie skirtumus rasite čia.


TSS ir Shamiro paslapčių pasidalijimo schema

Shamiro paslapčių pasidalijimo schema (SSSS) suteikia galimybę privatųjį raktą saugoti paskirstytu būdu, taip užtikrinant, kad, kol privatusis raktas yra ramybės būsenos, jis būtų saugomas keliose vietose. SSSS ir TSS skiria du toliau nurodyti dalykai.

  • Raktų generavimas: SSSS yra viena šalis, vadinama „platintoju“, kuri yra atsakinga už privačiojo rakto slaptųjų dalių generavimą. Tai reiškia, kad raktų generavimo metu privatusis raktas sukuriamas vienoje vietoje, o vėliau platintojas jį platina skirtingose vietose. TSS atveju platintojo nėra, nes jos vaidmuo yra paskirstytas taip, kad visas privatusis raktas niekada nebūtų vienoje vietoje.

  • Pasirašymas: SSSS šalys turi rekonstruoti visą privatųjį raktą, kad galėtų pasirašyti, ir kiekvieną kartą, kai reikia parašo, tai vėl lemia vieną trikties tašką. TSS pasirašymas vyksta paskirstytu būdu, niekada neatkuriant slaptosios dalies.

Kaip matome, TSS privatieji raktai (kurie atspindi sistemos saugumą) per visą gyvavimo laiką niekada nebūna vienoje vietoje.


Slenkstinės piniginės

Piniginė, pagrįsta TSS technologija, šiek tiek skiriasi nuo tradicinių kriptovaliutų piniginių. Įprasta piniginė paprastai sugeneruoja pradinę frazę ir naudoja ją deterministiškai išvesdama adresus. Vartotojas vėliau gali naudoti šią hierarchinę deterministinę (HD) struktūrą, kad 1) pasiektų privačiuosius raktus, atitinkančius piniginių adresus, ir juos naudodama pasirašytų sandorius, 2) atkurtų visus piniginės raktus naudodamas pradinę frazę.

Slenkstinėje piniginėje viskas yra sudėtingiau. Nors HD struktūrą galima generuoti, jos generavimas turi būti apskaičiuotas paskirstytu būdu, kaip ir kitas MPC protokolas. Šalys turi bendrai nuspręsti, koks bus kitas naudojamas raktas. Kitaip tariant, kiekviena šalis turės savo pradinę frazę. Pradinės frazės generuojamos atskirai ir niekada nesujungiamos, kad viena šalis negalėtų išgauti privačiųjų raktų iš savo pradinės frazės.

TSS pagrindu veikiančios piniginės taip pat turi puikią saugumo funkciją, leidžiančią keisti privatųjį raktą, nekeičiant atitinkamo viešojo rakto ir blokų grandinės adreso. Privačiojo rakto pasukimas, dar vadinamas aktyviu paslapčių dalijimusi, yra dar vienas MPC protokolas, kuriame slaptosios dalys naudojamos kaip įvestis ir išvedamas naujas slaptųjų dalių rinkinys. Senos slaptosios dalys gali būti ištrintos, o naujos gali būti naudojamos tokiu pat būdu.

Tokios struktūros saugumą papildo laiko dimensija, o tai reiškia, kad įsilaužėlis turi būti keliose vietose tuo pačiu metu, kad galėtų įsilaužti į slenkstinę piniginę. Slaptųjų dalių jungimas prieš pasukimą ir po pasukimo nesuteiks įsilaužėliui jokios papildomos galios, jei jis norės suklastoti parašą. 

Šio tipo piniginės trūkumas yra tas, kad dėl pradinės frazės nebuvimo ji pasidaro nesuderinama su vieno rakto piniginės sistemomis. Taigi svarbu apsvarstyti, kurios šalys saugos slaptąsias dalis.

Galimos kelios toliau nurodytos architektūros.

  • TSS delegavimas: vartotojas leis „n“ serverių atlikti skaičiavimą jų vardu. Efektyvus raktų generavimo, valdymo ir pasirašymo delegavimas paslaugų teikėjams, kurie nėra išteklių savininkai, bet suteikia saugumo sluoksnį mainais už tam tikrą paskatą.

  • Kelių įrenginių naudojimas: vartotojas paleis TSS keliuose jam priklausančiuose įrenginiuose. Pavyzdžiui, viena šalis bus tam tikras IoT įrenginys, kita šalis bus vartotojo mobilusis telefonas, dar kita – jo nešiojamasis kompiuteris ir kt.

  • Hibridinis: TSS veiks taip, kad kai kurias šalis valdys išoriniai paslaugų teikėjai, o kai kurios šalys veiks vartotojui priklausančiuose įrenginiuose.

Naudojant pirmąjį metodą atsikratoma sudėtingo TSS skaičiavimo vartotojo kliento pusėje. Kita vertus, paslaugų teikėjai gali susimokyti (darome prilaidą, kad pakankamas jų kiekis nebus užpulti tuo pačiu metu, tačiau praktiškai taip gali nutikti) ir pavogti vartotojo išteklius.

Antrasis metodas suteikia vartotojui visišką kontrolę, tačiau dėl jo sandorių vykdymas tampa nepatogus, nes reikia kelių įrenginių, kad būtų galima prisijungti prie interneto ir įjungti TSS skaičiavimą.

Trečiasis pasirinkimas laikomas geriausiu abiejų pasaulių junginiu, nes jis suteikia vartotojui lengvą ir greitą būdą vykdyti sandorius, tačiau nesumažina sandorių, atliekamų be vartotojo įgaliojimo, saugumo.


TSS ir išmanieji sandoriai 

Per metus tyrėjai aptiko daugybę skaitmeninių parašų naudojimo būdų, ir kai kurie iš jų yra stebėtinai sudėtingi. Kaip minėta, TSS yra kriptografinis elementas, galintis smarkiai padidinti saugumą. Blokų grandinėse daugelį funkcijų galima pakeisti TSS pagrindo kriptografija. Decentralizuotos programos, 2 sluoksnio išplečiamumo sprendimai, atominiai apsikeitimo sandoriai, maišymas, paveldėjimas ir dar daugiau gali būti kuriami TSS pagrindu. Tai galiausiai leistų brangias ir rizikingas išmaniųjų sandorių operacijas pakeisti pigesnėmis ir patikimesnėmis alternatyvomis.

Keli konkretūs pavyzdžiai: daugiapakopiai užraktai naudoja dviejų šalių parašus išradingu būdu ir gali būti naudojami kaip Bitkoino Lightning tinklo alternatyva, pasižyminti saugesniu ir privatesniu mokėjimų kanalo tinklu. ShareLock greičiausiai yra pigiausias maišymo grandinėje sprendimas, skirtas Ethereum, pagrįstas vieno slenkstinio parašo patvirtinimu.


Rizikos

Per pastaruosius kelerius metus TSS diegimų skaičius gerokai išaugo. Tačiau, kaip palyginti nauja technologija, ji vis dar turi tam tikrų apribojimų ir problemų. Palyginti su klasikine viešųjų raktų kriptografija, TSS protokolai gali būti labai sudėtingi ir dar nebuvo „išbandyti praktikoje“. Įprastai TSS reikalauja papildomų, silpnesnių kriptografinių prielaidų, palyginti su įprastais skaitmeniniais parašais. Dėl to dabar yra atrandami kriptografiniai atakų vektoriai, kurių nebuvo tradicinėse sistemose (žr. šią pateiktį iš 2019 m. bitkoino proveržio (Breaking Bitcoin) konferencijos). Saugos inžinieriai ir taikomieji kriptografai gali padėti saugiai įdiegti TSS jūsų sistemoje.

Žvelgiant iš teigiamos pusės, esami ir nauji diegimai stiprėja dėl kokybiškų indėlių, kolegų peržiūrų, auditų ir algoritmų našumo patobulinimų.


Baigiamosios mintys

Šiame straipsnyje aptarėme slenkstinė parašo schemos (TSS) – įdomios kriptografinės priemonės, turinčios potencialo reikšmingai pakeisti mūsų naudojimosi blokų grandine būdą, pagrindus.

Šiame straipsnyje neaptarėme slenkstinio ECDSA, kuris gali būti naudojamas Binance Chain ir bitkoino tinkle, todėl suinteresuoti asmenys gali pasinaudoti šiuo naujausių dokumentų sąrašu. Taip pat, jei norite išbandyti kelis TSS diegimus, čia rasite dvišalės Binance grandinės piniginės kodą arba galite išbandyti ZenGo piniginę, kuri naudodama hibridinį metodą teikia neglobojamą dvišalę Binance grandinės piniginę.


Papildoma literatūra

Binance Sensei
I am powered by ChatGPT and trained with 1,000+ articles and glossary entries from Binance Academy. My responses are provided on an “as is” basis for general information only, without any representation, warranty or guarantee of completeness or accuracy. See full terms and conditions here