Puncte:2

Semnătură unică Lampport Diffie

drapel no

trec prin Lampport Diffie Semnătură unică. Îmi este greu să înțeleg

  1. Cum pot fi mapate mesajele lungi (mai mare de 100 de biți) în mesaje scurte (100 de biți) printr-o funcție unidirecțională și doar mesajul scurt semnat? Poate cineva să explice acest lucru cu un exemplu? (Consultați pagina nr.13 din documentul atașat.)

  2. „mesajul poate fi criptat cu o cheie aleatorie nou generată de către semnatar înainte de a fi semnat, iar cheia aleatorie poate fi atașată la mesaj. Prin urmare, mesajul semnat va fi aleatoriu (presupunând că criptarea cu o cheie aleatorie va randomiza efectiv mesajul, un fapt care este în general admis pentru criptarea modernă funcții [11]). Acești pași vor îndeplini condițiile pentru proprietatea 2. Prin urmare, putem presupune, fără pierderi de generalitate, că toate mesajele au o lungime fixă, de exemplu, 100 de biți" Poate cineva să-mi explice acest lucru? (Vezi pagina nr.13 - nr.14). în documentul atașat.)

  3. „Metoda descrisă până acum suferă de defectul că B poate modifica m prin schimbarea biților care sunt 1 în D. B pur și simplu neagă că a primit vreodată xj’ (în ciuda faptului că a făcut-o). Cu toate acestea, D nu poate fi schimbat în 1. Lamport și Diffie au depășit această problemă prin semnarea unui nou mesaj m', care este exact de două ori mai lung decât m și este calculat prin concatenarea m cu complementul pe biți a lui m. Adică fiecare bit m. din mesajul original J este reprezentat prin doi biți, mj și complementul lui m. în noul mesaj m'.În mod clar, unul sau altul J bit trebuie să fie un O. Pentru a modifica mesajul, B ar trebui să transforme un 0 într-un 1, ceva ce nu poate face." Poate cineva să explice cum rezolvă problema. (Vă rugăm să consultați pagina nr. 14)

Încerc să citesc acum despre tehnologia din spațiul criptografic. Am început cu lucrarea atașată pentru că era menționat în Aici. Dacă simțiți că există resurse care explică în detaliu lucrarea atașată, dar într-un fel ar înțelege un începător, aș aprecia foarte mult.

Puncte:3
drapel my

Trec prin semnătura unică Lamport Diffie.

Ca o notă secundară; această lucrare este un efort timpuriu care a culminat cu ceea ce este cunoscut ca „Metode de semnătură bazate pe hash cu stare”; modelele moderne includ XMSS și LMS, și sunt surprinzător de aproape de ceea ce este în ziarul Merkle. Puteți găsi linkul Wiki mai accesibil...

În orice caz, pentru a vă adresa întrebărilor:

  1. Cum pot fi mapate mesajele lungi (mai mare de 100 de biți) în mesaje scurte (100 de biți) printr-o funcție unidirecțională și doar mesajul scurt semnat?

Ca să nu sune prea simplist:

  • Luăm mesajul lung pentru a semna

  • Folosim asta ca intrare la o „funcție unică” (terminologie modernă: o funcție hash), care generează o ieșire de dimensiune fixă ​​(în acest exemplu, 100 de biți)

  • Luăm acea ieșire de 100 de biți și îi aplicăm algoritmul de semnătură.

Acest lucru nu este specific semnăturilor bazate pe hash; în esență, toți algoritmii de semnătură (cel puțin, oricare despre care am auzit) folosesc o variantă a acestuia ca prim pas. Singura diferență este că 100 de biți nu ar fi considerați suficient de lungi; în general, insistăm pe ieșiri hash mult mai lungi (deoarece capacitățile atacatorului au crescut foarte mult din 1979, de aceea trebuie să ne facem sistemele mai puternice).

Întrebarea neevidentă este „de ce este acest lucru sigur”? Ei bine, dacă presupunem că atacatorul nu poate găsi un alt mesaj pe care funcția unidirecțională se mapează la aceiași 100 de biți și atacatorul nu poate genera o semnătură pentru acel set diferit de 100 de biți la care se mapează mesajul atacatorului, atunci este sigur. .

De fapt, în practică, ne facem griji cu privire la atacurile de coliziune, în care atacatorul deține controlul asupra mesajului valid care este semnat (dar încă trebuie să producă un fals, adică o semnătură validă pentru un mesaj care nu a fost semnat); Merkle ia în considerare acest lucru, totuși să păstrăm lucrurile simple pentru moment.

  1. „mesajul poate fi criptat cu o cheie aleatoare nou generată...” Poate cineva să-mi explice asta?

Ei bine, această parte poate fi probabil sărită - aceasta este o secțiune a lucrării pe care cripto-ul modern nu o urmează.

Merkle încearcă să definească o „funcție de criptare certificată” și utilizează ipoteze specifice pentru a face acest lucru, inclusiv o intrare randomizată; mesajele semnate nu sunt randomizate, așa că el introduce o funcție de criptare (cu o cheie aleatorie) pentru a se potrivi cu ipotezele sale.

În cripto-ul modern, nu facem acest lucru - în general folosim o funcție hash disponibilă (cum ar fi SHA-2 sau SHAKE) și o folosim - acestea au fost proiectate (și criptoanalizate) pentru a îndeplini diferitele ipoteze pentru criptografie. funcții hash; prin urmare, noi (ca designer de semnături) nu trebuie să ne facem griji pentru asta.

Pentru a fi corect cu Merkle, aceasta poate fi prima dată când cineva încearcă să descopere cum ar arăta o „funcție hash rezistentă la coliziune” și a făcut o încercare destul de decentă - pur și simplu nu este direcția în care au luat-o criptografii de mai târziu.

  1. „Metoda descrisă până acum suferă de defectul că B poate modifica m prin schimbarea biților care sunt 1 în 0...” Poate cineva să explice cum rezolvă problema.

Ei bine, să luăm în considerare cel mai simplu caz; semnând un singur bit. În „metoda descrisă până acum”, pentru a genera o cheie privată, am alege o valoare aleatorie $x$, și aplicați o funcție aleatorie $F$ acestuia, generând valoarea publică $F(x)$. Apoi, pentru a semna un bit „1”, vom produce ca semnătură $x$ (pe care verificatorul l-ar putea valida $F$ mapează asta la cheia publică). Totuși, pentru a semna un bit „0”, nu am dezvălui nimic. Este evident că cineva care vede semnătura validă de „1” ar putea să o transforme într-o semnătură de „0” (sau, de altfel, să genereze o semnătură de „0” fără să vadă nimic).

În schema Lamport, pentru a semna un singur bit, generăm două valori aleatorii $x$ și $x'$și publică valorile ca cheie publică $F(x)$ și $F(x')$. Pentru a semna 0, producem $x$; pentru a semna un 1, producem $x'$; cineva cu semnătura de 1 nu poate genera o semnătură de 0 (pentru că ar trebui să producă $x$, și ei nu știu asta).

Acum, acest lucru funcționează, dar este destul de costisitor (sfârșiți prin a avea nevoie de o cheie publică care are de două ori mai multe ieșiri hash decât biți pe care funcția dvs. de hash îi produce - de exemplu, dacă funcția dvs. de hash iese 100 de biți, aceasta are o cheie publică care constă de 200 de hashes). Lucrarea continuă să arate modalități de reducere a acesteia, așa cum se menționează în secțiunile 4 și 5 ale lucrării (care sunt cele folosite în practică).

redd avatar
drapel no
În primul rând, vă mulțumesc foarte mult pentru răspuns și pentru efortul dumneavoastră. Eram dezamăgit din cauza faptului că nu am putut înțelege conținutul lucrării, iar răspunsul tău mi-a făcut ziua și mi-a dat speranță!
redd avatar
drapel no
Ca răspuns la primul tău răspuns. Înțeleg algoritmul de semnătură că pentru fiecare bit din mesajul care este transmis există o cheie secretă și o cheie publică asociată acesteia. Ceea ce vreau să spun prin fiecare bit este că (folosind exemplul menționat în documentul atașat) este că să spunem că aș vinde un stoc, fiecare bit din mesaj, va spune părții B ce stocuri să vândă. Dacă mapăm mesajul la un nou hash de 100 de biți (referindu-ne la exemplul dvs.), cum va ști partea B ce acțiuni să vândă? Pentru că mesajul original este transformat în acest nou hash de 100 de biți.
redd avatar
drapel no
Faceți referiri la o „funcție hash rezistentă la coliziune”, când spuneți că vorbiți despre funcții hash care nu produc aceeași ieșire pentru diferitele intrări? Cât de mare este această problemă în practică?
redd avatar
drapel no
Cu referire la răspunsul 3 din postarea dvs. Ei bine, nu are aceasta o vulnerabilitate atunci când să spunem că partea A trimite părții B un mesaj valid semnat, nu poate doar să spună că nu a primit niciun mesaj care a fost semnat? Cum rezolvă ei această problemă?
poncho avatar
drapel my
@redd: punctul 1: semnătura este acolo pentru a permite oamenilor să verifice mesajul, nu este acolo pentru a-l transmite. Se presupune că lui B i se trimite o copie a mesajului împreună cu semnătura.
poncho avatar
drapel my
@redd: o „funcție hash rezistentă la coliziune” nu este una în care literalmente nu există două intrări care să trimită la aceeași valoare (este ușor de arătat că, pentru orice astfel de funcție, ieșirea este cel puțin la fel de mare ca intrarea) . În schimb, este unul în care este prea greu (nu știm cum să facem acest lucru cu resursele pe care le avem) să găsim două valori diferite care hash la fel.
poncho avatar
drapel my
@redd: punctul 3: punctul unei semnături este acolo pentru a permite că mesajul a fost trimis, exact așa cum este, de A. Nu este acolo pentru a-l împiedica pe B să pretindă că nu l-a primit; este acolo pentru a-l împiedica pe B să pretindă că A trimite un mesaj diferit (și altcineva decât A să trimită lui B un mesaj diferit)

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.