Autors: Omers Šlomovičs, ZenGo.

Sliekšņa paraksta shēma (TSS) ir kriptogrāfisks primitīvs sadalītas atslēgas ģenerēšanai un parakstīšanai. TSS izmantošana blokķēdes klientiem ir jauna paradigma, kas var sniegt daudzas priekšrocības, īpaši drošības ziņā. Plašākā nozīmē TSS var ietekmēt atslēgu pārvaldības sistēmu (piemēram, kriptovalūtu) dizainu un kalpot par pamatu vietējam atbalstam DeFi lietošanas gadījumos. Tomēr TSS joprojām ir jauna tehnoloģija, tāpēc jāņem vērā arī riski un ierobežojumi.

Šajā rakstā mēs apskatīsim, kas ir TSS, kādas ir iespējamās priekšrocības, ko tas sniedz blokķēdes telpai, kā to var ieviest blokķēdes klientā, kā to var salīdzināt ar Shamir slepeno kopīgošanu un Multisig, kādi ir dažādie veidi izmantojiet TSS sadalītai atslēgu pārvaldībai, un visbeidzot mēs apspriežam riskus un ierobežojumus.


Kriptogrāfijas spēks

Lai saprastu TSS, mums vispirms ir nepieciešamas dažas pamatzināšanas par kriptogrāfiju. Kopš 1970. gadiem arvien vairāk interneta sistēmu (piemēram, TLS un PGP) izmantoja asimetrisko kriptogrāfiju, ko sauc arī par publiskās atslēgas kriptogrāfiju (PKC). PKC izmanto divas atslēgas: vienu publisko un vienu privāto. Lai gan publiskā atslēga nav noslēpums un to var publicēt un izmantot ikviens, privātā atslēga ir slepenas informācijas daļa, kas atspoguļo sistēmas drošību.

Šifrēšana un ciparparaksti ir divi visizplatītākie PKC lietojumi. Gan šifrēšanas, gan ciparparakstu shēmas balstās uz trīs algoritmu kopām. Pirmā ir privātās un publiskās atslēgas pāra ģenerēšana, otrā ir šifrētā teksta/paraksta ģenerēšana un trešais ir atšifrēšanas/pārbaudes process. Attiecībā uz ciparparakstiem parakstīšanas algoritms pieprasa, lai privātā atslēga, kas ir zināma tikai tās īpašniekam, izveidotu unikālu parakstu. Paraksts tiek pievienots konkrētam ziņojumam tā, lai ikviens, kuram ir publiskā atslēga, varētu pārbaudīt tā autentiskumu un pareizību.


Blockchain

Nav šaubu, ka blokķēde ir ļoti spēcīga tehnoloģija. Tas nodrošina vienprātības slāni, kas organizē un reģistrē notikumus. Šāda infrastruktūra dod mums, lietotājiem, potenciālu spēku, lai izveidotu decentralizētu ekonomiku un pat valdības. Pārsteidzoši, ka pamata blokķēdes palaišanai nepieciešamā kriptogrāfija var būt balstīta tikai uz ciparparakstiem. Blokķēdes kontekstā privātās atslēgas apzīmē identitātes, savukārt paraksts ir publisks paziņojums vai prasība, ko veic identitāte. Blokķēde pasūtīs paziņojumus un apstiprinās tos saskaņā ar noteikumu kopumu, kas cita starpā nodrošina, ka paraksti ir neviltojami un pareizi.

Pretstatā klasiskākajai kriptogrāfijai, kas tiek izmantota blokķēdē, mūsdienu kriptogrāfijas rīku komplekts ietver dažus satriecošus burvju trikus: nulles zināšanu pierādījumus, homomorfu šifrēšanu un daudzpusēju aprēķinu, lai nosauktu tikai dažus. Kā mēs redzējām pēdējo desmit gadu laikā, blokķēdes pētījumi ir ārkārtīgi veicinājuši lietišķo kriptogrāfiju, un nesen ir gūti sasniegumi visās iepriekš minētajās un daudzās citās jomās. 

Šajā rakstā mēs koncentrēsimies uz vienu šādu izrāvienu: efektīvi droši sliekšņa paraksti (TSS).


MPC un sliekšņa paraksta shēma (TSS)

Daudzpartiju aprēķins (MPC) ir kriptogrāfijas nozare, kas aizsākās ar Endrjū K. Jao pamatdarbu gandrīz pirms 40 gadiem. MPC pušu kopa, kas neuzticas viena otrai, mēģina kopīgi aprēķināt funkciju pār saviem ievadiem, vienlaikus saglabājot šīs ievades privātas. 

Piemēram, pieņemsim, ka n uzņēmuma darbinieki vēlas zināt, kurš saņem lielāko atalgojumu, bet neatklājot viens otram savu faktisko algu. Šeit privātie ievadi ir algas, un izvade būs tā darbinieka vārds, kuram ir visaugstākā alga. Veicot šo aprēķinu, izmantojot MPC, mēs iegūstam, ka aprēķina laikā netiek nopludināta pat viena alga. 

Divas galvenās MPC īpašības ir pareizība un privātums:

  • Pareizība: algoritma radītā izvade ir pareiza (kā paredzēts).

  • Konfidencialitāte: vienas puses slepenie ievades dati netiktu nodoti citām pusēm.

Mēs izmantosim MPC, lai aprēķinātu digitālo parakstu izplatītā veidā. Apskatīsim, kā iepriekš minētās īpašības var attiecināt uz parakstiem. Atgādiniet, ka parakstiem mums ir trīs darbības: 

  • Atslēgu ģenerēšana: pirmais solis ir arī vissarežģītākais. Mums ir jāģenerē atslēga, kas būs publiska un tiks izmantota turpmāko parakstu pārbaudei. Taču mums ir arī jāģenerē atsevišķs noslēpums katrai pusei, ko mēs sauksim par slepeno kopīgošanu. Runājot par pareizību un privātumu, mēs sakām, ka funkcija izvadīs vienu un to pašu publisko atslēgu visām pusēm un katrai atšķirīgu slepeno daļu, lai: (1) konfidencialitāte: starp pusēm netiek nopludināti slepeni koplietošanas dati, un (2) pareizība: publiskā atslēga ir slepeno daļu funkcija.

  • Parakstīšana: šī darbība ietver paraksta ģenerēšanas funkciju. Katras puses ievade būs tās slepenā daļa, kas izveidota kā iepriekšējā posma (izdalītās atslēgas ģenerēšanas) izvade. Ir arī visiem zināma publiska ievade, kas ir vēstījums, kas jāparaksta. Izvade būs ciparparaksts, un privātuma īpašums nodrošina, ka aprēķina laikā nenotika slepeno daļu noplūde.

  • Verifikācija: verifikācijas algoritms paliek tāds, kāds tas ir klasiskajā iestatījumā. Lai paraksti būtu saderīgi ar vienas atslēgas parakstiem, ikvienam, kam ir zināšanas par publisko atslēgu, ir jāspēj pārbaudīt un apstiprināt parakstus. Tieši to dara blokķēdes validācijas mezgli.

Paraksta sliekšņa shēma (TSS) ir nosaukums, ko mēs piešķiram šim sadalītās atslēgas ģenerēšanas (DKG) un izplatītās parakstīšanas sliekšņa parakstu shēmas sastāvam.


TSS apvienošana ar blokķēdēm

Dabiskais veids, kā TSS var izmantot blokķēdē, ir mainīt blokķēdes klientu, lai tas ģenerētu atslēgas un parakstus, izmantojot TSS. Šeit mēs izmantojam terminu blockchain klients, lai apzīmētu komandu kopu, ko izpilda pilns mezgls. Praksē TSS tehnoloģija ļauj mums aizstāt visas ar privāto atslēgu saistītās komandas ar sadalītiem aprēķiniem.

Lai to izskaidrotu sīkāk, vispirms īsi aprakstam, kā klasiskajā blokķēdes dizainā tiek veidotas jaunas adreses.  Vienkārši sakot, mēs varam izveidot jaunu adresi, ģenerējot privāto atslēgu un pēc tam izskaitļojot publisko atslēgu no privātās atslēgas. Visbeidzot, blokķēdes adrese tiek iegūta no publiskās atslēgas.

Tagad, izmantojot TSS, mums būtu n pušu kopa, kas kopīgi aprēķina publisko atslēgu, katrai no kurām pieder slepena privātās atslēgas daļa (atsevišķās daļas netiek atklātas pārējām pusēm). No publiskās atslēgas mēs varam iegūt adresi tādā pašā veidā kā tradicionālajā sistēmā, padarot blokķēdi agnostisku attiecībā uz adreses ģenerēšanu. Priekšrocība ir tāda, ka privātā atslēga vairs nav vienīgais kļūmes punkts, jo katrai pusei pieder tikai viena tās daļa. 

To pašu var darīt, parakstot darījumus. Šajā gadījumā tā vietā, lai viena puse parakstītu ar savu privāto atslēgu, mēs veicam sadalītu parakstu ģenerēšanu starp vairākām pusēm. Tātad katra puse var uzrādīt derīgu parakstu, ja vien pietiekami daudz no tām rīkojas godīgi. Atkal mēs pārgājām no lokālā skaitļošanas (viens atteices punkts) uz interaktīvo.

Ir svarīgi pieminēt, ka sadalīto atslēgu ģenerēšanu var veikt tā, lai tiktu izmantotas dažāda veida piekļuves struktūras: vispārīgais iestatījums “t no n” spēs izturēt līdz pat t patvaļīgām kļūmēm ar privāto atslēgu saistītās operācijās, bez apdraudot drošību.


TSS pret Multisig

Dažas blokķēdes piedāvā TSS funkcionalitāti kā programmatūras iebūvētu vai programmējamu daļu. Mēs to saucam par multisig vai vairāku parakstu funkcionalitāti. Lai labāk izprastu atšķirības, mēs varam aplūkot multisig kā TSS blokķēdes lietojumprogrammas slānī.

Citiem vārdiem sakot, gan multisig, gan TSS būtībā cenšas sasniegt līdzīgus mērķus, taču TSS izmanto kriptogrāfiju ārpus ķēdes, savukārt multisig notiek ķēdē. Tomēr blokķēdei ir nepieciešams veids, kā kodēt multisig, kas var kaitēt privātumam, jo ​​piekļuves struktūra (parakstītāju skaits) ir atklāta blokķēdē. Multisig darījuma izmaksas ir augstākas, jo informācija par dažādiem parakstītājiem ir jāpaziņo arī blokķēdē.

TSS parakstītāju informācija tiek apvienota parastā izskatā, samazinot izmaksas un saglabājot privātumu. No otras puses, multisig var būt neinteraktīvs, kas ļauj izvairīties no grūtībām, kas saistītas ar sarežģīta saziņas slāņa palaišanu starp dažādiem parakstītājiem.

Galvenā atšķirība ir tā, ka multisig ir specifisks blokķēdei, un tas ir jāīsteno no jauna katrā blokķēdē, un dažos gadījumos tas netiek atbalstīts vispār. Un otrādi, TSS paļaujas uz tīru kriptogrāfiju, tāpēc atbalsts vienmēr ir iespējams. Lielisku rakstu ar ilustrācijām par atšķirībām var atrast šeit.


TSS vs Shamir slepenā koplietošanas shēma

Shamir slepenā koplietošanas shēma (SSSS) nodrošina veidu, kā privāto atslēgu glabāt izplatītā veidā, lai, kamēr privātā atslēga nedarbojas, tā tiktu glabāta vairākās vietās. Pastāv divas atšķirības starp SSSS un TSS:

  • Atslēgu ģenerēšana: SSSS ir viena puse, ko sauc par “dīleru”, kas ir atbildīga par privātās atslēgas slepeno daļu ģenerēšanu. Tas nozīmē, ka atslēgas ģenerēšanas laikā privātā atslēga tiek ģenerēta vienā vietā un pēc tam izplatītājs to izplata dažādās vietās. TSS nav izplatītāja, jo tā loma ir sadalīta tā, ka pilna privātā atslēga nekad neatrodas vienā vietā.

  • Parakstīšana: SSSS pusēm ir jārekonstruē pilna privātā atslēga, lai parakstītu, kas atkal rada vienu atteices punktu katru reizi, kad ir nepieciešams paraksts. TSS parakstīšana tiek veikta izplatītā veidā, nekad nerekonstruējot slepenās daļas.

Kā redzam, TSS privātā atslēga (kas atspoguļo sistēmas drošību) nekad neatrodas vienā vietā visā tās darbības laikā.


Sliekšņa maki

Maks, kura pamatā ir TSS tehnoloģija, nedaudz atšķiras no tradicionālajiem kriptovalūtas makiem. Parasti parastais maciņš ģenerē sākuma frāzi un izmanto to, lai deterministiski atvasinātu adreses. Lietotājs vēlāk var izmantot šo hierarhisko deterministisko (HD) struktūru, lai 1) sasniegtu privātās atslēgas, kas atbilst maka adresēm, un parakstītu ar tām darījumus, un 2) lai atgūtu visas maka atslēgas, izmantojot sākuma frāzi.

Sliekšņa makā lietas ir sarežģītākas. Lai gan ir iespējams ģenerēt HD struktūru, tās ģenerēšana ir jāaprēķina sadalītā veidā kā cits MPC protokols. Pusēm kopīgi jāizlemj, kāda ir nākamā izmantojamā atslēga. Citiem vārdiem sakot, katrai pusei būs sava sākuma frāze. Sēklu frāzes tiek ģenerētas atsevišķi un nekad netiek apvienotas, lai viena puse viena pati nevarētu iegūt privātās atslēgas no savas sēklas.

Uz TSS balstītiem makiem ir arī jauks drošības līdzeklis, kas nodrošina privātās atslēgas rotāciju, nemainot atbilstošo publisko atslēgu un blokķēdes adresi. Privātās atslēgas rotācija, kas pazīstama arī kā proaktīvā slepenā koplietošana, ir vēl viens MPC protokols, kas izmanto slepenās koplietošanas iespējas un izvada jaunu slepeno koplietojumu kopu. Vecās slepenās daļas var izdzēst un jaunās izmantot tādā pašā veidā.

Šāda struktūra piešķir drošībai laika dimensiju, kas nozīmē, ka uzbrucējam ir jāatrodas vairākās vietās vienlaikus, lai uzbruktu sliekšņa makam. Apvienojot slepenās daļas pirms rotācijas un pēc rotācijas, uzbrucējs nedos papildu spēku, ja viņš vēlas viltot parakstu. 

Šāda veida maka mīnuss ir tāds, ka sākotnējās frāzes trūkums padara to nesaderīgu ar vienas atslēgas maku sistēmām. Tāpēc ir svarīgi apsvērt, kurām pusēm piederēs slepenās akcijas.

Ir dažas iespējamās arhitektūras:

  • TSS ārpakalpojumi: lietotājs ļaus “n” serveriem veikt aprēķinus viņa vārdā. Efektīva atslēgu ģenerēšanas, pārvaldības un parakstīšanas ārpakalpojumi pakalpojumu sniedzējiem, kuri nav aktīvu īpašnieki, bet nodrošina drošības līmeni apmaiņā pret zināmu stimulu.

  • Vairāku ierīču izmantošana: lietotājs palaiž TSS starp sev piederošajām ierīcēm. Piemēram - viena puse būs kāda IoT ierīce, cita puse būs lietotāja mobilais tālrunis, cita puse - klēpjdators utt.

  • Hibrīds: TSS darbosies tā, ka dažas puses kontrolē ārējie pakalpojumu sniedzēji, un dažas puses darbojas lietotājam piederošās ierīcēs.

Pirmā metode izkrauj smago TSS aprēķinu no lietotāja klienta puses. No otras puses, pakalpojumu sniedzēji var sadarboties (pieņemam, ka pietiekami daudz no tiem netiek uzbrukts vienlaikus, bet praksē viņi var) un nozagt lietotāja īpašumus.

Otrā metode sniedz lietotājam pilnīgu kontroli, taču apgrūtina darījumu veikšanu, jo ir nepieciešamas vairākas ierīces, lai izveidotu internetu un iesaistītos TSS aprēķinos.

Trešā iespēja tiek uzskatīta par labāko no abām pasaulēm, jo ​​tā sniedz lietotājam vienkāršu un ātru veidu, kā veikt darījumus, taču neapdraudot darījumu veikšanu bez lietotāja atļaujas.


TSS un viedie līgumi 

Gadu gaitā pētnieki ir atklājuši daudzus digitālo parakstu lietojumus, un daži no tiem ir pārsteidzoši nenozīmīgi. Kā minēts, TSS ir kriptogrāfisks primitīvs, kas var ievērojami palielināt drošību. Blokķēžu kontekstā mēs varam teikt, ka daudzas funkcijas var aizstāt ar TSS balstītu kriptogrāfiju. Decentralizētas lietojumprogrammas, 2. slāņa mērogošanas risinājumus, atomu mijmaiņas, sajaukšanu, mantošanu un daudz ko citu var izveidot, izmantojot TSS sistēmu. Tas galu galā ļautu dārgas un riskantas ķēdes viedo līgumu darbības aizstāt ar lētākām un uzticamākām alternatīvām.

Lai sniegtu dažus konkrētus piemērus: Multi-Hop Locks gudri izmanto divu pušu parakstus, un to var izmantot kā alternatīvu Bitcoin Lightning tīklam ar drošāku un privātāku maksājumu kanālu tīklu. ShareLock, iespējams, ir lētākais Ethereum sajaukšanas risinājums ķēdē, pamatojoties uz viena sliekšņa paraksta pārbaudi.


Riski

Pēdējo pāris gadu laikā ir bijis ievērojams TSS ieviešanas pieaugums. Tomēr kā salīdzinoši jaunai tehnoloģijai tai joprojām ir daži ierobežojumi un bažas. Salīdzinot ar klasisko publiskās atslēgas kriptogrāfiju, TSS protokoli var būt ļoti sarežģīti un vēl nav “pārbaudīti kaujas apstākļos”. Parasti TSS prasa papildu, vājākus kriptogrāfiskus pieņēmumus, salīdzinot ar vienkāršiem ciparparakstiem. Rezultātā tagad tiek atklāti kriptogrāfijas uzbrukuma vektori, kas neeksistēja tradicionālajos iestatījumos (skatiet šo prezentāciju no Breaking Bitcoin Conference 2019). Drošības inženieri un lietišķie kriptogrāfi var palīdzēt droši izvietot TSS jūsu sistēmā.

Pozitīvi ir tas, ka esošās un jaunās ieviešanas kļūst spēcīgākas, jo palielinās kvalitātes ieguldījums, salīdzinošās pārskatīšanas, auditi un algoritmu veiktspējas uzlabojumi.


Noslēguma domas

Šajā rakstā mēs iepazīstinājām ar sliekšņa paraksta shēmas (TSS) pamatiem, kas ir aizraujošs kriptogrāfijas primitīvs, kas var būtiski mainīt veidu, kā mēs izmantojam blokķēdi.

Tā kā šajā rakstā netika apspriests slieksnis ECDSA, ko var izmantot Binance ķēdē un Bitcoin, interesenti var atsaukties uz šo jaunāko rakstu sarakstu. Turklāt, ja vēlaties spēlēt ar dažām TSS ieviešanām, šeit varat atrast kodu divu pušu Binance Chain makam vai izmēģināt ZenGo maku, kurā tiek izmantota hibrīda metode, lai nodrošinātu ar brīvības atņemšanu nesaistītu divu pušu Binance Chain maku.


Papildu lasīšana:

  • Ātra un droša divu pušu ECDSA parakstīšana

  • Ātra un droša vairāku pušu ECDSA ar praktisku sadalītu atslēgu ģenerēšanu un lietojumprogrammām kriptovalūtas glabāšanai

  • Divu pušu ECDSA no Hash Proof Systems un Efficient Instantiation

  • Ātra vairāku pušu sliekšņa ECDSA ar ātru neuzticības iestatīšanu

  • Droša divu pušu sliekšņa ECDSA no ECDSA pieņēmumiem

  • ECDSA slieksnis no ECDSA Assumptions: The Multiparty Case