Схеми за подпис
FALCON, обяснен математически
Как един отзив в McGesund се подписва с FN-DSA (FALCON) — и защо един променен знак разрушава подписа.
Актуално към: 2026-09-07
1. За какво става дума
Отзивът в McGesund не е текстово поле в база данни, на което човек трябва просто да вярва. При изпращането той се подписва цифрово и всеки посетител може по-късно да преизчисли този подпис в собствения си браузър.
За част от тези подписи използваме FALCON — по-точно FN-DSA-512 и FN-DSA-1024. Тази статия обяснява какво се случва при това математически.
Важно предварително:
FALCON не е криптиране. Текстът на отзива трябва да може да се чете. FALCON не доказва поверителност, а произход и цялост.
2. Какво точно се подписва
Подписва се не свободният текст, а компактен обект от данни, който еднозначно приковава текста:
{
"v": 1,
"typ": "rev-comment",
"f": "<ID на фирмата>",
"c": "<ID на отзива>",
"h": "<SHA-256 на текста на отзива>",
"rh": "<SHA-256 на целия запис от подаването>",
"rv": 1,
"qh": "<SHA-256 на QR плика, само при QR отзиви>",
"iat": 1757203200
}
Това е нашето съобщение . То свързва:
- към кое предприятие принадлежи отзивът (
f), - за кой отзив става дума (
c), - какъв текст е стоял зад него — като хеш-стойност (
h), - какъв запис е бил подаден като цяло (
rh): текст, сърца, гео статус и данни за повода, канонично сериализирани и хеширани, във версия на схематаrv, - от кой QR код произхожда отзивът (
qh) — при отзив без QR полето отпада, - кога е подписано (
iat).
Един променен знак в текста на отзива разкъсва тази верига. Точно това е целта — а откакто съществува rh, същото важи и за допълнително преместено сърце или променен гео статус.
3. Основният проблем
Читателят, който попада на профил на предприятие, стои пред два въпроса:
- Наистина ли този отзив произхожда от системата на McGesund?
- Променян ли е след това?
За целта има двойка ключове:
- частен ключ — остава в услугата за подписване
- публичен ключ — може да е у всеки
Подписва се с частния, проверява се с публичния ключ. И то на устройството на читателя, а не на нашия сървър.
4. Защо FALCON?
Много от днешните схеми за подпис почиват на задачи, които за класическите изчислителни машини са трудни, но за достатъчно големи квантови компютри биха могли да станат значително по-лесни.
При един отзив това е по-съществено, отколкото при мимолетно съобщение: отзивът трябва да е проверим и след пет или десет години. Който подписва днес, подписва за целия живот на записа.
Затова FALCON почива на решетъчна криптография:
Изгражда се математически лесно описуема решетка, в която определена задача за търсене е изключително трудна.
5. Какво е математическа решетка?
Два вектора:
Всички целочислени комбинации
образуват решетка от точки. Например:
Решаващото е:
Самата решетка се описва лесно. Намирането на определени свойства в нея е много трудно.
6. Тайната са късите вектори
Класическата трудна задача гласи:
Това е Shortest Vector Problem — задачата за най-късия вектор. В две измерения тя може да се изпробва. FALCON работи в размерност 512 или 1024 — там това е безнадеждно.
FALCON обаче не се нуждае от най-късия вектор изобщо, а от нещо сродно: към предварително зададена целева точка да се намери близка точка от решетката. И това без правилната допълнителна информация е трудно.
7. Полиноми вместо числа
FALCON използва решетка NTRU и смята с полиноми. Тоест вместо с отделни числа — със списъци от коефициенти:
Смята се в пръстена
Това означава:
- : смятане по модул . При например , тъй като .
- : държи полиномите с фиксирана дължина.
FALCON използва конкретно:
8. Централният трик
Частният ключ се състои от четири малки полинома
с уравнението NTRU
Тези четири образуват заедно тайна, добронамерена база на решетката — описание на решетката чрез къси вектори.
Публичният ключ е по същество един-единствен полином:
От се получава същата решетка, но в неудобна база от дълги вектори:
Това е цялото ядро на FALCON. Двете бази описват една и съща решетка. Само че едната е годна за смятане, а другата — не.
Може да се мисли като за план на град: публична е пълната карта. Тайно е познаването на преките пътища.
9. Отзивът се превръща в точка
Преди да се подпише, обектът на полезния товар минава през хеш-функция. FALCON използва за целта Hash-to-Point: от съобщението не се получава числова стойност, а направо точка в пръстена.
Допълнително услугата за подписване тегли случайна сол (320 бита) и я хешира заедно с него:
Солта не е украса. Без нея един и същ отзив би давал винаги един и същ подпис и от много подписи тайната база би могла да бъде възстановена. Затова тя пътува заедно с подписа.
10. Какво представлява валидният подпис
Търси се двойка
с две свойства:
Първото условие само по себе си е тривиално за изпълнение — задава се и . Второто условие прави задачата трудна.
11. Напълно пресметнат мини пример
Свиваме всичко до размер на играчка: полиноми само с един коефициент, тоест обикновени числа, и
Тайният ключ. Две малки числа:
Публичният ключ. В сила е , тъй като . Тоест:
Решетката. .
Публичната база се получава направо от :
И двата лежат в — и двата са дълги.
Тайната база я знае само услугата за подписване:
тъй като и . Детерминантата е
тоест уравнението NTRU излиза. И двата вектора са къси.
Стъпка 1: Хеширане на отзива
Да приемем, че обектът на полезния товар на отзива дава
Стъпка 2: Първо, лошо решение
изпълнява . Но дължината е — много прекалено дълга.
Стъпка 3: Скъсяване с тайната база
Услугата за подписване изразява целевата точка в своята къса база:
Това води до и . Закръглено до , се получава точката от решетката
Проверка: , тоест наистина в . Изваждане:
Дължина:
Това е подписът.
Стъпка 4: Същият метод с публичната база
Който знае само , разполага с базата . Същата сметка със закръгляне дава там точката от решетката и оттам
Също валидно решение на уравнението — но седем пъти по-дълго. Ако границата на приемане се постави под 26, то е безполезно.
Това е капанът на FALCON в един ред.
Стъпка 5: Браузърът проверява
Браузърът получава отзива, солта и . Той изчислява хеша наново, получава , реконструира
и проверява дължината:
Стъпка 6: Някой променя текста на отзива
Ако текстът бъде променен допълнително, се променя хешът на съдържанието, а с него и точката, да кажем
Старият подпис остава , но
Можем да изтрием отзив. Не можем да го променим, без това да се забележи.
Бележка за честност към примера
В две измерения нападателят може просто да изпробва къси решения — за например . Примерът не е сигурен; той показва само механизма. При FALCON-1024 векторът има 2048 коефициента и там изпробването не води доникъде.
12. Защо не се закръгля просто?
Методът от стъпка 3 се нарича закръгляне на Бабай. За учебен пример стига — за истинска схема за подпис не.
Причината: закръглените подписи не лежат равномерно разпределени. Формата им зависи от геометрията на тайната база. От достатъчно много подписи тази геометрия би могла да бъде възстановена — а с нея и частният ключ. Точно на това са се провалили по-ранни решетъчни схеми за подпис.
Затова FALCON тегли късите вектори от дискретно гаусово разпределение върху решетката:
Стойностите близо до целевата точка са по-вероятни, но коя точно ще бъде избрана, е случайно. Резултатът е разпределение, което не издава нищо за използваната база — математически: то е неразличимо от разпределение, което зависи само от самата решетка.
Този семплер е най-взискателната част на FALCON. Той работи рекурсивно върху дървовидна структура и борави с числа с плаваща запетая — което прави реализацията деликатна и е главната причина FALCON да е по-труден за коректно прилагане от ML-DSA.
13. Какво всъщност се предава
Подписът се състои от
Само — не двойката. проверяващият изчислява сам:
Тъй като коефициентите на са малки и се разпръскват около нулата, те се компресират силно. Това е причината за подчертано компактните подписи на FALCON:
| публичен ключ | подпис | |
|---|---|---|
| FALCON-512 | 897 B | ~666 B |
| FALCON-1024 | 1793 B | ~1280 B |
За сравнение: ML-DSA-87 се нуждае от 4627 байта. При McGesund обаче нито един от тези подписи не стои в самия QR код — стикерът носи само плика Ed25519; постквантовите печати лежат при записа и се дозареждат при проверката. Тук размерът следователно не решава въпроса с отпечатването, а този за съхранението и преноса: печатът FALCON е около една четвърт от размера на печата ML-DSA.
14. Защо FALCON проверява бързо
Наивното умножение на полиноми струва
С бързото преобразувание на Фурие това пада до приблизително
При това е разликата между един милион и около десет хиляди операции. Затова проверката в браузъра на посетителя минава за милисекунди — и затова в името стои F:
FAst Fourier Lattice-based COmpact signatures over NTRU.
15. Процесът в картина
16. Защо нападателят се проваля
Той знае и с това цялата решетка. Знае и целевата точка , щом отзивът е публичен. Липсва му късата база.
За да фалшифицира отзив, той би трябвало към самостоятелно избрано да намери къс вектор — само от публичното описание. Това е задачата, която стъпка 4 от примера илюстрира: без добрите вектори същата сметка стига до много прекалено дълго решение.
В размерност 1024 най-добрите известни методи — както класически, така и квантови — са далеч от това.
17. Какво прави McGesund конкретно с това
Пликът. Всеки подписан отзив носи подпис Ed25519. Това е задължителният вариант — класически, съвсем малък, проверим нативно във всеки браузър.
Постквантовите печати. До него лежат един или два квантово устойчиви подписа. Кои — зависи от тарифата:
| Тарифа | налични нива на подпис |
|---|---|
| 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, и двата успоредно |
Успоредният вариант е съзнателно резервиран. FALCON стои върху решетки NTRU, ML-DSA — върху модулни решетки. Ако едно от двете семейства се окаже по-слабо от предполаганото днес, другото продължава да носи.
Времевата котва. Отпечатъкът на ключа за подписване се закотвя чрез OpenTimestamps в блок на Bitcoin. С това е доказано не само че подписът е истински, а и че той вече е съществувал в определен момент — без някой да трябва да вярва на нашия времеви печат.
Всичко това се смята в браузъра на читателя, чрез модул WASM. Ние доставяме данните; проверката върви на устройството на посетителя. Ако утре излезем от мрежата, веднъж зареден отзив би останал проверим.
За подредбата на имената: FALCON понастоящем се стандартизира като FN-DSA; проектът е предвиден като FIPS 206, но още не е завършен. Затова нивата в кода на McGesund се наричат FN-DSA-512 и FN-DSA-1024, макар в разговорната употреба все още да се говори за FALCON.
18. Най-важната интуиция
Публичният ключ е пълното описание на един лабиринт. Всеки има право да го разгледа.
Подписът е доказателството: „Намерих за точно този отзив много кратък път.“
Частният ключ е познаването на преките пътища.
Читателят не е нужно да познава преките пътища. Той само премерва дали представеният път наистина е къс и наистина принадлежи на този отзив. И двете може да направи без нас.
Който промени текста, размества точката — и старият път води в празното.