Puncte:2

Demonstrați că două re-criptări ale aceleiași perechi ElGamal au aceleași decriptări

drapel br

Lucrez la un sistem electoral pe internet care necesită amestecarea buletinelor de vot însoțită de o dovadă interactivă a legitimității amestecării. lucrez la această hârtie și sunt blocat la partea prezentată mai jos:

Prin eliberarea valorii unice $(r'-r'')\mod(p-1)$, cele două perechi ElGamal $(x',y')$ și $(x'',y'')$ poate fi demonstrat că are aceleași decriptări fără nicio legătură sau asociere cu perechea originală ElGamal $(x,y)$.

Am reusit sa iau valoarea $(r'-r'')\mod(p-1)$ prezentat mai sus, dar nu sunt sigur cum să folosesc această valoare pentru a demonstra că ambele re-criptări au aceeași decriptare.

Multumesc pentru timpul acordat,

Andrei.

Puncte:2
drapel ru

Scriind în notație aditivă, să presupunem că avem un generator $G$ și cheie publică $A$. Cele două perechi ale noastre sunt $(xâ,yâ)=(M+râA,râG)$ și $(xââ,yââ)=(M+rââA,rââG)$. Dat $râ-rââ$, putem verifica asta $yâ-yââ=(râ-rââ)G$ și $xâ-xââ=(râ-rââ)A$

În notație multiplicativă avem $(xâ,yâ)=(MA^{râ},G^{râ})$ etc., verificăm asta $yâ/yââ=G^{râ-rââ}$ și $xâ/xâ=A^{râ-rââ}$.

Dacă mesajele ar fi fost diferite, dar cu același efemer $r$ valori, prima verificare ar trece, dar nu și a doua.

Andrei Florian avatar
drapel br
Bună, mulțumesc pentru răspuns și scuze pentru întârziere din partea mea. M-am uitat peste formulele furnizate și par să funcționeze dat (xâ²,yâ²)=(M+râ²A,râ²G). În cazul meu, totuși, (xâ²,yâ²)=(MA^r', G^r'). Ați ști cum să ajustați dovada pentru a se potrivi cu asta?
Daniel S avatar
drapel ru
Da, aceasta este notație multiplicativă ca în al doilea paragraf. Am editat pentru a face acest lucru mai clar.
Andrei Florian avatar
drapel br
Mulțumesc pentru asta, scuze că tot deranjez, am încercat să-l implementez prin cod (javascript, folosind biblioteca jsbn pentru a face matematică pe numere întregi mari), dar pur și simplu nu pot să-l fac să funcționeze. Încerc să calculez partea stângă și dreaptă a ecuației și apoi le echivalez după cum urmează: `const stânga = y1.divide(y2);` `const dreapta = g.pow(dovada);` `console.log(left.equals(right));` y1 este y', y2 este y'', iar dovada este (r'-r''). Ori de câte ori ridic g la puterea lui (r'-r''), primesc 1 și când împart y' la y'', primesc un 0 este y1y2. Ai ști ce greșesc?
Daniel S avatar
drapel ru
Se pare că faci mai degrabă aritmetică naivă decât aritmetică modulo $p$. Ar trebui să aveți `left=(y1*modInverse(y2,p))%p` pentru o funcție modInverse potrivită (nu știu ce javascript are încorporat) și `right=modPower(g,proof,p)` pentru o funcție modPower adecvată.
Andrei Florian avatar
drapel br
Asta era problema! Mulțumesc. Mă confrunt însă cu o problemă. Eu generez (r' - r'') ca r' - r'' % p. Dovada funcționează cu r'>r'', dar nu o face altfel decât dacă schimb stânga=(y1*modInverse(y2, p))%p la stânga=(y2*modInverse(y1, p))%p. Ar exista o modalitate de a rezolva asta matematic, astfel încât să pot face ca r'-r'' să funcționeze indiferent de inegalitate?
Daniel S avatar
drapel ru
Da. În schimb, utilizați `(r'-r'')%(p-1)`
Andrei Florian avatar
drapel br
Da asta e. Mulțumesc mult pentru tot ajutorul.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.