Puncte:0

Putem folosi funcții simetrice/hashing pentru a semna mesajele ca un înlocuitor cuantic al semnării cheilor public-private?

drapel in

Semnarea cheii public-private funcționează în general astfel:

  1. Îmi anunț cheia pubiană.
  2. Criptez ceva cu cheia mea privată.
  3. Dacă oamenii au reușit să decripteze (2) cu (1), atunci (2) este de la proprietarul (1).
  4. Oamenii îmi pot cripta lucrurile folosind cheia publică din (1).

Semnarea se poate face și folosind algoritmi de hashing sau de cifrare simetrică, dar verificarea are loc atunci când persoana își publică vechiul secret aleatoriu.

Semnarea funcției de hashing:

  1. Cript un mesaj standard, de ex. 0, folosind o cheie generată aleatoriu $k_r$. De exemplu. $c_1 = enc(\text{`0`}, k_1)$.
  2. am trimis $c_1$ oamenilor alături de mesajele mele normale.
  3. Receptorii nu vor ști dacă (2) sunt eu, până nu trimit un alt mesaj și alături de el le dau $k_1$ care poate decripta $c_1$ a aduce 0 înapoi. Pe lângă aceasta, voi trimite și un nou $c_2$.

Nu sunt sigur dacă există o problemă cu puiul și ouă. De exemplu. într-o petrecere de semnare în care oamenii își schimbă cheile public-private, ei pot, în schimb, să le schimbe criptate 0 mesaje (de ex. $c_1$ în acest exemplu).

Dar ceea ce nu este clar pentru mine este cum poate funcționa așa ceva în alte cazuri, cum ar fi o metodă de semnare a plăților sau a tranzacțiilor. De exemplu. imaginați-vă dacă adresele Bitcoin ar fi semnături de tip hashing/cifrare simetrică $c_1$, $c_2$, etc, în loc de chei publice.

Văd că hashingul/semnarea simetrică necesită îngrijire suplimentară (de exemplu, aveți o copie a ultimei $c_i$). Dar dacă o astfel de întreținere este rezolvată, există vreun motiv pentru care nu poate înlocui cheile public-private pentru toate sarcinile?

Puncte:3
drapel my

Semnarea cheii public-private funcționează în general astfel

Nu, nu este. RSA poate fi vizualizat în acest fel (dacă stați la nivelul de 10.000 de picioare); totuși a) utilizarea aceleiași chei atât pentru a semna, cât și a decriptării nu este încurajată și b) RSA este, în esență, singurul algoritm de semnătură care poate fi descris în acest fel.

Cu toate acestea, asta nu abordează adevărata ta întrebare:

Semnarea funcției de hashing

Ei bine, nu ați descris-o corect - pentru unul, nu există nimic care să lege mesajul de valoarea cheie revelată. Adică, cineva ar putea modifica mesajul în zbor, iar valoarea cheii va verifica în continuare.

Ce înseamnă în general Lampport:

  • Alegem $k$ preimagini hash $c_1, c_2, ..., c_k$, și hash fiecare dintre ele și publică rezultatul fiecărui hash $H(c_1), H(c_2), ..., H(c_k)$ ca cheie publică

  • Când semnăm mesajul, convertim mesajul într-o serie de valori $b_1, b_2, ..., b_n$ (fiecare valoare între $1$ și $k$) - această conversie se face în așa fel încât este greu să găsești un al doilea mesaj care să se transforme într-o serie de biți care constau numai din valorile din $b_1, b_2, ..., b_n$).

  • Semnătura constă din preimaginile revelate $c_{b_1}, c_{b_2}, ..., c_{b_n}$

  • Verificatorul poate prelua mesajul și îl poate transforma într-o serie de valori $b_1, b_2, ..., b_n$, și verificați dacă fiecare dintre preimaginile din semnătură se încadrează la valoarea din cheia publică.

Ar trebui să fie ușor de observat că falsificarea unei semnături ar necesita fie a) găsirea unui mesaj care se transformă în valori care sunt toate relevate în semnătura bună (care am presupus că este dificilă), fie b) găsirea unei preimagine pentru o valoare care nu a fost dezvăluit (ceea ce presupunem că este greu).

Acestea fiind spuse, întrebarea ta a fost într-adevăr:

Văd că hashing/semnarea simetrică are nevoie de îngrijire suplimentară

Ei bine, Lampport este util doar dacă trebuie să semnezi un singur mesaj cu o cheie publică. Când te uiți la blockchain (unde presupunem că verificatorul vede toate semnăturile și putem include următoarea cheie publică împreună cu semnătura (și ca mesajul care este semnat să includă următoarea cheie publică, desigur), acest lucru poate funcționa - așa cum subliniați, ne cere să ne amintim următoarea cheie publică (care se va schimba pentru fiecare semnătură), dar este posibil.

În multe alte contexte, acest lucru nu funcționează. Cu toate acestea, există o serie de modificări ale semnăturilor bazate pe hash care nu au aceste limitări:

  • Semnături bazate pe hash cu stat (cum ar fi LMS și XMSS); acestea funcționează ca Lamport, cu excepția faptului că o cheie publică poate semna un număr mare de mesaje diferite (și putem face acest „număr mare” mai mare decât numărul de mesaje pe care le vom vedea vreodată). Au cerința ca semnatarul să țină evidența stării (care se schimbă cu fiecare semnătură)

  • Semnături apatride bazate pe hash (cum ar fi Sfincii+); acest lucru elimină necesitatea de a urmări orice stare în timpul semnării și astfel acționează la fel ca orice alt algoritm de semnătură

Și, dacă presupuneți că RSA și semnăturile bazate pe hash sunt singurele opțiuni de pe masă, ei bine, nu sunt. Există, de asemenea, diverse scheme bazate pe zăbrele, scheme multivariate, scheme bazate pe dovezi de cunoștințe zero (Picnic) - există o serie de opțiuni diferite.

caveman avatar
drapel in
Mulțumesc mult. Nu sunt sigur dacă are legătură, dar, aveți idee de ce nu avem astfel de monede cripto care să scape complet de semnarea public-privată/asimetrice în favoarea unor astfel de alternative bazate pe hash?
poncho avatar
drapel my
@caveman: Nu am auzit în mod specific de niciunul; totuși, ați fi uimit de cât de multe nu știu despre criptomonede...
drapel my
Jon
@caveman Capitalisk https://capitalisk.com/ folosește semnăturile Lamport OTS cu Merkle Signature Trees pentru a permite semnături multiple.

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.