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

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

Hey Habr!

В premye pati a Nan atik sa a, nou te diskite poukisa li ta ka nesesè pou jenere nimewo o aza pou patisipan yo ki pa fè konfyans youn nan lòt, ki kondisyon yo mete devan pou jeneratè nimewo o aza sa yo, epi konsidere de apwòch nan aplikasyon yo.

Nan pati sa a nan atik la, nou pral pran yon gade pi pre nan yon lòt apwòch ki itilize siyati papòt.

Yon ti kras nan kriptografik

Yo nan lòd yo konprann ki jan siyati papòt travay, ou bezwen konprann yon ti kras kriptografi debaz. Nou pral sèvi ak de konsèp: eskalè, oswa tou senpleman nimewo, ke nou pral endike ak lèt ​​miniskil (x, y) ak pwen sou koub eliptik la, ke nou pral endike ak lèt ​​majiskil.

Pou konprann Basics yo nan siyati papòt, ou pa bezwen konprann ki jan koub eliptik travay, lòt pase kèk bagay debaz:

  1. Pwen sou yon koub eliptik ka ajoute epi miltipliye pa yon eskalè (nou pral endike miltiplikasyon pa yon eskalè kòm xG, byenke notasyon an Gx tou souvan itilize nan literati a). Rezilta adisyon ak miltiplikasyon pa yon eskalè se yon pwen sou yon koub eliptik.

  2. Konnen sèlman pwen an G ak pwodwi li yo ak yon eskalè xG pa ka kalkile x.

Nou pral sèvi ak konsèp nan yon polinòm tou P (x) degre k-1. An patikilye, nou pral sèvi ak pwopriyete sa a nan polinòm: si nou konnen valè a P (x) pou nenpòt ki k diferan x (e nou pa gen plis enfòmasyon sou P (x)), nou ka kalkile P (x) pou nenpòt lòt moun x.

Li enteresan ke pou nenpòt polinòm P (x) ak kèk pwen sou koub la Gkonnen siyifikasyon an p(x)G pou nenpòt ki k diferan siyifikasyon x, nou ka kalkile tou p(x)G pou nenpòt ki x.

Sa a se enfòmasyon ase pou fouye nan detay yo sou fason siyati papòt travay ak kouman yo sèvi ak yo jenere nimewo o aza.

Dèlko nimewo o aza sou siyati papòt

Ann di sa n patisipan yo vle jenere yon nimewo o aza, epi nou vle nenpòt moun patisipe k te gen ase nan yo jenere yon nimewo, men se konsa ke atakè yo ki kontwole k-1 oswa mwens patisipan yo pa t 'kapab predi oswa enfliyanse nimewo ki te pwodwi a.

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

Sipoze gen yon polinòm konsa P (x) degre k-1 sa premye patisipan an konnen p (1), dezyèm lan konnen p(2), ak sou sa (n-th konnen p(n)). Nou menm tou nou sipoze ke pou kèk pwen Predetermined G tout moun konnen p(x)G pou tout valè x. Nou pral rele p (mwen) "konpozan prive" ipatisipan (paske sèlman ipatisipan an konnen li), epi p(i)G "Eleman piblik" i-yèm patisipan (paske tout patisipan yo konnen li). Kòm ou sonje, konesans p(i)G pa ase pou restore p(mwen).

Kreye tankou yon polinòm pou ke sèlman i-Premye patisipan an ak pèsonn pa konnen eleman prive li a - sa a se pati ki pi konplèks ak enteresan nan pwotokòl la, epi nou pral analize li anba a. Pou kounye a, an n sipoze ke nou gen yon polinòm konsa ak tout patisipan yo konnen konpozan prive yo.

Ki jan nou ka itilize yon polinòm konsa pou jenere yon nimewo o aza? Pou kòmanse, nou bezwen kèk fisèl ki pa te deja itilize kòm opinyon nan dèlko a. Nan ka a nan yon blockchain, hash la nan dènye blòk la h se yon bon kandida pou yon liy konsa. Kite patisipan yo vle kreye yon nimewo o aza lè l sèvi avèk h tankou grenn. Patisipan yo konvèti an premye h nan yon pwen sou koub la lè l sèvi avèk nenpòt fonksyon predefini:

H = scalarToPoint(h)

Lè sa a, chak patisipan i kalkile ak pibliye Hi = p(i)H, kisa yo ka fè paske yo konnen p(i) ak H. Divilgasyon Hmwen pa pèmèt lòt patisipan yo retabli eleman prive a ith patisipan, ak Se poutèt sa yon seri konpozan prive ka itilize soti nan blòk an blòk. Kidonk, algorithm jenerasyon polinòm chè ki dekri anba a sèlman bezwen egzekite yon fwa.

k patisipan yo te otopsi Hi = p(i)H, tout moun ka kalkile Hx = p(x)H pou tout x gras a pwopriyete polinòm nou te diskite nan dènye seksyon an. Nan moman sa a, tout patisipan yo kalkile H0 = p(0)H, e sa a se nimewo o aza ki kapab lakòz. Tanpri sonje ke pèsonn pa konnen p(0), ak Se poutèt sa sèl fason yo kalkile p(0)H – sa a se entèpolasyon p(x)H, ki posib sèlman lè k valè p(i)H li te ye. Louvri nenpòt ki pi piti kantite p(i)H pa bay okenn enfòmasyon sou p(0)H.

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

Dèlko ki anwo a gen tout pwopriyete nou vle: atakè yo kontwole sèlman k-1 patisipan oswa mwens pa gen okenn enfòmasyon oswa enfliyans sou konklizyon an, pandan ke nenpòt k patisipan yo ka kalkile nimewo ki kapab lakòz, ak nenpòt ki sou-ansanm nan k patisipan yo ap toujou rive nan menm rezilta a pou menm grenn nan.

Gen yon pwoblèm ke nou ak anpil atansyon evite pi wo a. Pou entèpolasyon travay, li enpòtan ke valè a Hi ki te pibliye pa chak patisipan i li vrèman te menm bagay la tou p(i)H. Depi pa gen moun eksepte i-yèm patisipan pa konnen p (mwen), pa gen moun eksepte i-patisipan an pa ka verifye sa Hi aktyèlman kalkile kòrèkteman, epi san okenn prèv kriptografik kòrèk Hmwen yon atakè ka pibliye nenpòt valè kòm Hi, ak abitrèman enfliyanse pwodiksyon an nan dèlko nimewo o aza:

Èske li posib pou jenere nimewo o aza si nou pa fè konfyans youn ak lòt? Pati 2Valè diferan nan H_1 voye pa premye patisipan an mennen nan diferan H_0 ki kapab lakòz

Gen omwen de fason pou pwouve kòrèk Hi, nou pral konsidere yo apre nou fin analize jenerasyon polinòm lan.

Jenerasyon polinòm

Nan dènye seksyon an nou sipoze ke nou gen yon polinòm konsa P (x) degre k-1 ke patisipan an i konnen p (mwen), epi pèsonn pa gen okenn enfòmasyon sou valè sa a. Nan pwochen seksyon an nou pral bezwen tou sa pou kèk pwen Predetermined G tout moun te konnen p(x)G pou tout x.

Nan seksyon sa a nou pral asime ke chak patisipan lokalman gen kèk kle prive xi, konsa ke tout moun konnen kle piblik ki koresponn lan Xi.

Yon pwotokòl posib pou jenerasyon polinòm se jan sa a:

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

  1. Chak patisipan i lokalman kreye yon polinòm abitrè pi(x) degre k-1. Lè sa a, yo voye chak patisipan j siyifikasyon pi(j), chiffres ak kle piblik Xj. Konsa sèlman i-th и j-th patisipan konnen pmwen (j). Patisipan i tou anonse piblikman pi(j)G pou tout j soti nan 1 до k enklizif.

  2. Tout patisipan yo sèvi ak kèk konsansis pou yo chwazi k patisipan yo pral itilize polinòm yo. Depi kèk patisipan yo ka offline, nou pa ka tann jiskaske tout moun n patisipan yo pral pibliye polinòm. Rezilta etap sa a se yon seri Z ki konpoze de omwen k polinòm ki te kreye nan etap (1).

  3. Patisipan yo asire w ke valè yo konnen pi(j) koresponn ak anonse piblikman pi(j)G. Apre etap sa a nan Z sèlman polinòm pou ki transmèt an prive pi(j) koresponn ak anonse piblikman pi(j)G.

  4. Chak patisipan j kalkile eleman prive li yo p(j) kòm yon sòm pmwen (j) pou tout moun i в Z. Chak patisipan tou kalkile tout valè p(x)G kòm yon sòm pi(x)G pou tout i в Z.

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

sonje ke p (x) - li vrèman yon polinòm k-1, paske se sòm moun nan pi(x), yo chak se yon polinòm degre k-1. Lè sa a, sonje ke pandan ke chak patisipan j konnen p(j), yo pa gen okenn enfòmasyon sou P (x) pou x ≠ j. Vreman vre, yo kalkile valè sa a, yo bezwen konnen tout bagay pi (x), epi osi lontan ke patisipan an j pa konnen omwen youn nan polinòm yo chwazi yo, yo pa gen ase enfòmasyon sou p(x).

Sa a se tout pwosesis jenerasyon polinòm ki te nesesè nan dènye seksyon an. Etap 1, 2 ak 4 pi wo a gen yon aplikasyon jistis evidan. Men, etap 3 pa tèlman trivial.

Espesyalman, nou bezwen pou kapab pwouve ke chiffré pi(j) vrèman koresponn ak sa yo pibliye yo pi(j)G. Si nou pa ka pwouve li, atakè a i ka voye fatra pito pi(j) pou patisipan j, ak patisipan j pa pral kapab jwenn siyifikasyon an reyèl pi (j), epi yo pa pral kapab kalkile eleman prive li yo.

Gen yon pwotokòl kriptografik ki pèmèt ou kreye yon mesaj adisyonèl prèvi(j), tankou nenpòt patisipan, ki gen kèk valè e, epi tou prèv (j) и pi(j)G, kapab verifye lokalman sa e - li vrèman pi (j), kode avèk kle patisipan an j. Malerezman, gwosè a nan prèv sa yo se ekstrèmman gwo, epi yo bay ke li nesesè yo pibliye O(nk) Prèv sa yo pa ka itilize pou objektif sa a.

Olye pou yo pwouve sa pi (j) Korespondan pi(j)G nou ka asiyen yon peryòd tan trè gwo nan pwotokòl jenerasyon polinòm lan, pandan tout patisipan yo tcheke kode resevwa yo. pi (j), epi si mesaj la dechifre pa koresponn ak piblik la pi(j)G, yo pibliye yon prèv kriptografik ke mesaj chifre yo te resevwa a pa kòrèk. Pwouve ke mesaj la pa gen okenn Korespondan pi (G) pi fasil pase pwouve ke li matche. Nou ta dwe remake ke sa mande pou chak patisipan parèt sou entènèt omwen yon fwa pandan tan yo bay pou kreye prèv sa yo, epi konte sou sipozisyon ke si yo pibliye yon prèv sa a, li pral rive jwenn tout lòt patisipan yo nan menm tan an.

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

Si yon patisipan pa t parèt sou entènèt pandan peryòd tan sa a, epi li te gen omwen yon eleman ki pa kòrèk, lè sa a patisipan patikilye sa a p ap kapab patisipe nan lòt jenerasyon nimewo. Pwotokòl la ap, sepandan, toujou fonksyone si gen omwen k patisipan yo ki swa jis resevwa konpozan kòrèk yo oswa jere yo kite prèv ki pa kòrèk nan tan yo bay la.

Prèv kòrèk H_i

Dènye pati ki rete pou diskite se kijan pou pwouve kòrèkteman pibliye Hmwen, sètadi sa Hi = p(i)H, san ouvè p(mwen).

Se pou nou sonje ke valè yo H, G, p(i)G piblik ak tout moun konnen. Resevwa operasyon p (mwen) konnen p(i)G и G yo rele logaritm disrè, oswa dlog, epi nou vle pwouve ke:

dlog(p(i)G, G) = dlog(Hi, H)

san divilgasyon p (mwen). Konstriksyon pou prèv sa yo egziste, pou egzanp Pwotokòl Schnorr.

Avèk konsepsyon sa a, chak patisipan, ansanm ak Hi voye yon prèv kòrèk selon konsepsyon an.

Yon fwa ke yon nimewo o aza te pwodwi, li souvan bezwen itilize pa patisipan ki pa moun ki te pwodwi li. Patisipan sa yo, ansanm ak nimewo a, dwe voye tout Hi ak prèv ki gen rapò.

Yon lektè curieux ka mande: depi dènye nimewo o aza se H0, ak p(0)G – Sa a se enfòmasyon piblik, poukisa nou bezwen prèv pou chak moun Hmwen, poukisa pa voye prèv sa pito

dlog(p(0)G, G) = dlog(H0, H)

Pwoblèm lan se ke yon prèv sa yo pa ka kreye lè l sèvi avèk pwotokòl la Schnorr paske pèsonn pa konnen valè a p (0), nesesè yo kreye prèv la, ak sa ki an plis, tout dèlko nimewo o aza a baze sou lefèt ke pèsonn pa konnen valè sa a. Se poutèt sa li nesesè gen tout valè yo Hi ak prèv endividyèl yo pou pwouve kòrèk H0.

Sepandan, si te gen kèk operasyon sou pwen sou koub eliptik ki semantikman menm jan ak miltiplikasyon, prèv la kòrèk. H0 ta trivial, nou ta tou senpleman asire w ke

H0 × G = p(0)G × H

Si koub la chwazi sipòte pè koub eliptik, prèv sa a ap travay. Nan ka sa H0 se pa sèlman pwodiksyon an nan yon dèlko nimewo o aza, ki ka verifye pa nenpòt patisipan ki konnen G, H и p(0)G. H0 se tou yon siyati sou mesaj la ki te itilize kòm yon grenn, ki konfime sa k и n patisipan yo te siyen mesaj sa a. Kidonk, si grenn - se hash nan blòk la nan pwotokòl la blockchain, lè sa a H0 se tou de yon milti-siyati sou yon blòk ak yon trè bon nimewo o aza.

Nan konklizyon

Atik sa a fè pati yon seri 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è