Puncte:0

Demonstrați că datele criptate cu chei diferite potrivesc

drapel in

Să presupunem că utilizatorul A criptează unele date folosind cheia sa publică și stochează datele în mod public. Ulterior, utilizatorul A ar dori să transfere aceleași date către utilizatorul B în mod public, criptându-le folosind cheia publică a utilizatorului B.

Care este cea mai bună modalitate de a verifica dacă aceleași date au fost transferate către utilizatorul B fără a cunoaște datele, utilizatorul A și cheile private ale utilizatorului B?

Ievgeni avatar
drapel cn
Sunt teme pentru acasă?
drapel in
nu, încercând să îmi dau seama dacă acest lucru este posibil și despre ce ar trebui să citesc mai multe. Aș dori să creez ceva de acest fel pe Ethereum, astfel încât datele secrete să poată fi transferate în siguranță între oameni în mod public.
Ievgeni avatar
drapel cn
Întrebare: Este o schemă de criptare deterministă?
drapel in
Nu știu dacă acest lucru este posibil în acest moment, așa că este prea devreme pentru a stabili limite. Ar fi de preferat dacă este totuși determinist.
Ievgeni avatar
drapel cn
O altă întrebare: este $A$ autorizat să adauge date noi (cum ar fi dovezile ZK) pentru a ajuta B să facă verificarea? Dacă da, care sunt constrângerile de securitate?
drapel in
@levgeni Da, pot fi adăugate date suplimentare, totuși verificarea ar trebui să aibă loc înainte de transfer (înainte ca utilizatorul B să aibă datele). Caut asa ceva: 1. Utilizatorul A -> stocarea datelor criptate cu cheia publică a utilizatorului A într-un contract public. 2. Utilizatorul A -> încearcă să transfere aceleași date de data aceasta criptate folosind cheia publică a utilizatorului B prin același contract public. 3. Contractul verifică dacă Utilizatorul A nu a mințit (transferă date diferite).Dacă verificarea are succes, datele sunt stocate, în caz contrar cererea este respinsă. Contractul ar trebui să verifice acest lucru, nu utilizatorul B.
drapel in
^ În exemplul de mai sus, contractul nu cunoaște datele și nu cunoaște cheile private ale utilizatorului A și utilizatorului B. Este conștient de cheile publice ale lui A și B, datele criptate folosind cheia publică a lui A și datele criptate folosind cheia publică a lui B. Orice metadate suplimentare pot fi adăugate pentru a ajuta această verificare fără a dezvălui datele.
ming alex avatar
drapel in
Există câteva exemple pentru a vă rezolva întrebarea în secțiunea 20.2 din [carte](http://toc.cryptobook.us/book.pdf)
Puncte:1
drapel cn

Dovada zero cunoștințe pare să se potrivească cu scopul tău. $A$ trebuie să demonstreze că există $M$ astfel încât $C=Enc(M, pk_A)$, și $C^\prime=Enc(M, pk_B)$. Acest ZKP se poate face fără a dezvălui nicio informație despre date $M$ (de aceea o numim Zero-Knowledge). Pentru instanțierea concretă puteți utiliza criptarea El Gamal și Tehnici Groth-Sahai ZK-proof:

https://en.wikipedia.org/wiki/ElGamal_encryption

https://eprint.iacr.org/2007/155

Observați că nu trebuie să utilizați cheia privată a $B$ pentru a verifica egalitatea, dar dacă contactul este cel care verifică, probabil că este mai bine.

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.