Schematy podpisu
FALCON wyjaśniony matematycznie
Jak opinia w McGesund zostaje podpisana za pomocą FN-DSA (FALCON) — i dlaczego jeden zmieniony znak łamie podpis.
Stan: 2026-09-07
1. O co tutaj chodzi
Opinia w McGesund nie jest polem tekstowym w bazie danych, któremu trzeba wierzyć. Przy wysłaniu zostaje podpisana cyfrowo, a każdy odwiedzający może później przeliczyć ten podpis w swojej własnej przeglądarce.
Do części tych podpisów używamy FALCON — dokładniej FN-DSA-512 i FN-DSA-1024. Ten artykuł wyjaśnia, co przy tym dzieje się matematycznie.
Ważna uwaga na wstępie:
FALCON nie jest szyfrowaniem. Tekst opinii ma przecież być czytany. FALCON nie dowodzi poufności, lecz pochodzenia i nienaruszalności.
2. Co dokładnie jest podpisywane
Podpisywany jest nie tekst ciągły, lecz kompaktowy obiekt danych, który jednoznacznie przybija tekst:
{
"v": 1,
"typ": "rev-comment",
"f": "<ID firmy>",
"c": "<ID opinii>",
"h": "<SHA-256 tekstu opinii>",
"rh": "<SHA-256 całego rekordu przesłanej opinii>",
"rv": 1,
"qh": "<SHA-256 koperty QR, tylko przy opiniach z QR>",
"iat": 1757203200
}
To jest nasza wiadomość . Wiąże ona ze sobą:
- do jakiej firmy należy opinia (
f), - o którą opinię chodzi (
c), - jaki tekst za nią stał — jako wartość skrótu (
h), - jaki rekord został przesłany w całości (
rh): tekst, serduszka, status geolokalizacji i informacje o okoliczności, kanonicznie zserializowane i zhaszowane, w wersji schematurv, - z którego kodu QR pochodzi opinia (
qh) — przy opinii bez QR pole odpada, - kiedy podpisano (
iat).
Jeden zmieniony znak w tekście opinii łamie ten łańcuch. I dokładnie o to chodzi — a od czasu rh to samo dotyczy przesuniętego później serduszka albo zmienionego statusu geolokalizacji.
3. Problem podstawowy
Czytelnik, który trafia na profil firmy, staje przed dwoma pytaniami:
- Czy ta opinia rzeczywiście pochodzi z systemu McGesund?
- Czy została później zmieniona?
Służy do tego para kluczy:
- klucz prywatny — pozostaje w usłudze podpisującej
- klucz publiczny — może go mieć każdy
Podpisuje się kluczem prywatnym, weryfikuje publicznym. I to na urządzeniu czytelnika, a nie na naszym serwerze.
4. Dlaczego FALCON?
Wiele dzisiejszych metod podpisu opiera się na problemach, które dla klasycznych komputerów są trudne, ale dla dostatecznie dużych komputerów kwantowych mogłyby stać się wyraźnie łatwiejsze.
Przy opinii jest to bardziej istotne niż przy ulotnej wiadomości: opinia ma być sprawdzalna jeszcze za pięć albo dziesięć lat. Kto podpisuje dziś, podpisuje na cały okres życia wpisu.
FALCON opiera się dlatego na kryptografii kratowej:
Buduje się kratę, którą łatwo opisać matematycznie, a w której pewne zadanie wyszukiwania jest ekstremalnie trudne.
5. Czym jest krata matematyczna?
Dwa wektory:
Wszystkie całkowitoliczbowe kombinacje
tworzą kratę złożoną z punktów. Na przykład:
Rozstrzygające jest to, że:
Samą kratę łatwo opisać. Znalezienie w niej pewnych własności jest bardzo trudne.
6. Sekretem są krótkie wektory
Klasyczne trudne zadanie brzmi:
To Shortest Vector Problem, problem najkrótszego wektora. W dwóch wymiarach można go rozwiązać metodą prób. FALCON pracuje w wymiarze 512 albo 1024 — tam jest to beznadziejne.
FALCON potrzebuje jednak nie najkrótszego wektora jako takiego, lecz czegoś pokrewnego: znalezienia do zadanego punktu docelowego bliskiego punktu kraty. To również jest bez właściwej informacji dodatkowej trudne.
7. Wielomiany zamiast liczb
FALCON używa kraty NTRU i liczy na wielomianach. Zamiast na pojedynczych liczbach — na listach współczynników:
Obliczenia prowadzone są w pierścieniu
To oznacza:
- : liczenie modulo . Przy na przykład , bo .
- : utrzymuje wielomiany na stałej długości.
FALCON używa konkretnie:
8. Centralna sztuczka
Klucz prywatny składa się z czterech małych wielomianów
z równaniem NTRU
Te cztery tworzą razem tajną, przyjazną bazę kraty — opis kraty złożony z krótkich wektorów.
Klucz publiczny to w istocie jeden jedyny wielomian:
Z wynika ta sama krata, ale w nieporęcznej bazie z długich wektorów:
To jest cały rdzeń FALCON. Obie bazy opisują tę samą kratę. Tyle że jedna nadaje się do liczenia, a druga nie.
Można to sobie wyobrazić jak plan miasta: publiczna jest pełna mapa. Tajna jest znajomość skrótów.
9. Opinia staje się punktem
Zanim nastąpi podpis, obiekt payload przechodzi przez funkcję skrótu. FALCON używa do tego Hash-to-Point: z wiadomości powstaje nie wartość liczbowa, lecz bezpośrednio punkt w pierścieniu.
Dodatkowo usługa podpisująca losuje sól (320 bitów) i haszuje ją razem z wiadomością:
Sól nie jest dodatkiem. Bez niej ta sama opinia dawałaby zawsze ten sam podpis, a z wielu podpisów dałoby się zrekonstruować tajną bazę. Dlatego wędruje razem do podpisu.
10. Czym jest ważny podpis
Szukana jest para
o dwóch własnościach:
Pierwszy warunek sam w sobie jest trywialny do spełnienia — wystarczy przyjąć i . To drugi warunek czyni zadanie trudnym.
11. W pełni przeliczony miniprzykład
Kurczymy wszystko do rozmiaru zabawki: wielomiany z tylko jednym współczynnikiem, czyli zwykłe liczby, oraz
Klucz tajny. Dwie małe liczby:
Klucz publiczny. Zachodzi , bo . Zatem:
Krata. .
Baza publiczna wynika wprost z :
Oba wektory leżą w — i oba są długie.
Bazę tajną zna tylko usługa podpisująca:
bo oraz . Wyznacznik wynosi
równanie NTRU jest więc spełnione. Oba wektory są krótkie.
Krok 1: Zhaszowanie opinii
Przyjmijmy, że obiekt payload opinii daje
Krok 2: Pierwsze, złe rozwiązanie
spełnia . Ale długość wynosi — o wiele za dużo.
Krok 3: Skracanie za pomocą tajnej bazy
Usługa podpisująca wyraża punkt docelowy w swojej krótkiej bazie:
Prowadzi to do i . Po zaokrągleniu do , powstaje punkt kraty
Kontrola: , a więc rzeczywiście w . Odejmujemy:
Długość:
To jest podpis.
Krok 4: Ta sama procedura z bazą publiczną
Kto zna tylko , ma bazę . To samo zaokrąglanie daje tam punkt kraty , a tym samym
Również poprawne rozwiązanie równania — ale siedmiokrotnie dłuższe. Jeśli próg akceptacji ustawić poniżej 26, jest ono bezwartościowe.
To jest zapadka FALCON w jednej linijce.
Krok 5: Przeglądarka weryfikuje
Przeglądarka dostaje opinię, sól i . Przelicza skrót na nowo, otrzymuje , rekonstruuje
i sprawdza długość:
Krok 6: Ktoś zmienia tekst opinii
Jeśli tekst zostanie później zmieniony, zmienia się skrót treści, a wraz z nim punkt, powiedzmy
Stary podpis pozostaje , ale
Opinię możemy usunąć. Zmienić jej nie możemy tak, żeby nikt tego nie zauważył.
Uwaga o rzetelności przykładu
W dwóch wymiarach atakujący może po prostu wypróbować krótkie rozwiązania — dla na przykład . Ten przykład nie jest bezpieczny; pokazuje jedynie mechanizm. Przy FALCON-1024 wektor ma 2048 współczynników i tam metoda prób nie prowadzi donikąd.
12. Dlaczego nie zaokrągla się po prostu?
Metoda z kroku 3 nazywa się zaokrąglaniem Babaia. Do przykładu podręcznikowego wystarcza — do prawdziwego schematu podpisu już nie.
Powód: zaokrąglone podpisy nie są rozłożone równomiernie. Ich kształt zależy od geometrii tajnej bazy. Z dostatecznie wielu podpisów dałoby się tę geometrię zrekonstruować — a wraz z nią klucz prywatny. Właśnie na tym poległy wcześniejsze kratowe schematy podpisu.
FALCON losuje dlatego krótkie wektory z dyskretnego rozkładu Gaussa nad kratą:
Wartości blisko punktu docelowego są bardziej prawdopodobne, ale to, która dokładnie zostanie wybrana, jest losowe. Wynikiem jest rozkład, który nie zdradza niczego o użytej bazie — matematycznie: jest nieodróżnialny od rozkładu zależnego wyłącznie od samej kraty.
Ten sampler jest najbardziej wymagającą częścią FALCON. Działa rekurencyjnie na strukturze drzewiastej i pracuje na liczbach zmiennoprzecinkowych — co czyni implementację delikatną i jest głównym powodem, dla którego FALCON trudniej poprawnie zaimplementować niż ML-DSA.
13. Co faktycznie jest przesyłane
Podpis składa się z
Tylko — nie cała para. weryfikujący wylicza sam:
Ponieważ współczynniki są małe i rozrzucone wokół zera, dają się mocno skompresować. To jest powód rzucająco się w oczy kompaktowych podpisów FALCON:
| klucz publiczny | podpis | |
|---|---|---|
| FALCON-512 | 897 B | ~666 B |
| FALCON-1024 | 1793 B | ~1280 B |
Dla porównania: ML-DSA-87 potrzebuje 4627 bajtów. W McGesund żaden z tych podpisów nie tkwi jednak w samym kodzie QR — naklejka niesie tylko kopertę Ed25519; stemple PQ leżą przy rekordzie danych i są doładowywane przy weryfikacji. Rozmiar nie decyduje więc tutaj o drukowalności, lecz o pamięci i transmisji: stempel FALCON ma dobrą jedną czwartą rozmiaru stempla ML-DSA.
14. Dlaczego FALCON szybko weryfikuje
Naiwne mnożenie wielomianów kosztuje
Z szybką transformatą Fouriera spada to do mniej więcej
Przy to różnica między milionem a około dziesięcioma tysiącami operacji. Dlatego weryfikacja w przeglądarce odwiedzającego trwa milisekundy — i dlatego w nazwie tkwi F:
FAst Fourier Lattice-based COmpact signatures over NTRU.
15. Przebieg na rysunku
16. Dlaczego atakujący przegrywa
Zna , a tym samym całą kratę. Zna też punkt docelowy , gdy tylko opinia jest publiczna. Brakuje mu krótkiej bazy.
Aby sfałszować opinię, musiałby do samodzielnie wybranego znaleźć krótki wektor — wyłącznie z opisu publicznego. To jest zadanie, które zilustrował krok 4 przykładu: bez dobrych wektorów to samo obliczenie kończy się o wiele za długim rozwiązaniem.
W wymiarze 1024 najlepsze znane metody — zarówno klasyczne, jak i kwantowe — są od tego dalekie.
17. Co konkretnie robi z tym McGesund
Koperta. Każda podpisana opinia niesie podpis Ed25519. To wariant obowiązkowy — klasyczny, bardzo mały, natywnie weryfikowalny w każdej przeglądarce.
Stemple postkwantowe. Obok leżą jeden albo dwa podpisy odporne na ataki kwantowe. Które, zależy od taryfy:
| Taryfa | dostępne poziomy 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, oba równolegle |
Wariant równoległy jest świadomie nadmiarowy. FALCON stoi na kratach NTRU, ML-DSA na kratach modułowych. Gdyby jedna z obu rodzin okazała się słabsza, niż dziś się przyjmuje, druga niesie dowód dalej.
Kotwica czasu. Odcisk klucza podpisującego zostaje zakotwiczony przez OpenTimestamps w bloku Bitcoina. Dowodzi to nie tylko, że podpis jest prawdziwy, lecz także, że istniał już w określonym momencie — bez konieczności wiary komukolwiek w nasz znacznik czasu.
Wszystko to liczone jest w przeglądarce czytelnika, przez moduł WASM. My dostarczamy dane; weryfikacja przebiega na urządzeniu odwiedzającego. Gdybyśmy jutro zniknęli z sieci, raz załadowana opinia pozostałaby sprawdzalna.
Uwaga o nazwach: FALCON jest obecnie standaryzowany jako FN-DSA; projekt przewidziany jest jako FIPS 206, ale nie został jeszcze zamknięty. Dlatego poziomy w kodzie McGesund nazywają się FN-DSA-512 i FN-DSA-1024, nawet jeśli w mowie potocznej nadal mówi się o FALCON.
18. Najważniejsza intuicja
Klucz publiczny to pełny opis labiryntu. Każdy może go obejrzeć.
Podpis to dowód: „Znalazłem dla dokładnie tej opinii bardzo krótką drogę".
Klucz prywatny to znajomość skrótów.
Czytelnik nie musi znać skrótów. Sprawdza tylko, czy przedłożona droga rzeczywiście jest krótka i rzeczywiście należy do tej opinii. Jedno i drugie może zrobić bez nas.
Kto zmieni tekst, przesuwa punkt — a stara droga prowadzi w pustkę.