Paliwanag Tungkol sa Mga Threshold Signature
Home
Mga Artikulo
Paliwanag Tungkol sa Mga Threshold Signature

Paliwanag Tungkol sa Mga Threshold Signature

Advanced
Na-publish Jul 21, 2019Na-update Apr 29, 2021
12m
Ang Threshold Signature Scheme (TSS) ay isang cryptographic primitive para sa distributed key generation at signing. Ang gamit ng TSS sa mga kliyente ng blockchain ay isang bagong halimbawa na makapagbibigay ng maraming benepisyo, lalo na pagdating sa seguridad. Sa mas malawak na pananaw, maaaring maimpluwensyahan ng TSS ang disenyo ng mga sistema ng pangangasiwa ng keys (tulad ng crypto wallets) at manguna sa native support sa DeFi na mga use case. Ang TSS ay isang bagong teknolohiya kaya kailangan ding isaalang-alang ang mga panganib at limitasyon.

Sa artikulong ito, tatalakayin natin kung ano ang TSS, ano ang mga potensyal na benepisyong dinadala nito sa mundo ng blockchain, paano ang implementasyon nito sa isang kliyente ng blockchain, paano ito naikukumpara sa Shamir secret sharing at Multisig, ano ang iba’t ibang paraan ng paggamit ng TSS para sa distributed na pangangasiwa ng keys, at panghuli ay talakayin ang mga panganib at limitasyon.

Ang kapangyarihan ng cryptography

Para maintidihan ang TSS, kinakailangan muna nating magkaroon ng pangunahing kaalaman tungkol sa cryptography. Mula noong 1970s, parami na nang paraming mga sistema ng Internet (tulad ng TLS at PGP) ang gumamit ng asymmetric cryptography, na kilala rin bilang Public key cryptography (PKC). Gumagamit ng dalawang keys ang PKC: isang public at isang private. Habang hindi sikreto at maaaring ipakita at gamitin ng sinuman ang public key, ang private key naman ay isang piraso ng sikretong impormasyon na kumakatawan sa seguridad ng sistema.
Ang Encryption at digital signatures ang dalawa sa mga pinaka-karaniwang gamit ng PKC. Parehong umaasa ang encryption at digital signatures schemes sa mga set ng tatlong algorithm. Una ay ang pagbuo ng pares ng private at public key, pangalawa ang pagbuo ng ciphertext/signature, at pangatlo ang proseso ng decryption/verification. Pagdating sa digital signatures, kinakailangan ng signing algorithm ang private key, na ang may-ari lamang ang nakakaalam, na gumawa ng natatanging signature. Ang signature ay ididikit sa isang mensahe sa paraang mabeberipika ng sinumang may hawak ng public key ang pagiging tunay at wasto nito.


Blockchain

Walang duda na isang makapangyarihang teknolohiya ang blockchain. Nagbibigay ito ng consensus layer na nag-aayos at nagtatala ng mga kaganapan. Ang ganitong imprastraktura ay nagbibigay sa ating mga user ng potensyal na kapangyarihan para makabuo ng decentralized na ekonomiya at maging gobyerno. Ang cryptography na kinakailangan para mapatakbo ang isang simpleng blockchain ay maaaring ibase lamang sa digital signatures. Sa konteksto ng isang blockchain, ang mga private key ay kumakatawan sa mga identidad habang ang signature ay isang pampublikong statement o claim na ginagawa ng isang identidad. Ang blockchain ang mag-aayos ng mga statement at patutunayan ito ayon sa listahan ng mga panuntunan na siyang titiyak sa ilang mga bagay kabilang na ang pagiging tama at natatangi ng mga signature.
Salungat sa mas classical na cryptography na ginagamit sa blockchain, kabilang sa modernong cryptographic toolbox ang ilang nakamamanghang magic tricks; zero-knowledge proofs, homomorphic encryption, at multi-party computation. Tulad sa nakita natin sa nakalipas na dekada, ang pagsaliksik sa blockchain ang mabigat na nagtulak sa applied cryptography, kung saan nagkaroon ng malaking progreso sa lahat ng nabanggit at sa marami pang iba. 

Sa artikulong ito, nakatuon ang ating pansin sa isang halimbawa ng nasabing progreso: mahusay at ligtas na threshold signatures (TSS).


Ang MPC at ang threshold signature scheme (TSS)

Ang multi-party computation (MPC) ay isang sangay ng cryptography na nagsimula sa matagumpay na gawa ni Andrew C. Yao, halos 40 taon na ang nakalipas. Sa MPC, ang isang grupo ng mga partido na hindi nagtitiwala sa isa’t isa ay susubok na magkasamang i-compute ang functions sa kanilang mga input habag pinapanatiling pribado ang mga input na ito. 

Bilang halimbawa, ipagpalagay nating gustong malaman ng “n” na empleyado ng isang kumpanya kung sino ang may pinakamataas na sahod nang hindi ipinapakita sa isa’t isa ang kanilang aktwal na sahod. Dito, ang private inputs ang kanilang mga sahod at ang output ay ang pangalan ng empleyado na may pinakamataas na sahod. Sa pagsasagawa ng computation na ito gamit ang MPC, wala ni isang sahod ang mabubunyag sa computation. 

Ang dalawang pangunahing katangian ng MPC ay pagiging wasto at pagiging pribado:

  • Pagiging tama: ang output na nagagawa ng algorithm ay tama (gaya ng inaasahan).

  • Privacy: ang sikretong input na datos na hinahawakan ng isang partido ay hindi maibubunyag sa ibang mga partido.

Gagamitin natin ang MPC para ma-computed ang digital signature sa distributed na paraan. Tignan natin kung paano magagamit sa signatures ang mga katangiang nabanggit sa itaas. Alalahanin na para sa mga signature, mayroon tayong tatlong mga hakbang: 

  • Key Generation: ang unang hakbang ang pinaka-komplikado. Kinakailangan nating makabuo ng key na bukas sa publiko at magagamit para maberipikia ang signatures sa hinaharap. Ngunit, kailangan din nating bumuo ng indibidwal na sikreto para sa bawat partido, na tatawagin nating secret share. Pagdating sa pagiging tama at pribado, masasabi natin na ang function ay magbibigay ng output na public key na pareho sa lahat ng partido, at ang magkakaibang secret share para sa bawat isa para: (1) pagiging pribado: walang secret shares na mga datos ang nailalantad sapagitan ng mga partido, at (2) pagiging tama: ang public key ay isang function ng mga secret share.

  • Pag-sign: ang hakbang na ito ay may kinalaman sa signature generation function. Ang input sa bawat partido ay ang magsisilbi nitong secret share, binuo bilang output sa naunang hakbang (pagbuo ng distributed key). Mayroon ding pampublikong input na alam ng lahat, at ito ang mensaheng kinakailangang i-sign. Ang magiging output ay isang digital signature, at ang katangian nitong na pagiging pribado ang titiyak na walang paglantad ng secret shares na nagaganap sa kasagsagan ng computation.

  • Beripikasyon: ang beripikasyon na algorithm ay nananatiling pareho sa kung ano ito sa classical setting. Para maging compatible sa single key signatures, ang lahat ng nakakaalam sa public key ay dapat may kakayahang makapagberipika at makapagpatunay ng mga signature. Ito ang eksaktong ginagawa ng blockchain validating nodes.

Ang threshold signature scheme (TSS) ang pangalan na ibinibigay natin sa ganitong komposisyon ng distributed key generation (DKG) at distributed na signing ng threshold signature scheme.


Pagsasama ng TSS sa blockchains

Ang natural na paraan kung saan magagamit ang TSS sa isang blockchain ay sa pamamagitan ng pagpapalit ng blockchain client para makabuo ng keys at signatures gamit ang TSS. Dito, ginagamit natin ang terminong blockchain client para tukuyin ang set ng commands na isinasagawa ng isang full node. Nakagawian na pinahihintulutan tayo ng teknolohiyang TSS napalitan ng distributed computations ang lahat ng private key na may kaugnayan sa commandds.

Para sa mas detalyadong paliwanag, simulan natin sa maikling paglalarawan kung paano nakagagawa ng bagong mga address sa classical na disenyo ng blockchain.  Sa madaling sabi, maari tayong makagawa ng bagong address sa pamamagitan ng pagbuo ng private key, at pag-compute ng public key mula sa private key. Panghuli, ang blockchain address ay kinukuha mula sa public key.

Ngayon, gamit ang TSS, magkakaroon tayo ng set ng “n” na mga partido na magkasamang nagko-compute sa public key, ang bawat isa ay may hawak na secret share ng private key (ang mga indibidwal na share ay hindi inilalantad sa ibang mga partido). Mula sa public key, maaari nating ma-derive ang address sa paraang pareho sa tradisyonal na sistema, kaya nagiging agnostic ang blockchain sa kung paano nabubuo ang address. Ang benepisyo nito ay hindi na single point of failure ang private key dahil ang bawat partido ay hawak lamang ang isang bahagi nito. Ang benepisyo nito ay hindi na single point of failure ang private key dahil ang bawat partido ay hawak lamang ang isang bahagi nito.  

Magagawa din ang pareho sa pag-sign ng mga transaksyon. Sa kasong ito, imbes na isang partido lamang ang nag-sign ng kanilang private key, magpapatakbo tayo ng distributed na pagbuo ng signature sa pagitan ng iba’t ibang partido. Kaya ang bawat partido ay makagagawa ng valid na signature hanggat may sapat na bilang sa kanila ang kumikilos nang tapat. Muli, lumipat tayo mula sa lokal na computation (single point of failure) papunta sa interactive na computation.

Mahalagang banggitin na ang distributed key generation ay magagawa sa paraang pinapayagan ang iba’t ibang uri ng access na istruktura: ang pangakaraniwang “t out of n” na setting ay makatatagal sa t arbitrary failures sa mga operasyong may kinalaman sa private key, nang hindi nakokompromiso ang seguridad.


TSS kumpara sa Multisig

Ang ibang blockchain ay nag-aalok ng TSS na functionality bilang built-in o programmable na bahagi ng software. Tinatawag nating multisig o multi-signature ang functionality na ito. Para mas maintidihan ang mga pagkakaiba, maari nating tignan ang multisig bilang isang TSS sa application layer ng blockchain.

Sa ibang paliwanag, parehong sinusubukan ng multisig at TSS na makamit ang parehong mga layunin, ngunit off-chain na gumagamit ng cryptography and TSS, habang on-chain naman nagaganap ang multisig. Ganunpaman, kinakailangan ng blockchain ng paraan para mag-encode ng multisig, na maaaring makapahamak sa pagiging pribado nito dahil ang istruktura ng access (bilang ng signers) ay mailalantad sa blockchain. Ang gastos sa multisig na transaksyon ay mas malaki dahil ang mga impormasyon sa iba’t ibang signer ay kinakailangan ng komunikasyon sa blockchain.

Sa TSS, ang mga detalye ng mga signer ay nakatiklop sa isang regular na looking transaction, kaya napapababa ang gastos at napapanatili ang pagiging pribado. Sa kabilang banda, maaaring hindi maging interactive ang multisig, kaya naiiwasan ang abala sa pagpapatakbo ng komplikadong layer ng komunikasyon sa pagitan ng iba’t ibang mga signer.

Ang pangunahing punto ng pagkakaiba ay blockchain-specific ang multisig at kinakailangan itong muling iimplementa sa bawat blockchain, at sa ibang kaso, ay talagang hindi sinusuportahan. Salungat nito, nakaasa naman ang TSS sa cryptography, kaya’t laging posible ang suporta. Matatagpuan dito ang isang magandang artikulo na may paglalarawan sa mga pagkakaiba.


TSS kumpara sa Shamir secret sharing scheme

Ang Shamir secret sharing scheme (SSSS) ay nagbibigay ng paraan para magtago ng private key sa isang distributed na paraan para habang nakapahinga ang private key, naitatago ito sa iba’t ibang lokasyon. May dalawang pagkakaiba ang SSSS at TSS:

  • Pagbuo ng key: sa SSSS, may nag-iisang partidong tinatawag na “the dealer” na siyang namumuno sa pagbuo ng mga private key secret shares. Nangangahulugan ito na sa oras ng pagbuo ng key, ang private key ay nabubuo sa isang lokasyon at saka ipinapakalat ng dealer sa iba’t ibang mga lokasyon. Sa TSS, walang dealer dahil ang papel nito ay distributed kaya ang buong private key ay wala sa iisang lokasyon.

  • Pag-sign: sa SSSS, ang mga partido ay dapat muling buuin ang buong private key para maka-sign, na nagreresulta pa rin sa single point of failure tuwing kinakailangan ng signature. Sa TSS, ang signing ay ginagawa sa distributed na paraan nang hindi muling binubuo ang secret shares.

Makikita natin ngayon na sa TSS, ang private key (na kumakatawan sa seguridad ng sistema) ay hindi kailanman nasa iisang lokasyon sa tanan ng kanyang buhay.


Mga Threshold wallet

Ang wallet na base sa TSS technology ay bahagyang naiiba sa tradisyonal na cryptocurrency wallets. Madalas, ang conventional wallet ay bumubuo ng seed phrase at ginagamit ito para makuha ang mga address sa deterministic na paraan. Maaaring kalaunan ay gamitin ng user ang hierarchical deterministic (HD) na istruktura para 1) maabot ang private keys na katumbas ng mga wallet address at mag-sign ng mga transaksyon gamit ang mga ito, at 2) mabawi ang wallet keys gamit ang seed phrase.

Sa isang threshold wallet, mas komplikado ang mga bagay. Bagamat posible na makabuo ng HD na istruktura, ang pagbuo nito ay dapat ma-compute sa distributed na paraan, bilang isang MPC protocol. Ang mga partido ay kinakailangang magkasamang magpasya sa kung ano ang susunod na gagamiting key. Sa ibang salita, ang bawat partido ay magkakaroon ng sarili nitong seed phrase. Ang mga seed phrase ay magkakahiwalay na binuo at hindi kailanman pagsasamahin para ang isang partido ay makakuha ng private keys mula sa seed kahit mag-isa lang nito.

May maganda ring katangian sa seguridad ang TSS-based wallets na nagbibigay-daan sa private key rotation nang hindi binabago ang katumbas na public key at blockchain address. Ang private key rotation, na kilala rin bilang proactive secret sharing, ay isa na namang MPC protocol na kumukuha ng secret share bilang input, at ginagawang output ang bagong set ng secret shares. Ang lumang secret shares ay maaaring i-delete at ang mga bago ay magagamit sa parehong paraan.

Ang ganitong istruktura ay nagdadagdag ng oras bilang panukat sa seguridad, nangangahulugan ito na ang attacker ay dapat nasa iba’t ibang lokasyon sa parehong oras para maatake ang threshold wallet. Ang pagsasama ng secret shares bago at pagkatapos ng rotation ay walang ibibigay na kapangyarihan sa attacker kung gusto nilang gayahin ang signature. 

Isang limitasyon ng ganitong uri ng walet ay ang kakulangan sa seed phrase kaya hindi ito nababagay sa single-key wallet na mga sistema. Kaya mahalagang isaalang-alang kung anong mga partido ang hahawak ng secret shares.

May ilang posibleng arkitektura:

  • Pag-outsource ng TSS: pahihintulutan ng user ang “n” servers na patakbuhin ang computation kapalit nila. Ang epektibong pag-outsource ng key generation, management at signing sa service providers na hindi nagmamay-ari ng asset ngunit nagbibigay ng seguridad kapalit ng ilang insentibo.

  • Paggamit ng iba’t ibang mga device. Patatakbuhin ng user ang TSS sa pagitan ng mga device na pag-aari nila. Halimbawa, ang isang partido ay ang ilang IoT device, ang isang partido ay ang user mobile, habang ang isang partido ay ang kanilang laptop, at iba pa.

  • Hybrid: Tatakbo ang TSS sa paraang kontrolado ang ibang partido ng mga service provider sa labas at ang ibang partido ay tumatakbo sa mga user-owned na device.

Ang unang paraan ay nagpapagaan sa mabigat na TSS computation mula sa panig ng user client. Sa kabilang banda, ang mga service provider ay maaaring magkuntsaba (ipinagpapalagay nating sapat sa kanila ay hindi naatake sa parehong oras, ngunit sa totoong buhay ay maaaring mangyari) at magnakaw ng mga asset ng mga user.

Ang ikalawang paraan ay nagbibigay sa user ng ganap na kontrol ngunit ginagawa nitong matrabaho ang pagsasagawa ng mga transaksyon dahil kinakailangan ng iba’t ibang mga device para makapag-online at makalahok sa TSS computation.

Ang ikatlong pagpipilian ay itinuturing na best of both worlds dahil nagbibigay ito sa user ng madali at mabilis na paraan para magsagawa ng mga transaksyon ngunit hindi naisasakryipsyo ang pagsasagawa ng mga transaksyon nang walang pahintulot ng user.


Ang TSS at mga smart contract 

Sa mga nakalipas na taon, nakakita ang mga mananaliksik ng maraming gamit para sa digital signatures, at ang iba ay nakamamanghang may malaking halaga. Tulad ng nabanggit, ang TSS ay isang cryptographic primitive na maaaring malaki ang maidadagdag sa seguridad. Sa konteksto ng mga blockchain, maaari nating sabihin na maraming functionalities ang maaaring palitan ng TSS-based cryptography. Ang mga decentralized application, layer 2 scaling solutions, atomic swaps, mixing, inheritance, at marami pang iba ay maaaring buuin sa itaas ng isang TSS framework. Magbibigay daan ito kalaunan para palitan ang magastos at mapanganib na on-chain smart contract operations na papalitan ng mas mura at mas maaasahang alternatibo.
Para makapagbigay ng konkretong mga halimbawa: gumagamit ang Multi-Hop Locks ng two-part signatures sa isang matalinong paraan at magagamit bilang alternatibo sa Bitcoin lightning network na may mas ligtas at pribadong payment channel network. Maaaring ang ShareLock ang pinakamurang on-chain mixing na solusyon para sa Ethereum, base sa beripikasyon ng isang threshold signature.


Mga panganib

Sa nakalipas na ilang taon, nagkaroon ng malaking pagtaas sa implementasyon ng TSS. Ganunpaman, bilang bagong teknolohiya, mayroon pa rin itong mga limitasyon at pagkabahala. Kumpara sa classic na public key cryptography, ang mga TSS protocol ay nagiging kumplikado at kinakailangan pang “isabak sa giyera.” Madalas, nangangailangan ang TSS ng karagdagan at mas mahinang cryptographic assumptions kumpara sa simpleng digital signatures. Ilang resulta, ang mga cryptographic attack vector na wala sa mga tradisyonal na setup ay nadidiskubre na ngayon (tignan ang presentation na ito mula sa Breaking Bitcoin Conference 2019). Ang mga security engineer at applied cryptographer ay ligtas na makapagbibigay ng gabay sa paggamit ng TSS sa iyong sistema.

Sa positibong pananaw, ang mga umiiral at bagong implementasyon ay nagiging mas malakas dahil sa pagtaas ng kalidad ng mga kontribusyon, peer review, audits, at pag-unlad sa algorithmic performance.


Pangwakas na ideya

Sa artikulong ito, ipinakilala natin ang mga pangunahing kaalaman tungkol sa threshold signature scheme (TSS), na isang nakamamanghang cryptographic primitive na may potensyal na baguhin nang malaki ang paraan ng paggamit natin ng blockchain.

Dahil hindi tinalakay ng artikulong ito ang Threshold ECDSA na maaaring magamit sa Binance Chain at Bitcoin, ang mga interesado ay maaaring tumingin sa mga sumusunold na listahan ng mga akda. Dagdag pa rito, kung nais mong paglaruan ang ilang TSS implementation, makikita mo ang code para sa two-part Binance Chain wallet dito o subukan ang ZenGo wallet na gumagamit ng hybrid na paraan para paunlarin ang non-custodial two-party Binance Chain wallet.


Iba pang babasahin: