Podpisové schéma
FALCON vysvětlený matematicky
Jak se hodnocení na McGesund podepisuje pomocí FN-DSA (FALCON) — a proč jediný změněný znak podpis zlomí.
Stav: 2026-09-07
1. O co tu jde
Hodnocení na McGesund není textové pole v databázi, kterému se musí věřit. Při odeslání je digitálně podepsáno a každý návštěvník si tento podpis může později přepočítat ve vlastním prohlížeči.
Pro část těchto podpisů používáme FALCON — přesněji FN-DSA-512 a FN-DSA-1024. Tento článek vysvětluje, co se přitom matematicky děje.
Důležité na úvod:
FALCON není šifrování. Text hodnocení se přece má číst. FALCON nedokazuje utajení, nýbrž původ a neporušenost.
2. Co přesně se podepisuje
Nepodepisuje se souvislý text, nýbrž kompaktní datový objekt, který text jednoznačně přibíjí:
{
"v": 1,
"typ": "rev-comment",
"f": "<ID firmy>",
"c": "<ID hodnocení>",
"h": "<SHA-256 textu hodnocení>",
"rh": "<SHA-256 celého odeslaného datového záznamu>",
"rv": 1,
"qh": "<SHA-256 QR obálky, jen u QR hodnocení>",
"iat": 1757203200
}
To je naše zpráva . Váže dohromady:
- ke kterému podniku hodnocení patří (
f), - o které hodnocení jde (
c), - jaký text za ním stál — jako hash (
h), - jaký datový záznam byl celkově odeslán (
rh): text, srdíčka, geostatus a údaje o důvodu, kanonicky serializované a zahashované, ve verzi schématurv, - z jakého QR kódu hodnocení pochází (
qh) — u hodnocení bez QR kódu pole odpadá, - kdy se podepisovalo (
iat).
Jediný změněný znak v textu hodnocení tento řetěz zlomí. Přesně to je jeho účel — a od zavedení rh platí totéž pro dodatečně posunuté srdíčko nebo změněný geostatus.
3. Základní problém
Čtenář, který přijde na profil podniku, stojí před dvěma otázkami:
- Pochází toto hodnocení opravdu ze systému McGesund?
- Bylo dodatečně změněno?
K tomu slouží pár klíčů:
- soukromý klíč — zůstává v podpisové službě
- veřejný klíč — může mít každý
Podepisuje se soukromým, ověřuje veřejným klíčem. A to na zařízení čtenáře, ne na našem serveru.
4. Proč FALCON?
Mnohá dnešní podpisová schémata stojí na problémech, které jsou pro klasické počítače těžké, pro dostatečně velké kvantové počítače by se ale mohly stát podstatně lehčími.
U hodnocení je to relevantnější než u prchavé zprávy: hodnocení má být ověřitelné ještě za pět nebo deset let. Kdo podepisuje dnes, podepisuje na celou dobu životnosti záznamu.
FALCON proto stojí na mřížkové kryptografii:
Postaví se matematicky snadno popsatelná mřížka, ve které je určitá vyhledávací úloha extrémně těžká.
5. Co je matematická mřížka?
Dva vektory:
Všechny celočíselné kombinace
dávají mřížku bodů. Například:
Rozhodující je:
Samotná mřížka se popíše snadno. Najít v ní určité vlastnosti je velmi těžké.
6. Tajemstvím jsou krátké vektory
Klasická těžká úloha zní:
To je Shortest Vector Problem. Ve dvou dimenzích se dá vyzkoušet. FALCON pracuje v dimenzi 512 nebo 1024 — tam je to beznadějné.
FALCON ovšem nepotřebuje nejkratší vektor jako takový, nýbrž něco příbuzného: k zadanému cílovému bodu najít blízký bod mřížky. I to je bez správné dodatečné informace těžké.
7. Polynomy místo čísel
FALCON používá NTRU mřížku a počítá s polynomy. Tedy místo s jednotlivými čísly se seznamy koeficientů:
Počítá se v okruhu
To znamená:
- : počítání modulo . Při třeba , neboť .
- : drží polynomy na pevné délce.
FALCON konkrétně používá:
8. Ústřední trik
Soukromý klíč se skládá ze čtyř malých polynomů
s NTRU rovnicí
Tato čtveřice tvoří dohromady tajnou, dobře tvarovanou bázi mřížky — popis mřížky z krátkých vektorů.
Veřejný klíč je v podstatě jediný polynom:
Z vyplývá táž mřížka, ale v nepohodlné bázi z dlouhých vektorů:
To je celé jádro FALCONu. Obě báze popisují tutéž mřížku. Jen jedna je k počítání použitelná a druhá ne.
Lze si to představit jako plán města: veřejně dostupná je úplná mapa. Tajná je znalost zkratek.
9. Z hodnocení se stane bod
Před podepsáním projde objekt payloadu hashovací funkcí. FALCON k tomu používá Hash-to-Point: ze zprávy nevznikne číselná hodnota, nýbrž rovnou bod v okruhu.
Podpisová služba navíc vylosuje náhodnou sůl (320 bitů) a zahashuje ji s sebou:
Sůl není ozdoba. Bez ní by totéž hodnocení dávalo vždy tentýž podpis a z mnoha podpisů by šlo rekonstruovat tajnou bázi. Putuje proto s sebou do podpisu.
10. Co je platný podpis
Hledá se dvojice
se dvěma vlastnostmi:
První podmínku samotnou lze splnit triviálně — položí se a . Druhá podmínka činí úlohu těžkou.
11. Kompletně propočítaný miniaturní příklad
Vše zmenšíme na hračkovou velikost: polynomy s jediným koeficientem, tedy obyčejná čísla, a
Tajný klíč. Dvě malá čísla:
Veřejný klíč. Platí , neboť . Tedy:
Mřížka. .
Veřejná báze vyplývá přímo z :
Obojí leží v — a obojí je dlouhé.
Tajnou bázi zná jen podpisová služba:
neboť a . Determinant je
NTRU rovnice tedy vychází. Oba vektory jsou krátké.
Krok 1: Zahashovat hodnocení
Dejme tomu, že objekt payloadu hodnocení dá
Krok 2: První, špatné řešení
splňuje . Ale délka je — mnohem příliš dlouhá.
Krok 3: Zkrátit tajnou bází
Podpisová služba vyjádří cílový bod ve své krátké bázi:
To vede na a . Po zaokrouhlení na , vychází bod mřížky
Kontrola: , tedy skutečně v . Odečteme:
Délka:
To je podpis.
Krok 4: Týž postup s veřejnou bází
Kdo zná jen , má bázi . Týž zaokrouhlovací výpočet tam dá bod mřížky a s ním
Rovněž platné řešení rovnice — ale sedmkrát delší. Je-li mez pro přijetí nastavena pod 26, je bezcenné.
To jsou padací dveře FALCONu v jednom řádku.
Krok 5: Prohlížeč ověřuje
Prohlížeč dostane hodnocení, sůl a . Znovu spočítá hash, obdrží , rekonstruuje
a ověří délku:
Krok 6: Někdo změní text hodnocení
Změní-li se text dodatečně, změní se hash obsahu a s ním bod, řekněme
Starý podpis zůstává , ale
Hodnocení můžeme smazat. Změnit ho tak, aby si toho nikdo nevšiml, nemůžeme.
Poznámka na rovinu k příkladu
Ve dvou dimenzích může útočník krátká řešení jednoduše vyzkoušet — pro třeba . Příklad není bezpečný; ukazuje jen mechanismus. U FALCON-1024 má vektor 2048 koeficientů a tam vyzkoušení nevede nikam.
12. Proč se prostě nezaokrouhlí?
Postup z kroku 3 se nazývá Babaiovo zaokrouhlení. Pro učebnicový příklad stačí — pro skutečné podpisové schéma ne.
Důvod: zaokrouhlené podpisy neleží rovnoměrně rozdělené. Jejich tvar závisí na geometrii tajné báze. Z dostatečného množství podpisů by šlo tuto geometrii rekonstruovat — a s ní soukromý klíč. Přesně na tom dřívější mřížková podpisová schémata ztroskotala.
FALCON proto losuje krátké vektory z diskrétního Gaussova rozdělení nad mřížkou:
Hodnoty blízko cílového bodu jsou pravděpodobnější, ale která přesně bude zvolena, je náhodné. Výsledkem je rozdělení, které neprozradí nic o použité bázi — matematicky: není odlišitelné od rozdělení, jež závisí jen na samotné mřížce.
Tento sampler je nejnáročnější částí FALCONu. Běží rekurzivně nad stromovou strukturou a pracuje s čísly v plovoucí řádové čárce — což činí implementaci choulostivou a je hlavním důvodem, proč se FALCON správně implementuje hůř než ML-DSA.
13. Co se ve skutečnosti přenáší
Podpis se skládá z
Jen — ne dvojice. si ověřovatel dopočítá sám:
Protože koeficienty jsou malé a rozptylují se kolem nuly, dají se silně komprimovat. To je důvod nápadně kompaktních podpisů FALCONu:
| veřejný klíč | podpis | |
|---|---|---|
| FALCON-512 | 897 B | ~666 B |
| FALCON-1024 | 1 793 B | ~1 280 B |
Pro srovnání: ML-DSA-87 potřebuje 4 627 bajtů. Na McGesund ovšem žádný z těchto podpisů nevězí v samotném QR kódu — nálepka nese pouze obálku Ed25519; postkvantová razítka leží u datového záznamu a při ověřování se donačtou. Velikost tu tedy nerozhoduje o tisknutelnosti, nýbrž o úložišti a přenosu: razítko FALCON je zhruba čtvrtinové oproti razítku ML-DSA.
14. Proč FALCON ověřuje rychle
Naivní násobení polynomů stojí
S rychlou Fourierovou transformací to klesne přibližně na
Při je to rozdíl mezi milionem a zhruba deseti tisíci operacemi. Proto ověření v prohlížeči návštěvníka proběhne v milisekundách — a proto vězí v názvu ono F:
FAst Fourier Lattice-based COmpact signatures over NTRU.
15. Průběh v obrázku
16. Proč útočník neuspěje
Zná a s ním celou mřížku. Zná také cílový bod , jakmile je hodnocení veřejné. Co mu chybí, je krátká báze.
Aby hodnocení zpadělal, musel by k sebou zvolenému najít krátký vektor — jen z veřejného popisu. To je úloha, kterou ilustroval krok 4 příkladu: bez dobrých vektorů skončí týž výpočet u mnohem příliš dlouhého řešení.
V dimenzi 1024 jsou od toho nejlepší známé postupy — klasické i kvantové — daleko.
17. Co s tím McGesund konkrétně dělá
Obálka. Každé podepsané hodnocení nese podpis Ed25519. To je povinná varianta — klasická, velmi malá, nativně ověřitelná v každém prohlížeči.
Postkvantová razítka. Vedle ní leží jeden nebo dva kvantově odolné podpisy. Které, závisí na tarifu:
| Tarif | dostupné stupně podpisu |
|---|---|
| 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, obojí souběžně |
Souběžná varianta je záměrně redundantní. FALCON stojí na NTRU mřížkách, ML-DSA na modulových mřížkách. Ukázala-li by se jedna z obou rodin slabší, než se dnes předpokládá, nese druhá dál.
Časová kotva. Otisk podpisového klíče je přes OpenTimestamps zakotven v bloku Bitcoinu. Tím je doloženo nejen to, že je podpis pravý, ale i to, že v určitém okamžiku již existoval — aniž by někdo musel věřit našemu časovému razítku.
To vše se počítá v prohlížeči čtenáře, přes modul WASM. My dodáváme data; ověření běží na zařízení návštěvníka. Kdybychom zítra zmizeli ze sítě, jednou načtené hodnocení by zůstalo ověřitelné.
K zařazení názvů: FALCON se v současnosti standardizuje jako FN-DSA; návrh je zamýšlen jako FIPS 206, ale zatím není dokončen. Proto se stupně v kódu McGesund jmenují FN-DSA-512 a FN-DSA-1024, i když se v běžné řeči nadále mluví o FALCONu.
18. Nejdůležitější intuice
Veřejný klíč je úplný popis bludiště. Prohlédnout si ho smí každý.
Podpis je doklad: „Pro přesně toto hodnocení jsem našel velmi krátkou cestu."
Soukromý klíč je znalost zkratek.
Čtenář zkratky znát nemusí. Jen přeměří, zda je předložená cesta skutečně krátká a zda skutečně patří k tomuto hodnocení. Obojí zvládne bez nás.
Kdo změní text, posune bod — a stará cesta vede do prázdna.