Puncte:3

Dovada că un mesaj este semnat de un membru al unui grup

drapel ng

Sunt un începător la criptografie. Iată întrebarea mea:

  1. Alice face o listă de oameni: Bob, Carol și Dan;
  2. Alice oferă o cheie secretă unică fiecărui membru de pe listă, astfel încât să poată semna mesajele în mod unic;
  3. Fiecare membru nu are dreptul de a semna mai mult de 1 mesaj;
  4. Grace, un observator, trebuie să poată verifica dacă un anumit mesaj a fost semnat de un membru al listei Alice, dar nu trebuie să știe cine l-a semnat.

Iată un exemplu:

  1. Alice deține un forum de recenzii de filme, unde recenzenții celebri (care sunt și rivali) își pot posta analiza filmului;
  2. Chiar înainte de data lansării unui film polemic regizat de membri reali Yakuza, Alice decide să ascundă identitatea utilizatorilor pe forumul său.
  3. Grace, totuși, un fan al site-ului lui Alice, este cam enervat de această decizie. Au fost postate zeci de recenzii anonime pe forum, autorii care pretind că sunt recenzorii de încredere certificati ai Aliceâ¢. Grace înțelege de ce identitatea curatorilor actuali nu poate fi dezvăluită, dar cum ar putea verifica dacă autorul unei anumite postări face parte din lista originală a recenzenților de încredere?
fgrieu avatar
drapel ng
Singurele două moduri pe care le cunosc pentru a-l împiedica pe Dan să semneze mai mult de un mesaj sunt (A) amenințarea cu represalii fizice/legale/economice (care sunt în afara subiectului) în cazul în care ar proceda altfel și (B) Alice să îi ofere lui Dan un dispozitiv fizic (de exemplu, un card inteligent) conceput pentru a semna o singură dată. Este posibil ca cerința 3 să însemne într-adevăr că fiecare membru nu va semna mai mult de un mesaj? În mod independent, în 2: „Alice oferă o cheie privată” este neobișnuit. Procedura mai standard este aceea ca participanții să își genereze propriile chei private și să publice cheia publică potrivită (poate prin Alice) sau/și să o certifice de către Alice.
thzoid avatar
drapel ng
Adică, Dan și-ar putea publica cheia publică și dacă este conectată la numele lui în lista lui Alice, asta ar dovedi relația lui cu Alice (care este exact ceea ce se intenționează), dar atunci Grace ar ști că el este autorul acelui mesaj. Am editat întrebarea cu un exemplu prostesc, pentru clarificare. Despre că oamenii pot semna o singură dată, imaginați-vă că există un algoritm care le procesează mesajele.Dacă este trimis un mesaj semnat, atunci acea semnătură este irosită: nu a putut fi folosită pentru a semna alte mesaje.
fgrieu avatar
drapel ng
Poate doriți o semnătură de apel cu caracteristica suplimentară că poate fi recunoscută de un observator cu cheile publice dacă, într-o colecție de mesaje semnate, există două semnate cu aceeași cheie privată? [plus: nici nu cunosc un astfel de sistem criptografic și nici nu văd un motiv pentru care ar fi imposibil]
thzoid avatar
drapel ng
Ei bine, pot vedea că funcționează în scenariul meu, pentru că nu ar permite semnarea duplicat și dacă Alice ar enumera cheile publice folosite în ring, asta ar dovedi relația semnatarilor cu ea. Cum funcționează? Există vreo hârtie despre asta?
fgrieu avatar
drapel ng
Să ne [continuăm această discuție în chat](https://chat.stackexchange.com/rooms/128253/discussion-between-fgrieu-and-thzoid).
Puncte:3
drapel my
  1. Fiecare membru nu are dreptul de a semna mai mult de 1 mesaj;

După cum s-a subliniat în comentarii, orice mecanism pentru a împiedica un membru al grupului să genereze două semnături ar necesita fie hardware de încredere, fie o interacțiune în timpul procesului de semnare cu controlorul de grup Alice (pentru a împiedica semnatarul să-și reseteze starea după generarea primei semnături și apoi mergând înainte cu o a doua semnătură).

Deci, ceea ce voi traduce asta în „este detectabil dacă un membru încearcă să semneze două mesaje”, adică, având în vedere cele două semnături, putem verifica dacă același membru al grupului le-a semnat pe ambele.

Cu această traducere, este posibil; iată o abordare:

  • Alice generează un sistem de semnătură bazat pe hash (de exemplu, LMS sau XMSS), diversele chei de semnătură unică fiind independente (adică nu puteți reconstrui una din alta)

  • Pentru fiecare membru al grupului, Bob, Carol și Dan, Alice selectează o foaie aleatorie (o semnătură de timp) și îi oferă aceluiași membru al grupului indexul, cheia privată pentru semnătura unică și calea de autentificare.

  • Când Bob vrea să semneze singurul său mesaj, îl semnează cu cheia sa privată și scoate semnătura respectivă (împreună cu indexul și calea de autentificare), generând o semnătură LMS sau XMSS validă

  • Verificatorul efectuează verificarea standard a validității LMS/XMSS în raport cu cheia publică

Dacă semnătura se verifică, verificatorul știe că cel care a generat semnătura avea o cheie de semnătură unică validă și, prin urmare, trebuie să fi fost un membru valid al grupului (sau controlorul grupului). Și, din moment ce indicii au fost alocați aleatoriu, habar n-are care a fost).

Și, dacă Bob decide să semneze două mesaje diferite, trebuie să includă același index de frunză în ambele semnături (acel index este singurul cu care știe să semneze) - este evident că cele două semnături au același index. Acest lucru rămâne adevărat chiar dacă i-am avut pe Bob și Carol (și posibil pe alții) cooperând reciproc - ei pot genera doar semnături care au un index pe care îl are unul dintre acei membri ai grupului.

Această abordare are cavaet că, dacă Bob semnează două mesaje diferite, atunci altcineva ar putea semna un al treilea mesaj (pe baza celor două semnături ale lui Bob); semnătura falsificată ar părea și de la Bob.

Așa cum este scris, această abordare se bazează pe faptul că unui membru al grupului i se permite să semneze un singur mesaj - poate fi extins dacă unui membru al grupului i se permite să semneze N mesaje (prin atribuirea fiecărui membru al grupului a N indicii de frunză consecutive și chei private).

thzoid avatar
drapel ng
Ar funcționa în contextul pe care îl caut. Această logică ar trebui să ruleze pe un blockchain, deci dacă două tranzacții sunt semnate de aceeași persoană, doar prima ar trebui să fie procesată. Al doilea ar deveni invalid în contextul lanțului. Există vreo lucrare sau un tutorial specific pe care îl recomandați pentru înțelegerea LMS/XMSS? Mulțumesc @poncho și tuturor celorlalți pentru că m-au ajutat să înțeleg asta.
poncho avatar
drapel my
@thzoid: pentru LMS, există https://datatracker.ietf.org/doc/rfc8554/ și pentru XMSS, există https://datatracker.ietf.org/doc/rfc8391/ .

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.