Procedeu de semnătură
FALCON explicat matematic
Cum este semnată o recenzie McGesund cu FN-DSA (FALCON) — și de ce un singur caracter modificat rupe semnătura.
Actualizat: 2026-09-07
1. Despre ce este vorba aici
O recenzie de pe McGesund nu este un câmp de text dintr-o bază de date pe care trebuie să îl crezi pe cuvânt. Ea este semnată digital în momentul trimiterii, iar orice vizitator poate recalcula ulterior această semnătură în propriul browser.
Pentru o parte dintre aceste semnături folosim FALCON — mai exact FN-DSA-512 și FN-DSA-1024. Acest articol explică ce se întâmplă matematic în acest proces.
Un lucru important de la bun început:
FALCON nu este o criptare. Textul recenziei trebuie doar să poată fi citit. FALCON nu dovedește confidențialitatea, ci originea și integritatea.
2. Ce anume se semnează
Nu se semnează textul propriu-zis, ci un obiect de date compact, care fixează fără echivoc textul:
{
"v": 1,
"typ": "rev-comment",
"f": "<ID companie>",
"c": "<ID recenzie>",
"h": "<SHA-256 al textului recenziei>",
"rh": "<SHA-256 al întregului set de date trimis>",
"rv": 1,
"qh": "<SHA-256 al envelope-ului QR, doar la recenziile prin QR>",
"iat": 1757203200
}
Acesta este mesajul nostru . El leagă între ele:
- cărei companii îi aparține recenzia (
f), - despre ce recenzie este vorba (
c), - ce text stătea în spatele ei — ca valoare hash (
h), - ce set de date a fost trimis în ansamblu (
rh): text, inimi, statusul geo și datele privind ocazia, serializate canonic și trecute prin hash, în versiunea de schemărv, - din ce cod QR provine recenzia (
qh) — la o recenzie fără QR, câmpul lipsește, - când s-a semnat (
iat).
Un singur caracter modificat în textul recenziei rupe acest lanț. Exact acesta este scopul — iar de la introducerea lui rh, același lucru este valabil și pentru o inimă mutată ulterior sau pentru un status geo modificat.
3. Problema de bază
Un cititor care ajunge pe profilul unei companii are două întrebări:
- Provine această recenzie cu adevărat din sistemul McGesund?
- A fost ea modificată ulterior?
Pentru asta există o pereche de chei:
- o cheie privată — rămâne în serviciul de semnare
- o cheie publică — o poate avea oricine
Semnarea se face cu cheia privată, verificarea cu cea publică. Și anume pe dispozitivul cititorului, nu pe serverul nostru.
4. De ce FALCON?
Multe dintre procedeele de semnătură actuale se bazează pe probleme dificile pentru calculatoarele clasice, dar care ar putea deveni considerabil mai ușoare pentru calculatoare cuantice suficient de mari.
La o recenzie, acest lucru este mai relevant decât la un mesaj efemer: o recenzie trebuie să fie verificabilă și peste cinci sau zece ani. Cine semnează astăzi semnează pentru întreaga durată de viață a înregistrării.
De aceea, FALCON se bazează pe criptografia pe rețele:
Se construiește o rețea ușor de descris matematic, în care o anumită problemă de căutare este extrem de dificilă.
5. Ce este o rețea matematică?
Doi vectori:
Toate combinațiile cu numere întregi
formează o rețea de puncte. De exemplu:
Esențial este:
Rețeaua în sine este ușor de descris. Găsirea anumitor proprietăți în interiorul ei este foarte dificilă.
6. Secretul sunt vectorii scurți
Problema dificilă clasică sună astfel:
Acesta este Shortest Vector Problem. În două dimensiuni se poate rezolva prin încercări. FALCON lucrează în dimensiunea 512 sau 1024 — acolo este fără speranță.
FALCON nu are însă nevoie de cel mai scurt vector în sine, ci de ceva înrudit: să găsească, pentru un punct țintă dat, un punct apropiat al rețelei. Și asta este dificil fără informația suplimentară potrivită.
7. Polinoame în loc de numere
FALCON folosește o rețea NTRU și calculează cu polinoame. Așadar, în loc de numere individuale, cu liste de coeficienți:
Calculele se fac în inelul
Asta înseamnă:
- : calcul modulo . La , de exemplu, , deoarece .
- : menține polinoamele la o lungime fixă.
Concret, FALCON folosește:
8. Trucul central
Cheia privată constă din patru polinoame mici
care satisfac ecuația NTRU
Aceste patru formează împreună o bază secretă și binevoitoare a rețelei — o descriere a rețelei prin vectori scurți.
Cheia publică este, în esență, un singur polinom:
Din rezultă aceeași rețea, dar într-o bază greu de folosit, formată din vectori lungi:
Acesta este întreg miezul lui FALCON. Ambele baze descriu aceeași rețea. Doar că una este utilizabilă pentru calcul, iar cealaltă nu.
Ne putem imagina asta ca pe o hartă a orașului: publică este harta completă. Secretă este cunoașterea scurtăturilor.
9. Recenzia devine un punct
Înainte de semnare, obiectul payload trece printr-o funcție hash. FALCON folosește pentru asta Hash-to-Point: din mesaj nu rezultă o valoare numerică, ci direct un punct în inel.
În plus, serviciul de semnare extrage un salt aleatoriu (320 de biți) și îl include în hash:
Salt-ul nu este un accesoriu. Fără el, aceeași recenzie ar produce mereu aceeași semnătură, iar din multe semnături s-ar putea reconstrui baza secretă. De aceea el călătorește împreună cu semnătura.
10. Ce înseamnă o semnătură validă
Se caută o pereche
cu două proprietăți:
Prima condiție singură este banal de îndeplinit — se ia și . A doua condiție face problema dificilă.
11. Un mini-exemplu calculat integral
Reducem totul la dimensiuni de jucărie: polinoame cu un singur coeficient, deci numere obișnuite, și
Cheia secretă. Două numere mici:
Cheia publică. Avem , deoarece . Așadar:
Rețeaua. .
Baza publică rezultă direct din :
Ambii se află în — și ambii sunt lungi.
Baza secretă o cunoaște doar serviciul de semnare:
deoarece și . Determinantul este
deci ecuația NTRU se verifică. Ambii vectori sunt scurți.
Pasul 1: Hash-ul recenziei
Să presupunem că obiectul payload al recenziei dă
Pasul 2: O primă soluție, proastă
satisface . Dar lungimea este — mult prea mare.
Pasul 3: Scurtarea cu baza secretă
Serviciul de semnare exprimă punctul țintă în baza sa scurtă:
Asta duce la și . Rotunjind la , , rezultă punctul de rețea
Control: , deci se află într-adevăr în . Scădem:
Lungimea:
Aceasta este semnătura.
Pasul 4: Același procedeu cu baza publică
Cine cunoaște doar are baza . Același calcul de rotunjire dă acolo punctul de rețea și, prin urmare,
Tot o soluție validă a ecuației — dar de șapte ori mai lungă. Dacă pragul de acceptare este fixat sub 26, ea este lipsită de valoare.
Aceasta este trapa lui FALCON, într-un singur rând.
Pasul 5: Browserul verifică
Browserul primește recenzia, salt-ul și . El recalculează hash-ul, obține , reconstruiește
și verifică lungimea:
Pasul 6: Cineva modifică textul recenziei
Dacă textul este modificat ulterior, se schimbă hash-ul de conținut și, odată cu el, punctul — să zicem
Semnătura veche rămâne , dar
Putem șterge o recenzie. Nu o putem modifica fără ca acest lucru să iasă la iveală.
Notă de onestitate privind exemplul
În două dimensiuni, un atacator poate găsi soluții scurte prin simplă încercare — pentru , de exemplu, . Exemplul nu este sigur; el arată doar mecanismul. La FALCON-1024, vectorul are 2048 de coeficienți, iar acolo încercările nu duc nicăieri.
12. De ce nu se rotunjește pur și simplu?
Procedeul din pasul 3 se numește rotunjire Babai. Pentru un exemplu didactic este suficient — pentru un procedeu de semnătură real, nu.
Motivul: semnăturile rotunjite nu sunt distribuite uniform. Forma lor depinde de geometria bazei secrete. Din suficient de multe semnături, această geometrie s-ar putea reconstrui — și, odată cu ea, cheia privată. Exact de asta au eșuat procedee de semnătură pe rețele mai vechi.
De aceea, FALCON extrage vectorii scurți dintr-o distribuție gaussiană discretă peste rețea:
Valorile apropiate de punctul țintă sunt mai probabile, dar care anume este aleasă rămâne aleatoriu. Rezultatul este o distribuție care nu dezvăluie nimic despre baza folosită — matematic: ea nu se poate distinge de o distribuție care depinde doar de rețeaua însăși.
Acest sampler este partea cea mai pretențioasă din FALCON. El rulează recursiv pe o structură arborescentă și lucrează cu numere în virgulă mobilă — ceea ce face implementarea delicată și este motivul principal pentru care FALCON este mai greu de realizat corect decât ML-DSA.
13. Ce se transmite efectiv
Semnătura constă din
Doar — nu perechea. Pe îl calculează verificatorul singur:
Deoarece coeficienții lui sunt mici și se împrăștie în jurul lui zero, ei pot fi comprimați puternic. Acesta este motivul semnăturilor remarcabil de compacte ale lui FALCON:
| cheie publică | semnătură | |
|---|---|---|
| FALCON-512 | 897 B | ~666 B |
| FALCON-1024 | 1.793 B | ~1.280 B |
Pentru comparație: ML-DSA-87 are nevoie de 4.627 de octeți. La McGesund însă, niciuna dintre aceste semnături nu se află în codul QR propriu-zis — autocolantul poartă doar envelope-ul Ed25519; ștampilele post-cuantice se află lângă setul de date și sunt încărcate suplimentar la verificare. Așadar, dimensiunea nu decide aici asupra tipăribilității, ci asupra stocării și transmiterii: o ștampilă FALCON este de aproximativ patru ori mai mică decât una ML-DSA.
14. De ce verifică FALCON repede
Înmulțirea naivă a polinoamelor costă
Cu transformata Fourier rapidă, asta scade la aproximativ
La , aceasta este diferența dintre un milion și circa zece mii de operații. De aceea verificarea rulează în milisecunde în browserul unui vizitator — și de aceea F-ul se află în nume:
FAst Fourier Lattice-based COmpact signatures over NTRU.
15. Fluxul în imagine
16. De ce eșuează un atacator
El cunoaște și, odată cu el, întreaga rețea. Cunoaște și punctul țintă , de îndată ce recenzia este publică. Ceea ce îi lipsește este baza scurtă.
Pentru a falsifica o recenzie, ar trebui să găsească, pentru un ales de el, un vector scurt — numai pe baza descrierii publice. Aceasta este sarcina pe care a ilustrat-o pasul 4 al exemplului: fără vectorii buni, același calcul ajunge la o soluție mult prea lungă.
În dimensiunea 1024, cele mai bune procedee cunoscute — atât clasice, cât și cuantice — sunt departe de asta.
17. Ce face McGesund concret cu asta
Envelope-ul. Fiecare recenzie semnată poartă o semnătură Ed25519. Aceasta este varianta obligatorie — clasică, foarte mică, verificabilă nativ în orice browser.
Ștampilele post-cuantice. Alături se află una sau două semnături rezistente la calculul cuantic. Care anume depinde de tarif:
| Tarif | niveluri de semnătură disponibile |
|---|---|
| Basis | Ed25519, FN-DSA-512 |
| Klassik | Ed25519, FN-DSA-512, FN-DSA-1024 |
| Pro | Ed25519, FN-DSA-1024, ML-DSA-87 |
| Premium | Ed25519, FN-DSA-1024, ML-DSA-87, ambele în paralel |
Varianta paralelă este redundantă în mod deliberat. FALCON se sprijină pe rețele NTRU, ML-DSA pe rețele modulare. Dacă una dintre cele două familii s-ar dovedi mai slabă decât se presupune astăzi, cealaltă continuă să susțină.
Ancora temporală. Amprenta cheii de semnare este ancorată printr-un bloc Bitcoin, prin OpenTimestamps. Astfel este dovedit nu doar că semnătura este autentică, ci și că ea exista deja la un anumit moment — fără ca cineva să fie nevoit să creadă marcajul nostru de timp.
Toate acestea sunt calculate în browserul cititorului, printr-un modul WASM. Noi livrăm datele; verificarea rulează pe dispozitivul vizitatorului. Dacă mâine am dispărea de pe internet, o recenzie odată încărcată ar rămâne verificabilă.
Despre încadrarea denumirilor: FALCON este standardizat în prezent sub numele FN-DSA; proiectul este prevăzut ca FIPS 206, dar nu este încă finalizat. De aceea, în codul McGesund nivelurile se numesc FN-DSA-512 și FN-DSA-1024, chiar dacă în vorbirea curentă se folosește în continuare FALCON.
18. Cea mai importantă intuiție
Cheia publică este descrierea completă a unui labirint. Oricine are voie să o vadă.
Semnătura este dovada: „Am găsit, pentru exact această recenzie, un drum foarte scurt.”
Cheia privată este cunoașterea scurtăturilor.
Cititorul nu trebuie să cunoască scurtăturile. El doar măsoară dacă drumul prezentat este într-adevăr scurt și dacă aparține într-adevăr acestei recenzii. Ambele lucruri le poate face fără noi.
Cine modifică textul deplasează punctul — iar drumul vechi duce în gol.