Parašo algoritmas
FALCON paaiškintas matematiškai
Kaip McGesund atsiliepimas pasirašomas FN-DSA (FALCON) algoritmu — ir kodėl vienas pakeistas ženklas sulaužo parašą.
Būklė: 2026-09-07
1. Apie ką čia kalbama
Atsiliepimas McGesund sistemoje nėra tiesiog teksto laukas duomenų bazėje, kuriuo tenka patikėti. Išsiunčiamas jis pasirašomas skaitmeniniu būdu, ir kiekvienas lankytojas gali šį parašą vėliau perskaičiuoti savo paties naršyklėje.
Daliai šių parašų naudojame FALCON — tiksliau, FN-DSA-512 ir FN-DSA-1024. Šis straipsnis paaiškina, kas tuo metu vyksta matematiškai.
Svarbu iš karto:
FALCON nėra šifravimas. Atsiliepimo tekstas juk skirtas skaityti. FALCON įrodo ne slaptumą, o kilmę ir vientisumą.
2. Kas tiksliai pasirašoma
Pasirašomas ne ištisinis tekstas, o kompaktiškas duomenų objektas, kuris vienareikšmiškai užfiksuoja tekstą:
{
"v": 1,
"typ": "rev-comment",
"f": "<įmonės ID>",
"c": "<atsiliepimo ID>",
"h": "<atsiliepimo teksto SHA-256>",
"rh": "<viso pateikimo duomenų rinkinio SHA-256>",
"rv": 1,
"qh": "<QR voko SHA-256, tik QR atsiliepimuose>",
"iat": 1757203200
}
Tai yra mūsų pranešimas . Jis susieja:
- kuriai įmonei atsiliepimas priklauso (
f), - apie kurį atsiliepimą kalbama (
c), - koks tekstas už jo stovėjo — kaip maišos reikšmė (
h), - koks duomenų rinkinys iš viso buvo pateiktas (
rh): tekstas, širdelės, geo statusas ir aplinkybių duomenys, kanoniškai serializuoti ir sumaišyti, schemos versijojerv, - iš kurio QR kodo atsiliepimas kilęs (
qh) — atsiliepimui be QR šio lauko nėra, - kada buvo pasirašyta (
iat).
Vienas pakeistas ženklas atsiliepimo tekste nutraukia šią grandinę. Būtent tai ir yra tikslas — o nuo rh tas pats galioja ir vėliau perstumtai širdelei ar pakeistam geo statusui.
3. Pagrindinis uždavinys
Skaitytojas, atsidūręs įmonės profilyje, turi du klausimus:
- Ar šis atsiliepimas tikrai kilęs iš McGesund sistemos?
- Ar jis buvo pakeistas vėliau?
Tam naudojama raktų pora:
- privatusis raktas — lieka parašų tarnyboje
- viešasis raktas — jį gali turėti bet kas
Pasirašoma privačiuoju, tikrinama viešuoju raktu. Ir būtent skaitytojo įrenginyje, o ne mūsų serveryje.
4. Kodėl FALCON?
Daugelis šiandieninių parašo algoritmų remiasi uždaviniais, kurie klasikiniams kompiuteriams yra sunkūs, o pakankamai dideliems kvantiniams kompiuteriams galėtų tapti gerokai lengvesni.
Atsiliepimo atveju tai aktualiau nei trumpalaikiam pranešimui: atsiliepimas turi likti patikrinamas ir po penkerių ar dešimties metų. Kas pasirašo šiandien, pasirašo visam įrašo gyvavimo laikui.
Todėl FALCON remiasi gardelių kriptografija:
Sukuriama matematiškai paprastai aprašoma gardelė, kurioje viena konkreti paieškos užduotis yra ypač sunki.
5. Kas yra matematinė gardelė?
Du vektoriai:
Visos sveikaskaitinės kombinacijos
sudaro taškų gardelę. Pavyzdžiui:
Lemiama yra štai kas:
Pačią gardelę aprašyti lengva. Rasti joje tam tikras savybes labai sunku.
6. Paslaptis — trumpi vektoriai
Klasikinė sunki užduotis skamba taip:
Tai Shortest Vector Problem. Dviejuose matmenyse jį galima išspręsti perrinkimu. FALCON dirba 512 arba 1024 matmenų erdvėje — ten tai beviltiška.
Tiesa, FALCON reikia ne paties trumpiausio vektoriaus, o kai ko giminingo: prie iš anksto duoto tikslo taško rasti artimą gardelės tašką. Ir tai be teisingos papildomos informacijos yra sunku.
7. Daugianariai vietoj skaičių
FALCON naudoja NTRU gardelę ir skaičiuoja su daugianariais. Vietoj pavienių skaičių — su koeficientų sąrašais:
Skaičiuojama žiede
Tai reiškia:
- : skaičiavimas moduliu . Kai , pavyzdžiui, , nes .
- : išlaiko daugianarius fiksuoto ilgio.
Konkrečiai FALCON naudoja:
8. Pagrindinė gudrybė
Privatųjį raktą sudaro keturi maži daugianariai
su NTRU lygtimi
Šie keturi kartu sudaro slaptą, patogią gardelės bazę — gardelės aprašymą trumpais vektoriais.
Viešasis raktas iš esmės yra vienas vienintelis daugianaris:
Iš gaunama ta pati gardelė, tik nepatogia baze iš ilgų vektorių:
Tai ir yra visa FALCON esmė. Abi bazės aprašo tą pačią gardelę. Tik viena tinka skaičiuoti, o kita — ne.
Tai galima įsivaizduoti kaip miesto planą: viešas yra visas žemėlapis. Slapta yra trumpiausių kelių išmanymas.
9. Atsiliepimas virsta tašku
Prieš pasirašant, naudingosios apkrovos objektas praleidžiamas per maišos funkciją. FALCON tam naudoja Hash-to-Point: iš pranešimo gaunama ne skaitinė reikšmė, o tiesiogiai taškas žiede.
Papildomai parašų tarnyba ištraukia atsitiktinę druską (salt) (320 bitų) ir sumaišo ją kartu:
Druska nėra priedas. Be jos tas pats atsiliepimas visada duotų tą patį parašą, ir iš daugelio parašų būtų galima atkurti slaptąją bazę. Todėl ji keliauja kartu su parašu.
10. Kas yra galiojantis parašas
Ieškoma poros
su dviem savybėmis:
Vien pirmąją sąlygą patenkinti trivialu — imame ir . Antroji sąlyga padaro užduotį sunkią.
11. Iki galo perskaičiuotas mažas pavyzdys
Viską sutraukiame iki žaislinio dydžio: daugianariai su vieninteliu koeficientu, tai yra paprasti skaičiai, ir
Slaptasis raktas. Du maži skaičiai:
Viešasis raktas. Galioja , nes . Taigi:
Gardelė. .
Viešoji bazė gaunama tiesiai iš :
Abu vektoriai priklauso — ir abu yra ilgi.
Slaptąją bazę žino tik parašų tarnyba:
nes ir . Determinantas yra
taigi NTRU lygtis tenkinama. Abu vektoriai yra trumpi.
1 žingsnis: apskaičiuoti atsiliepimo maišą
Tarkime, atsiliepimo naudingosios apkrovos objektas duoda
2 žingsnis: pirmas, prastas sprendinys
tenkina . Bet ilgis yra — gerokai per ilgas.
3 žingsnis: sutrumpinti slaptąja baze
Parašų tarnyba išreiškia tikslo tašką savo trumpąja baze:
Iš to gaunama ir . Suapvalinus iki , , gaunamas gardelės taškas
Patikra: , taigi tikrai priklauso . Atimame:
Ilgis:
Tai ir yra parašas.
4 žingsnis: tas pats metodas su viešąja baze
Kas žino tik , turi bazę . Tas pats apvalinimo skaičiavimas ten duoda gardelės tašką ir kartu
Taip pat galiojantis lygties sprendinys — bet septynis kartus ilgesnis. Jei priėmimo riba nustatyta žemiau 26, jis bevertis.
Tai FALCON slaptųjų durų principas vienoje eilutėje.
5 žingsnis: naršyklė tikrina
Naršyklė gauna atsiliepimą, druską ir . Ji iš naujo apskaičiuoja maišą, gauna , atkuria
ir patikrina ilgį:
6 žingsnis: kas nors pakeičia atsiliepimo tekstą
Jei tekstas vėliau pakeičiamas, pasikeičia turinio maiša, o kartu ir taškas, tarkime, į
Senasis parašas lieka , bet
Atsiliepimą galime ištrinti. Pakeisti jo nepastebimai negalime.
Sąžininga pastaba apie pavyzdį
Dviejuose matmenyse užpuolikas gali trumpus sprendinius tiesiog perrinkti — kai , pavyzdžiui, . Šis pavyzdys nėra saugus; jis tik parodo mechanizmą. FALCON-1024 atveju vektorius turi 2048 koeficientus, ir ten perrinkimas nieko neduoda.
12. Kodėl tiesiog neapvalinama?
3 žingsnio metodas vadinamas Babai apvalinimu. Mokomajam pavyzdžiui jo pakanka — tikram parašo algoritmui ne.
Priežastis: suapvalinti parašai pasiskirstę netolygiai. Jų forma priklauso nuo slaptosios bazės geometrijos. Iš pakankamai daug parašų šią geometriją būtų galima atkurti — o kartu ir privatųjį raktą. Būtent dėl to sudužo ankstesni gardelėmis grįsti parašo algoritmai.
Todėl FALCON trumpus vektorius traukia iš diskretaus Gauso skirstinio gardelėje:
Reikšmės arti tikslo taško yra labiau tikėtinos, bet kuri būtent bus parinkta — atsitiktina. Rezultatas yra skirstinys, kuris nieko neatskleidžia apie naudotą bazę — matematiškai: jis neatskiriamas nuo skirstinio, priklausančio tik nuo pačios gardelės.
Šis atrankos generatorius yra sudėtingiausia FALCON dalis. Jis veikia rekursiškai medžio struktūroje ir dirba su slankiojo kablelio skaičiais — tai daro realizaciją jautrią ir yra pagrindinė priežastis, kodėl FALCON teisingai įgyvendinti sunkiau nei ML-DSA.
13. Kas iš tikrųjų perduodama
Parašą sudaro
Tik — ne pora. tikrintojas apskaičiuoja pats:
Kadangi koeficientai yra maži ir sklaidosi apie nulį, juos galima stipriai suspausti. Todėl FALCON parašai yra tokie akivaizdžiai kompaktiški:
| viešasis raktas | parašas | |
|---|---|---|
| FALCON-512 | 897 B | ~666 B |
| FALCON-1024 | 1 793 B | ~1 280 B |
Palyginimui: ML-DSA-87 reikia 4 627 baitų. Tiesa, McGesund sistemoje nė vienas iš šių parašų nėra pačiame QR kode — lipdukas neša tik Ed25519 voką; postkvantiniai antspaudai guli prie duomenų rinkinio ir tikrinant įkeliami papildomai. Taigi dydis čia lemia ne spausdinamumą, o saugojimą ir perdavimą: FALCON antspaudas yra maždaug ketvirtadaliu ML-DSA antspaudo dydžio.
14. Kodėl FALCON greitai tikrina
Naivi daugianarių daugyba kainuoja
Su greitąja Furjė transformacija tai nukrenta maždaug iki
Kai , tai skirtumas tarp milijono ir maždaug dešimties tūkstančių operacijų. Todėl patikra lankytojo naršyklėje trunka milisekundes — ir todėl pavadinime yra F:
FAst Fourier Lattice-based COmpact signatures over NTRU.
15. Eiga paveiksle
16. Kodėl užpuolikui nepavyksta
Jis žino , taigi ir visą gardelę. Jis žino ir tikslo tašką , vos tik atsiliepimas tampa viešas. Jam trūksta trumposios bazės.
Kad suklastotų atsiliepimą, jis turėtų prie savo pasirinkto rasti trumpą vektorių — vien iš viešojo aprašymo. Tai ta pati užduotis, kurią iliustravo 4 pavyzdžio žingsnis: be gerų vektorių tas pats skaičiavimas baigiasi gerokai per ilgu sprendiniu.
1024 matmenų erdvėje geriausi žinomi metodai — tiek klasikiniai, tiek kvantiniai — nuo to yra labai toli.
17. Ką konkrečiai su tuo daro McGesund
Vokas. Kiekvienas pasirašytas atsiliepimas turi Ed25519 parašą. Tai privaloma dalis — klasikinė, labai maža, natyviai patikrinama kiekvienoje naršyklėje.
Postkvantiniai antspaudai. Šalia guli vienas ar du kvantams atsparūs parašai. Kurie — priklauso nuo tarifo:
| Tarifas | galimi parašų lygiai |
|---|---|
| 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, abu lygiagrečiai |
Lygiagretus variantas sąmoningai perteklinis. FALCON remiasi NTRU gardelėmis, ML-DSA — modulinėmis gardelėmis. Jei viena iš šių dviejų šeimų pasirodytų silpnesnė, nei manoma šiandien, kita laikytų toliau.
Laiko inkaras. Parašo rakto kontrolinis atspaudas per OpenTimestamps įtvirtinamas Bitcoin bloke. Taip įrodoma ne tik tai, kad parašas tikras, bet ir tai, kad jis tam tikru momentu jau egzistavo — nereikalaujant iš nieko tikėti mūsų laiko žyma.
Visa tai skaičiuojama skaitytojo naršyklėje per WASM modulį. Mes pateikiame duomenis; patikra vyksta lankytojo įrenginyje. Jei rytoj dingtume iš tinklo, kartą įkeltas atsiliepimas liktų patikrinamas.
Dėl pavadinimų: FALCON šiuo metu standartizuojamas kaip FN-DSA; projektas numatytas kaip FIPS 206, bet dar nebaigtas. Todėl McGesund kode lygiai vadinami FN-DSA-512 ir FN-DSA-1024, net jei kalboje ir toliau kalbama apie FALCON.
18. Svarbiausia intuicija
Viešasis raktas yra pilnas labirinto aprašymas. Jį gali apžiūrėti bet kas.
Parašas yra įrodymas: „Būtent šiam atsiliepimui radau labai trumpą kelią."
Privatusis raktas yra trumpiausių kelių išmanymas.
Skaitytojui trumpiausių kelių žinoti nereikia. Jis tik patikrina, ar pateiktas kelias iš tikrųjų trumpas ir ar jis iš tikrųjų priklauso šiam atsiliepimui. Abu dalykus jis gali padaryti be mūsų.
Kas pakeičia tekstą, perstumia tašką — ir senasis kelias veda į tuštumą.