Èske li posib pou jenere nimewo o aza si nou pa fè konfyans youn ak lòt? Pati 1

Hey Habr!

Nan atik sa a mwen pral pale sou jenerasyon nimewo pseudo-o aza pa patisipan yo ki pa fè konfyans youn ak lòt. Kòm nou pral wè anba a, mete ann aplikasyon yon "prèske" bon dèlko se byen senp, men yon trè bon se difisil.

Poukisa li ta nesesè pou jenere nimewo o aza nan mitan patisipan yo ki pa fè konfyans youn ak lòt? Yon zòn aplikasyon se aplikasyon desantralize. Pou egzanp, yon aplikasyon ki aksepte yon parye nan men yon patisipan epi swa double kantite lajan an ak yon pwobabilite 49% oswa retire ak yon pwobabilite 51% ap travay sèlman si li ka san patipri resevwa yon nimewo o aza. Si yon atakè ka enfliyanse rezilta dèlko nimewo o aza a, e menm yon ti kras ogmante chans pou li resevwa yon peman nan aplikasyon an, li pral fasilman devaste li.

Lè nou desine yon pwotokòl jenerasyon nimewo o aza distribiye, nou vle li gen twa pwopriyete:

  1. Li dwe san patipri. Nan lòt mo, pa gen okenn patisipan ta dwe nan okenn fason enfliyanse rezilta a nan dèlko a nimewo o aza.

  2. Li dwe enprevizib. Nan lòt mo, pa gen okenn patisipan ta dwe kapab predi ki nimewo yo pral pwodwi (oswa dedwi nenpòt nan pwopriyete li yo) anvan li te pwodwi.

  3. Pwotokòl la dwe solid, se sa ki, rezistan a lefèt ke yon sèten pousantaj nan patisipan yo dekonekte nan rezo a oswa fè espre eseye sispann pwotokòl la.

Nan atik sa a nou pral gade de apwòch: RANDAO + VDF ak apwòch la kòd efase. Nan pwochen pati a, nou pral egzamine an detay apwòch ki baze sou siyati papòt la.

Men, anvan, ann gade nan yon algorithm senp ak souvan itilize ki solid, enprevizib, men partial.

RANDAO

RANDAO se yon apwòch trè senp ak Se poutèt sa byen souvan itilize nan jenere owaza. Tout patisipan rezo yo premye chwazi lokalman yon nimewo pseudo-random, Lè sa a, chak patisipan voye yon hash nan nimewo yo chwazi a. Apre sa, patisipan yo chak vire revele nimewo yo chwazi yo epi fè yon operasyon XOR sou nimewo yo revele, epi rezilta operasyon sa a vin rezilta pwotokòl la.

Etap nan pibliye hashes yo anvan revele nimewo yo nesesè pou atakè a pa ka chwazi nimewo li apre li te wè nimewo yo nan lòt patisipan yo. Sa a ta pèmèt l 'nan nòmalman yon sèl-handedly detèmine pwodiksyon an nan dèlko a nimewo o aza.

Pandan pwotokòl la, patisipan yo bezwen pran yon desizyon komen (sa yo rele konsansis) de fwa: lè yo kòmanse revele nimewo yo chwazi yo, ak Se poutèt sa sispann aksepte hashes, ak lè yo sispann aksepte nimewo yo chwazi yo ak kalkile o aza ki kapab lakòz. nimewo. Pran desizyon sa yo ant patisipan yo ki pa fè konfyans youn nan lòt se pa yon travay fasil nan tèt li, epi nou pral retounen nan li nan atik lavni; nan atik sa a nou pral asime ke yon algorithm konsansis sa a disponib pou nou.

Kilès nan pwopriyete nou dekri pi wo a RANDAO genyen? Li se enprevizib, gen menm vitalite ak pwotokòl konsansis kache a, men li se partial. Espesyalman, yon atakè ka obsève rezo a, epi apre lòt patisipan yo revele nimewo yo, li ka kalkile XOR yo, epi deside si ou pa revele nimewo li a pou enfliyanse rezilta a. Pandan ke sa a anpeche atakè a soti nan yon sèl-men detèmine pwodiksyon an nan dèlko nimewo o aza a, li toujou ba l '1 ti jan nan enfliyans. Men, si atakè yo kontwole plizyè patisipan, Lè sa a, kantite Bits yo kontwole yo pral egal a kantite patisipan yo anba kontwòl yo.

Èske li posib pou jenere nimewo o aza si nou pa fè konfyans youn ak lòt? Pati 1

Enfliyans atakè yo ka redwi anpil lè yo mande patisipan yo revele nimewo yo nan lòd. Lè sa a, atakè a pral kapab enfliyanse rezilta a sèlman si li louvri dènye. Pandan ke enfliyans nan siyifikativman mwens, algorithm la toujou patipri.

RANDAO+VDF

Youn nan fason yo fè RANDAO san patipri se sa a: apre yo fin revele tout nimewo yo epi yo kalkile XOR la, rezilta li yo antre nan opinyon yon fonksyon, ki pran yon tan trè long pou kalkile, men pèmèt ou tcheke kòrèkteman an. kalkil trè vit.

(vdf_output, vdf_proof) = VDF_compute(input) // это очень медленно
correct = VDF_verify(input, vdf_output, vdf_proof) // это очень быстро

Fonksyon sa a rele Fonksyon Reta Verifikabl, oswa VDF. Si kalkile rezilta final la pran plis tan pase etap divilgasyon nimewo a, Lè sa a, atakè a pa pral kapab predi efè a nan montre oswa kache nimewo li, ak Se poutèt sa li pral pèdi opòtinite pou enfliyanse rezilta a.

Devlope bon VDF trè difisil. Te gen plizyè zouti dènyèman, pa egzanp. sa a и sa a, ki te fè VDF plis pratik nan pratik, ak Ethereum 2.0 plan yo sèvi ak RANDAO ak VDF kòm yon sous nimewo o aza nan tèm long la. Apa de lefèt ke apwòch sa a se enprevizib ak san patipri, li gen plis avantaj pou yo ka solid si omwen de patisipan yo disponib sou rezo a (si nou sipoze pwotokòl konsansis yo itilize a se solid lè w ap fè fas ak yon ti kantite patisipan).

Pi gwo defi nan apwòch sa a se mete kanpe VDF a konsa ke menm yon patisipan ki gen pyès ki nan konpitè espesyalize trè chè pa pral kapab kalkile VDF a anvan fen faz dekouvèt la. Idealman, algorithm la ta dwe menm gen yon maj sekirite enpòtan, di 10x. Figi ki anba a montre yon atak pa yon aktè ki gen yon ASIC espesyalize ki pèmèt li kouri yon VDF pi vit pase tan ki resevwa pou revele konfimasyon RANDAO a. Yon patisipan konsa ka toujou kalkile rezilta final la lè l sèvi avèk nimewo li oswa ou pa sèvi ak nimewo li, epi answit, dapre kalkil la, chwazi si yo montre li oswa ou pa.

Èske li posib pou jenere nimewo o aza si nou pa fè konfyans youn ak lòt? Pati 1

Pou fanmi VDF mansyone pi wo a, pèfòmans yon ASIC devwe ka 100+ fwa pi wo pase pyès ki nan konpitè konvansyonèl yo. Se konsa, si faz divilgasyon an dire 10 segonn, Lè sa a, VDF la kalkile sou yon ASIC konsa dwe pran plis pase 100 segonn gen yon maj sekirite 10x, e konsa menm VDF la kalkile sou pyès ki nan konpitè komodite dwe pran 100x 100 segonn = ~ 3 èdtan.

Fondasyon Ethereum planifye pou rezoud pwoblèm sa a lè li kreye pwòp ASIC gratis li yo ki disponib pou piblik la. Yon fwa sa rive, tout lòt pwotokòl kapab tou pwofite teknoloji sa a, men jiska lè sa a apwòch RANDAO + VDF pa pral osi solid pou pwotokòl ki pa ka envesti nan devlope pwòp ASIC yo.

Anpil atik, videyo ak lòt enfòmasyon sou VDF yo te kolekte sou sit sa a.

Nou itilize kòd efase

Nan seksyon sa a, nou pral gade nan yon pwotokòl jenerasyon nimewo o aza ki itilize efase kòd. Li ka tolere jiska ⅓ atakè pandan y ap rete solid, epi li pèmèt jiska ⅔ atakè egziste anvan yo ka predi oswa enfliyanse rezilta a.

Lide prensipal la nan pwotokòl la se jan sa a. Pou senplisite, an n sipoze ke gen egzakteman 100 patisipan yo. Ann sipoze tou ke tout patisipan lokalman gen kèk kle prive, epi tout patisipan yo konnen kle piblik tout patisipan yo:

  1. Chak patisipan lokalman vini ak yon fisèl long, kraze li an 67 pati, kreye kòd efase pou jwenn 100 pataje konsa ke nenpòt 67 yo ase pou refè fisèl la, bay chak nan 100 aksyon yo nan youn nan patisipan yo, epi ankripte yo ak kle piblik menm patisipan an. Lè sa a, tout pataje kode yo pibliye.

  2. Patisipan yo sèvi ak yon kalite konsansis pou jwenn akò sou seri kode soti nan 67 patisipan espesifik yo.

  3. Yon fwa yo rive nan konsansis, chak patisipan pran aksyon kode yo nan chak nan 67 seri kode ak kle piblik yo, dechifre tout aksyon sa yo, epi pibliye tout aksyon dechifre sa yo.

  4. Yon fwa 67 patisipan yo fin ranpli etap (3), tout seri yo te dakò yo ka konplètman dekode ak rekonstwi akòz pwopriyete yo nan kòd efase, epi yo ka jwenn nimewo final la kòm yon XOR nan ranje inisyal yo ke patisipan yo te kòmanse ak nan (1) .

Èske li posib pou jenere nimewo o aza si nou pa fè konfyans youn ak lòt? Pati 1

Yo ka montre pwotokòl sa a san patipri ak enprevizib. Nimewo o aza ki kapab lakòz yo detèmine apre yo rive jwenn konsansis, men pèsonn pa konnen jiskaske ⅔ nan patisipan yo dekode pati yo ankripte ak kle piblik yo. Kidonk, yo detèmine nimewo o aza a anvan yo pibliye enfòmasyon ki ase pou rekonstwi li.

Kisa k ap pase si nan etap (1) youn nan patisipan yo voye pataje kode bay lòt patisipan yo ki pa kòd efase kòrèk pou kèk fisèl? San okenn chanjman adisyonèl, diferan patisipan yo pral swa pa kapab refè fisèl la ditou, oswa yo pral refè diferan fisèl, ki pral lakòz diferan patisipan yo resevwa yon nimewo o aza diferan. Pou anpeche sa a, ou ka fè sa ki annapre yo: chak patisipan, anplis pataje yo kode, tou kalkile Merkla pye bwa tout aksyon sa yo, epi voye chak patisipan alafwa pataje kode tèt li ak rasin pye bwa Merkle a, ak prèv enklizyon pati nan pye bwa Merkle a. Nan konsansis nan etap (2), patisipan yo Lè sa a, pa jis dakò sou yon seri ansanm, men sou yon seri rasin espesifik nan pye bwa sa yo (si kèk patisipan devye nan pwotokòl la, epi voye diferan rasin pye bwa Merkle bay patisipan diferan, ak de rasin sa yo montre pandan konsansis, li ranje a pa enkli nan seri rezilta a). Kòm yon rezilta nan konsansis la, nou pral gen 67 liy kode ak rasin ki koresponn nan pye bwa a Merkle konsa ke gen omwen 67 patisipan (pa nesesèman menm moun ki pwopoze liy ki koresponn yo), ki moun ki pou chak nan 67 liy yo gen. yon mesaj ki gen yon pati nan kòd la efase, ak yon prèv ensidan an nan pataje yo nan pye bwa ki koresponn lan fennen.

Lè nan etap (4) patisipan an dechifre 67 bat pou yon sèten fisèl epi li eseye rekonstwi fisèl orijinal la nan men yo, youn nan opsyon yo posib:

  1. Se fisèl la retabli, epi si li Lè sa a, efase-kode ankò, epi pye bwa Merkle a kalkile pou aksyon yo kalkile lokalman, rasin lan kowenside ak youn nan ki konsansis yo te rive jwenn.

  2. Ranje a retabli, men rasin nan kalkile lokalman pa matche ak youn nan ki konsansis te rive jwenn.

  3. Ranje a pa retabli.

Li fasil pou montre ke si opsyon (1) te rive pou omwen yon patisipan anlè a, alò opsyon (1) te rive pou tout patisipan yo, ak vis vèrsa, si opsyon (2) oswa (3) te rive pou omwen yon patisipan, lè sa a pou tout patisipan opsyon (2) oswa (3) pral rive. Kidonk, pou chak ranje nan seri a, swa tout patisipan yo pral refè li avèk siksè, oswa tout patisipan yo ap echwe pou refè li. Nimewo o aza ki kapab lakòz se yon XOR nan ranje sèlman patisipan yo te kapab refè.

Siyati papòt

Yon lòt apwòch nan o aza se sèvi ak sa yo rele siyati papòt BLS. Yon dèlko nimewo o aza ki baze sou siyati papòt gen egzakteman menm garanti ak algorithm ki baze sou kòd efase ki dekri pi wo a, men li gen yon kantite asymptotic siyifikativman pi ba nan mesaj yo voye sou rezo a pou chak nimewo pwodwi.

Siyati BLS yo se yon konsepsyon ki pèmèt plizyè patisipan kreye yon siyati komen pou yon mesaj. Siyati sa yo souvan itilize pou ekonomize espas ak Pleasant pa mande plizyè siyati yo voye. 

Yon aplikasyon komen pou siyati BLS nan pwotokòl blockchain, anplis de jenere nimewo o aza, se siyati blòk nan pwotokòl BFT. Ann di 100 patisipan kreye blòk, epi yon blòk konsidere kòm final si 67 nan yo siyen li. Yo tout ka soumèt pati yo nan siyati BLS la epi sèvi ak kèk algorithm konsansis pou yo dakò sou 67 nan yo epi apresa rantre yo nan yon sèl siyati BLS. Nenpòt 67 (oswa plis) pati ka itilize pou kreye siyati final la, ki pral depann de ki 67 siyati yo te konbine epi kidonk ka varye, byenke chwa diferan pa 67 patisipan yo pral kreye yon siyati diferan, nenpòt siyati sa yo pral valab. siyati pou blòk la. Lè sa a, patisipan ki rete yo sèlman bezwen resevwa ak verifye yon sèl siyati pou chak blòk, olye pou yo 67, sou rezo a, ki siyifikativman diminye chaj la sou rezo a.

Li sanble ke si kle prive yo ke patisipan yo itilize yo pwodwi nan yon sèten fason, Lè sa a, pa gen pwoblèm ki 67 siyati (oswa plis, men pa mwens) yo rasanble, siyati ki kapab lakòz yo pral menm bagay la. Sa a ka itilize kòm yon sous owaza: patisipan yo dabò dakò sou kèk mesaj ke yo pral siyen (sa a ta ka pwodiksyon an nan RANDAO oswa jis hash la nan dènye blòk la, li pa vrèman enpòtan osi lontan ke li chanje chak fwa. epi li konsistan) epi kreye yon siyati BLS pou li. Rezilta jenerasyon an pral enprevizib jiskaske 67 patisipan yo bay pati yo, epi apre sa pwodiksyon an deja predetèmine epi yo pa ka depann sou aksyon yo nan nenpòt ki patisipan.

Apwòch sa a nan o aza se solid osi lontan ke omwen ⅔ nan patisipan yo sou entènèt tou de swiv pwotokòl la, epi li se san patipri ak enprevizib osi lontan ke omwen ⅓ nan patisipan yo swiv pwotokòl la. Li enpòtan pou sonje ke yon atakè ki kontwole plis pase ⅓ men mwens pase ⅔ nan patisipan yo ka sispann pwotokòl la, men li pa ka predi oswa enfliyanse pwodiksyon li yo.

Siyati papòt tèt yo se yon sijè trè enteresan. Nan dezyèm pati a nan atik la, nou pral analize an detay ki jan yo travay, ak ki jan egzakteman li nesesè jenere kle patisipan yo pou ke siyati papòt yo ka itilize kòm yon dèlko nimewo o aza.

Nan konklizyon

Atik sa a se premye nan yon seri de atik blog teknik Toupre. NEAR se yon pwotokòl blockchain ak platfòm pou devlope aplikasyon desantralize ak yon anfaz sou fasilite nan devlopman ak fasilite pou itilize pou itilizatè fen yo.

Kòd pwotokòl la louvri, aplikasyon nou an ekri nan Rust, li ka jwenn isit la.

Ou ka wè ki devlopman pou NEAR sanble ak eksperyans nan IDE sou entènèt la isit la.

Ou ka swiv tout nouvèl yo an Ris nan gwoup telegram ak gwoup sou VKontakte, ak an angle nan ofisyèl la twitter.

A nou byento!

Sous: www.habr.com

Add nouvo kòmantè