Aláírási eljárás
A FALCON matematikai magyarázata
Hogyan írunk alá egy McGesund-értékelést FN-DSA-val (FALCON) — és miért töri meg az aláírást egyetlen megváltoztatott karakter.
Állapot: 2026-09-07
1. Miről van szó
A McGesundnál egy értékelés nem pusztán egy szövegmező az adatbázisban, amelynek hinni kell. Beküldéskor digitálisan aláírjuk, és ezt az aláírást később bármelyik látogató újraszámolhatja a saját böngészőjében.
Ezeknek az aláírásoknak egy részéhez a FALCON eljárást használjuk — pontosabban az FN-DSA-512-t és az FN-DSA-1024-et. Ez a cikk elmagyarázza, mi történik közben matematikailag.
Fontos előrebocsátani:
A FALCON nem titkosítás. Az értékelés szövegét éppen hogy el kell tudni olvasni. A FALCON nem a titkosságot bizonyítja, hanem az eredetet és a sértetlenséget.
2. Mit írunk alá pontosan
Nem a folyószöveget írjuk alá, hanem egy tömör adatobjektumot, amely a szöveget egyértelműen rögzíti:
{
"v": 1,
"typ": "rev-comment",
"f": "<cégazonosító>",
"c": "<értékelésazonosító>",
"h": "<az értékelés szövegének SHA-256 hasítóértéke>",
"rh": "<a teljes beküldött adatrekord SHA-256 hasítóértéke>",
"rv": 1,
"qh": "<a QR-envelope SHA-256 hasítóértéke, csak QR-értékeléseknél>",
"iat": 1757203200
}
Ez a mi üzenetünk. A következőket köti össze:
- melyik céghez tartozik az értékelés (
f), - melyik értékelésről van szó (
c), - milyen szöveg állt mögötte — hasítóértékként (
h), - összességében milyen adatrekordot küldtek be (
rh): szöveg, szívek, geostátusz és az alkalomra vonatkozó adatok, kanonikusan szerializálva és hasítva, azrvsémaverzióban, - melyik QR-kódból származik az értékelés (
qh) — QR nélküli értékelésnél ez a mező elmarad, - mikor történt az aláírás (
iat).
Egyetlen megváltoztatott karakter az értékelés szövegében megtöri ezt a láncot. Pontosan ez a cél — és az rh bevezetése óta ugyanez érvényes egy utólag áthelyezett szívre vagy egy megváltoztatott geostátuszra is.
3. Az alapprobléma
Az olvasó, aki egy cégprofilra érkezik, két kérdés előtt áll:
- Valóban a McGesund rendszeréből származik ez az értékelés?
- Módosították-e utólag?
Ehhez egy kulcspár tartozik:
- egy titkos kulcs — az aláíró szolgáltatásban marad
- egy nyilvános kulcs — bárkinél lehet
Az aláírás a titkos kulccsal készül, az ellenőrzés a nyilvánossal. Méghozzá az olvasó eszközén, nem a mi szerverünkön.
4. Miért a FALCON?
A mai aláírási eljárások közül sok olyan problémákon alapul, amelyek a klasszikus gépeknek nehezek, a kellően nagy kvantumszámítógépeknek viszont lényegesen könnyebbek lehetnek.
Egy értékelés esetében ez fontosabb, mint egy múlékony üzenetnél: egy értékelésnek öt vagy tíz év múlva is ellenőrizhetőnek kell lennie. Aki ma ír alá, a bejegyzés teljes élettartamára ír alá.
A FALCON ezért rácskriptográfián alapul:
Olyan rácsot építünk, amely matematikailag egyszerűen leírható, de amelyben egy bizonyos keresési feladat rendkívül nehéz.
5. Mi az a matematikai rács?
Két vektor:
Az összes egész együtthatós kombináció
pontokból álló rácsot ad. Például:
A döntő szempont:
Magát a rácsot könnyű leírni. Bizonyos tulajdonságokat megtalálni benne viszont nagyon nehéz.
6. A titok a rövid vektorokban rejlik
A klasszikus nehéz feladat így hangzik:
Ez a legrövidebb vektor problémája. Két dimenzióban végig lehet próbálni. A FALCON 512-es vagy 1024-es dimenzióban dolgozik — ott ez reménytelen.
A FALCON-nak azonban nem magára a legrövidebb vektorra van szüksége, hanem valami rokon dologra: egy előre adott célponthoz kell közeli rácspontot találnia. Ez is nehéz a megfelelő kiegészítő információ nélkül.
7. Polinomok számok helyett
A FALCON NTRU-rácsot használ, és polinomokkal számol. Tehát egyes számok helyett együtthatólistákkal:
A számítás a következő gyűrűben történik:
Ez azt jelenti:
- : számolás modulo . Például esetén , hiszen .
- : rögzített hosszon tartja a polinomokat.
A FALCON konkrétan a következőket használja:
8. A központi trükk
A titkos kulcs négy kis polinomból áll:
az NTRU-egyenlettel
Ez a négy együtt alkot egy titkos, jól kezelhető rácsbázist — a rács rövid vektorokból álló leírását.
A nyilvános kulcs lényegében egyetlen polinom:
A -ból ugyanaz a rács adódik, de egy nehézkes bázisban, hosszú vektorokból:
Ez a FALCON teljes lényege. Mindkét bázis ugyanazt a rácsot írja le. Csak az egyik használható a számoláshoz, a másik nem.
Elképzelhetjük ezt várostérképként: nyilvános a teljes térkép. Titkos a rövidítések ismerete.
9. Az értékelésből pont lesz
Az aláírás előtt a payload-objektum áthalad egy hasítófüggvényen. A FALCON ehhez a hash-to-point eljárást használja: az üzenetből nem számérték lesz, hanem közvetlenül egy pont a gyűrűben.
Ezenkívül az aláíró szolgáltatás húz egy véletlen saltot, -t (320 bit), és azt is belehasítja:
A salt nem díszítés. Nélküle ugyanaz az értékelés mindig ugyanazt az aláírást adná, és sok aláírásból rekonstruálható lenne a titkos bázis. Ezért az aláírásba is bekerül.
10. Mi számít érvényes aláírásnak
Egy párt keresünk,
két tulajdonsággal:
Az első feltételt önmagában triviális teljesíteni — legyen és . A második feltétel teszi nehézzé a feladatot.
11. Egy teljesen végigszámolt minipélda
Mindent játékméretűre zsugorítunk: csak egyetlen együtthatós polinomokra, azaz közönséges számokra, és
A titkos kulcs. Két kis szám:
A nyilvános kulcs. Fennáll, hogy , hiszen . Tehát:
A rács. .
A nyilvános bázis közvetlenül a -ból adódik:
Mindkettő -ben van — és mindkettő hosszú.
A titkos bázist csak az aláíró szolgáltatás ismeri:
hiszen és . A determináns
tehát az NTRU-egyenlet teljesül. Mindkét vektor rövid.
1. lépés: Az értékelés hasítása
Tegyük fel, hogy az értékelés payload-objektumából
2. lépés: Egy első, rossz megoldás
kielégíti a összefüggést. A hossza azonban — sokkal túl hosszú.
3. lépés: Rövidítés a titkos bázissal
Az aláíró szolgáltatás a célpontot a saját rövid bázisában fejezi ki:
Ez az és értékekre vezet. Az , kerekítéssel a következő rácspont adódik:
Ellenőrzés: , tehát valóban -ben van. Kivonva:
Hossz:
Ez az aláírás.
4. lépés: Ugyanaz az eljárás a nyilvános bázissal
Aki csak a értéket ismeri, annak a bázisa van. Ugyanaz a kerekítési számítás ott a rácspontot adja, és ezzel
Ez is érvényes megoldása az egyenletnek — de hétszer hosszabb. Ha az elfogadási korlátot 26 alá állítjuk, akkor értéktelen.
Ez a FALCON csapóajtaja egyetlen sorban.
5. lépés: A böngésző ellenőriz
A böngésző megkapja az értékelést, a saltot és az értéket. Újraszámolja a hasítóértéket, -et kap, rekonstruálja
és ellenőrzi a hosszt:
6. lépés: Valaki megváltoztatja az értékelés szövegét
Ha a szöveget utólag megváltoztatják, megváltozik a tartalom hasítóértéke, és ezzel a pont is, mondjuk
A régi aláírás marad, de
Egy értékelést törölni tudunk. Megváltoztatni viszont nem tudjuk anélkül, hogy az feltűnne.
Őszinte megjegyzés a példához
Két dimenzióban a támadó egyszerűen végigpróbálhatja a rövid megoldásokat — esetén például a párt. A példa nem biztonságos; csupán a mechanizmust mutatja meg. A FALCON-1024-nél a vektornak 2048 együtthatója van, és ott a végigpróbálás sehová sem vezet.
12. Miért nem egyszerűen kerekítünk?
A 3. lépésben szereplő eljárás neve Babai-kerekítés. Tankönyvi példához elegendő — valódi aláírási eljáráshoz nem.
Az ok: a kerekített aláírások nem egyenletesen oszlanak el. Az alakjuk a titkos bázis geometriájától függ. Elég sok aláírásból ez a geometria rekonstruálható lenne — és ezzel a titkos kulcs is. Pontosan ezen buktak el korábbi rácsalapú aláírási eljárások.
A FALCON ezért a rövid vektorokat a rács feletti diszkrét Gauss-eloszlásból húzza:
A célponthoz közeli értékek valószínűbbek, de hogy pontosan melyiket választja, az véletlenszerű. Az eredmény olyan eloszlás, amely semmit nem árul el a használt bázisról — matematikailag: nem megkülönböztethető egy olyan eloszlástól, amely csak magától a rácstól függ.
Ez a mintavételező a FALCON legigényesebb része. Rekurzívan fut végig egy fastruktúrán, és lebegőpontos számokkal dolgozik — ez teszi kényessé az implementációt, és ez a fő oka annak, hogy a FALCON-t nehezebb helyesen megvalósítani, mint az ML-DSA-t.
13. Mi kerül ténylegesen továbbításra
Az aláírás a következőkből áll:
Csak az — nem a pár. Az -et az ellenőrző maga számolja ki:
Mivel az együtthatói kicsik és nulla körül szóródnak, erősen tömöríthetők. Ez az oka a FALCON feltűnően tömör aláírásainak:
| nyilvános kulcs | aláírás | |
|---|---|---|
| FALCON-512 | 897 B | ~666 B |
| FALCON-1024 | 1793 B | ~1280 B |
Összehasonlításképpen: az ML-DSA-87 4627 bájtot igényel. A McGesundnál viszont egyik ilyen aláírás sem kerül magába a QR-kódba — a matrica csak az Ed25519-borítékot hordozza; a poszt-kvantum bélyegzők az adatrekord mellett vannak, és ellenőrzéskor töltődnek be. A méret tehát itt nem a nyomtathatóságról dönt, hanem a tárolásról és az átvitelről: egy FALCON-bélyegző jó negyedakkora, mint egy ML-DSA-bélyegző.
14. Miért ellenőriz gyorsan a FALCON
A naiv polinomszorzás költsége
A gyors Fourier-transzformációval ez körülbelül a következőre csökken:
esetén ez az egymillió és a nagyjából tízezer művelet közötti különbség. Ezért fut le az ellenőrzés a látogató böngészőjében ezredmásodpercek alatt — és ezért van benne az F a névben:
FAst Fourier Lattice-based COmpact signatures over NTRU.
15. A folyamat képben
16. Miért bukik el a támadó
Ismeri a -t, és ezzel az egész rácsot. Ismeri a célpontot is, amint az értékelés nyilvános. Ami hiányzik neki, az a rövid bázis.
Egy értékelés hamisításához egy maga választotta -hez kellene rövid vektort találnia — pusztán a nyilvános leírásból. Ez az a feladat, amelyet a példa 4. lépése szemléltetett: a jó vektorok nélkül ugyanaz a számítás sokkal túl hosszú megoldáshoz vezet.
Az 1024-es dimenzióban a legjobb ismert eljárások — klasszikusak és kvantumalapúak egyaránt — messze vannak ettől.
17. Mit kezd ezzel konkrétan a McGesund
A boríték. Minden aláírt értékelés hordoz egy Ed25519-aláírást. Ez a kötelező változat — klasszikus, nagyon kicsi, minden böngészőben natívan ellenőrizhető.
A poszt-kvantum bélyegzők. Emellett egy vagy két kvantumrezisztens aláírás található. Hogy melyik, az a csomagtól függ:
| Csomag | elérhető aláírási szintek |
|---|---|
| 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, mindkettő párhuzamosan |
A párhuzamos változat szándékosan redundáns. A FALCON NTRU-rácsokon áll, az ML-DSA modulrácsokon. Ha a két család egyike gyengébbnek bizonyulna a ma feltételezettnél, a másik tovább visz.
Az időhorgony. Az aláírókulcs ujjlenyomatát az OpenTimestamps segítségével egy Bitcoin-blokkban rögzítjük. Ezzel nemcsak az igazolt, hogy az aláírás valódi, hanem az is, hogy egy adott időpontban már létezett — anélkül, hogy bárkinek hinnie kellene a mi időbélyegünknek.
Mindezt az olvasó böngészőjében számoljuk, egy WASM-modulon keresztül. Mi az adatokat szállítjuk; az ellenőrzés a látogató eszközén fut. Ha holnap lekapcsolnánk a hálózatról, egy egyszer betöltött értékelés akkor is ellenőrizhető maradna.
A nevek elhelyezéséhez: a FALCON-t jelenleg FN-DSA néven szabványosítják; a tervezetet FIPS 206-ként tervezik, de még nem zárult le. Ezért hívjuk a McGesund kódjában a szinteket FN-DSA-512-nek és FN-DSA-1024-nek, még ha a köznyelvben továbbra is FALCON-ról esik szó.
18. A legfontosabb szemlélet
A nyilvános kulcs egy labirintus teljes leírása. Bárki megnézheti.
Az aláírás a bizonyíték: „Pontosan ehhez az értékeléshez találtam egy nagyon rövid utat."
A titkos kulcs a rövidítések ismerete.
Az olvasónak nem kell ismernie a rövidítéseket. Csak azt méri le, hogy a bemutatott út valóban rövid-e, és valóban ehhez az értékeléshez tartozik-e. Mindkettőt meg tudja tenni nélkülünk.
Aki megváltoztatja a szöveget, elmozdítja a pontot — és a régi út a semmibe vezet.