Handtekeningmethode
FALCON wiskundig uitgelegd
Hoe een McGesund-beoordeling met FN-DSA (FALCON) wordt ondertekend — en waarom één gewijzigd teken de handtekening breekt.
Stand: 2026-09-07
1. Waar het hier over gaat
Een beoordeling bij McGesund is geen tekstveld in een database dat u maar moet geloven. Zij wordt bij het verzenden digitaal ondertekend, en elke bezoeker kan die handtekening later in de eigen browser narekenen.
Voor een deel van deze handtekeningen gebruiken wij FALCON — preciezer FN-DSA-512 en FN-DSA-1024. Deze bijdrage legt uit wat daarbij wiskundig gebeurt.
Vooraf van belang:
FALCON is geen versleuteling. De beoordelingstekst is immers bedoeld om gelezen te worden. FALCON bewijst geen geheimhouding, maar herkomst en integriteit.
2. Wat er precies wordt ondertekend
Ondertekend wordt niet de lopende tekst, maar een compact gegevensobject dat de tekst eenduidig vastlegt:
{
"v": 1,
"typ": "rev-comment",
"f": "<bedrijfs-ID>",
"c": "<beoordelings-ID>",
"h": "<SHA-256 van de beoordelingstekst>",
"rh": "<SHA-256 van het volledige ingediende record>",
"rv": 1,
"qh": "<SHA-256 van de QR-envelop, alleen bij QR-beoordelingen>",
"iat": 1757203200
}
Dat is ons bericht . Het bindt samen:
- bij welke onderneming de beoordeling hoort (
f), - om welke beoordeling het gaat (
c), - welke tekst erachter stond — als hashwaarde (
h), - welk record in totaal is ingediend (
rh): tekst, hartjes, geostatus en gegevens over de aanleiding, canoniek geserialiseerd en gehasht, in schemaversierv, - uit welke QR-code de beoordeling afkomstig is (
qh) — bij een beoordeling zonder QR vervalt het veld, - wanneer er is ondertekend (
iat).
Eén gewijzigd teken in de beoordelingstekst breekt deze keten. Precies dat is het doel — en sinds rh geldt hetzelfde voor een achteraf verschoven hartje of een gewijzigde geostatus.
3. Het grondprobleem
Een lezer die op een ondernemingsprofiel terechtkomt, staat voor twee vragen:
- Komt deze beoordeling werkelijk uit het McGesund-systeem?
- Is zij achteraf gewijzigd?
Daarvoor bestaat een sleutelpaar:
- een private sleutel — blijft in de ondertekeningsdienst
- een openbare sleutel — mag iedereen hebben
Ondertekend wordt met de private, gecontroleerd met de openbare sleutel. En wel op het apparaat van de lezer, niet op onze server.
4. Waarom FALCON?
Veel van de huidige handtekeningmethoden berusten op problemen die voor klassieke computers moeilijk zijn, maar voor voldoende grote quantumcomputers duidelijk eenvoudiger zouden kunnen worden.
Bij een beoordeling is dat relevanter dan bij een vluchtig bericht: een beoordeling moet over vijf of tien jaar nog controleerbaar zijn. Wie vandaag ondertekent, ondertekent voor de volledige levensduur van de vermelding.
FALCON berust daarom op roostercryptografie:
Men bouwt een wiskundig eenvoudig te beschrijven rooster waarin een bepaalde zoekopgave extreem moeilijk is.
5. Wat is een wiskundig rooster?
Twee vectoren:
Alle geheeltallige combinaties
vormen een rooster van punten. Bijvoorbeeld:
Doorslaggevend is:
Het rooster zelf is eenvoudig te beschrijven. Bepaalde eigenschappen daarin vinden is zeer moeilijk.
6. Het geheim zijn korte vectoren
De klassieke moeilijke opgave luidt:
Dat is het Shortest Vector Problem. In twee dimensies kunt u het uitproberen. FALCON werkt in dimensie 512 of 1024 — daar is het kansloos.
FALCON heeft echter niet de kortste vector als zodanig nodig, maar iets verwants: bij een gegeven doelpunt een nabijgelegen roosterpunt vinden. Ook dat is zonder de juiste extra informatie moeilijk.
7. Polynomen in plaats van getallen
FALCON gebruikt een NTRU-rooster en rekent met polynomen. Dus niet met losse getallen, maar met coëfficiëntenlijsten:
Er wordt gerekend in de ring
Dat betekent:
- : rekenen modulo . Bij bijvoorbeeld , want .
- : houdt de polynomen op vaste lengte.
FALCON gebruikt concreet:
8. De centrale truc
De private sleutel bestaat uit vier kleine polynomen
met de NTRU-vergelijking
Deze vier vormen samen een geheime, gunstige roosterbasis — een beschrijving van het rooster uit korte vectoren.
De openbare sleutel is in wezen één enkel polynoom:
Uit volgt hetzelfde rooster, maar in een onhandige basis van lange vectoren:
Dat is de hele kern van FALCON. Beide bases beschrijven hetzelfde rooster. Alleen is de ene bruikbaar om mee te rekenen en de andere niet.
U kunt zich dat voorstellen als een stadsplattegrond: openbaar is de volledige kaart. Geheim is de kennis van de sluiproutes.
9. De beoordeling wordt een punt
Voordat er wordt ondertekend, gaat het payload-object door een hashfunctie. FALCON gebruikt daarvoor hash-to-point: uit het bericht ontstaat geen getalswaarde, maar rechtstreeks een punt in de ring.
Daarnaast trekt de ondertekeningsdienst een willekeurig salt (320 bit) en hasht dat mee:
Het salt is geen bijzaak. Zonder salt zou dezelfde beoordeling altijd dezelfde handtekening opleveren, en uit veel handtekeningen zou de geheime basis te reconstrueren zijn. Het gaat daarom mee in de handtekening.
10. Wat een geldige handtekening is
Gezocht wordt een paar
met twee eigenschappen:
Aan de eerste voorwaarde alleen is triviaal te voldoen — u neemt en . De tweede voorwaarde maakt de opgave moeilijk.
11. Een volledig doorgerekend minivoorbeeld
Wij krimpen alles tot speelgoedformaat: polynomen met slechts één coëfficiënt, dus gewone getallen, en
De geheime sleutel. Twee kleine getallen:
De openbare sleutel. Er geldt , want . Dus:
Het rooster. .
De openbare basis volgt rechtstreeks uit :
Beide liggen in — en beide zijn lang.
De geheime basis kent alleen de ondertekeningsdienst:
want en . De determinant is
de NTRU-vergelijking klopt dus. Beide vectoren zijn kort.
Stap 1: De beoordeling hashen
Laten wij aannemen dat het payload-object van de beoordeling oplevert
Stap 2: Een eerste, slechte oplossing
voldoet aan . Maar de lengte is — veel te lang.
Stap 3: Met de geheime basis inkorten
De ondertekeningsdienst drukt het doelpunt uit in zijn korte basis:
Dat leidt tot en . Afgerond op , ontstaat het roosterpunt
Controle: , dus inderdaad in . Aftrekken:
Lengte:
Dat is de handtekening.
Stap 4: Dezelfde methode met de openbare basis
Wie alleen kent, heeft de basis . Dezelfde afrondingsberekening levert daar het roosterpunt op en daarmee
Eveneens een geldige oplossing van de vergelijking — maar zevenmaal langer. Wordt de acceptatiegrens onder 26 gelegd, dan is zij waardeloos.
Dat is het valluik van FALCON in één regel.
Stap 5: De browser controleert
De browser krijgt de beoordeling, het salt en . Hij berekent de hash opnieuw, verkrijgt , reconstrueert
en controleert de lengte:
Stap 6: Iemand wijzigt de beoordelingstekst
Wordt de tekst achteraf gewijzigd, dan verandert de content-hash en daarmee het punt, zeg
De oude handtekening blijft , maar
Wij kunnen een beoordeling verwijderen. Veranderen kunnen wij haar niet zonder dat het opvalt.
Eerlijkheidshalve over dit voorbeeld
In twee dimensies kan een aanvaller korte oplossingen eenvoudig uitproberen — voor bijvoorbeeld . Het voorbeeld is niet veilig; het toont alleen het mechanisme. Bij FALCON-1024 heeft de vector 2048 coëfficiënten, en daar leidt uitproberen nergens toe.
12. Waarom wordt er niet gewoon afgerond?
De methode uit stap 3 heet Babai-afronding. Voor een leerboekvoorbeeld volstaat zij — voor een echte handtekeningmethode niet.
De reden: de afgeronde handtekeningen liggen niet gelijkmatig verdeeld. Hun vorm hangt af van de meetkunde van de geheime basis. Uit voldoende veel handtekeningen zou die meetkunde te reconstrueren zijn — en daarmee de private sleutel. Precies daarop zijn eerdere roostergebaseerde handtekeningmethoden gestrand.
FALCON trekt de korte vectoren daarom uit een discrete gaussverdeling over het rooster:
Waarden dicht bij het doelpunt zijn waarschijnlijker, maar welke precies wordt gekozen, is willekeurig. Het resultaat is een verdeling die niets over de gebruikte basis verraadt — wiskundig: zij is niet te onderscheiden van een verdeling die alleen van het rooster zelf afhangt.
Deze sampler is het veeleisendste onderdeel van FALCON. Hij loopt recursief over een boomstructuur en werkt met drijvendekommagetallen — wat de implementatie hachelijk maakt en de belangrijkste reden is dat FALCON moeilijker correct te realiseren is dan ML-DSA.
13. Wat er daadwerkelijk wordt overgedragen
De handtekening bestaat uit
Alleen — niet het paar. rekent de controleur zelf uit:
Doordat de coëfficiënten van klein zijn en rond nul spreiden, laten zij zich sterk comprimeren. Dat is de reden voor FALCONs opvallend compacte handtekeningen:
| openbare sleutel | handtekening | |
|---|---|---|
| FALCON-512 | 897 B | ~666 B |
| FALCON-1024 | 1.793 B | ~1.280 B |
Ter vergelijking: ML-DSA-87 heeft 4.627 byte nodig. Bij McGesund zit overigens geen van deze handtekeningen in de QR-code zelf — de sticker draagt alleen de Ed25519-envelop; de PQ-stempels liggen bij het record en worden bij het controleren nageladen. De omvang beslist hier dus niet over de afdrukbaarheid, maar over opslag en overdracht: een FALCON-stempel is ruim een kwart zo groot als een ML-DSA-stempel.
14. Waarom FALCON snel controleert
Naïeve polynoomvermenigvuldiging kost
Met de snelle fouriertransformatie daalt dat tot ongeveer
Bij is dat het verschil tussen een miljoen en ongeveer tienduizend bewerkingen. Daarom loopt de controle in de browser van een bezoeker in milliseconden — en daarom zit de F in de naam:
FAst Fourier Lattice-based COmpact signatures over NTRU.
15. Het verloop in beeld
16. Waarom een aanvaller strandt
Hij kent en daarmee het volledige rooster. Hij kent ook het doelpunt , zodra de beoordeling openbaar is. Wat hem ontbreekt, is de korte basis.
Om een beoordeling te vervalsen zou hij bij een zelfgekozen een korte vector moeten vinden — alleen uit de openbare beschrijving. Dat is de opgave die stap 4 van het voorbeeld heeft geïllustreerd: zonder de goede vectoren belandt dezelfde berekening bij een veel te lange oplossing.
In dimensie 1024 zijn de beste bekende methoden — zowel klassiek als quantumgebaseerd — daar ver van verwijderd.
17. Wat McGesund er concreet mee doet
De envelop. Elke ondertekende beoordeling draagt een Ed25519-handtekening. Dat is de verplichte variant — klassiek, zeer klein, in elke browser natief controleerbaar.
De post-quantumstempels. Daarnaast liggen een of twee quantumresistente handtekeningen. Welke, hangt af van het tarief:
| Tarief | beschikbare handtekeningniveaus |
|---|---|
| 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, beide parallel |
De parallelle variant is bewust redundant. FALCON staat op NTRU-roosters, ML-DSA op module-roosters. Mocht een van beide families zwakker zijn dan vandaag wordt aangenomen, dan draagt de andere verder.
Het tijdanker. De vingerafdruk van de ondertekeningssleutel wordt via OpenTimestamps in een Bitcoin-blok verankerd. Daarmee is niet alleen aangetoond dat de handtekening echt is, maar ook dat zij op een bepaald tijdstip al bestond — zonder dat iemand ons tijdstempel hoeft te geloven.
Dat alles wordt berekend in de browser van de lezer, via een WASM-module. Wij leveren de gegevens; de controle loopt op het apparaat van de bezoeker. Zouden wij morgen offline gaan, dan bleef een eenmaal geladen beoordeling controleerbaar.
Ter duiding van de namen: FALCON wordt momenteel als FN-DSA gestandaardiseerd; het ontwerp is als FIPS 206 voorzien, maar nog niet afgerond. Daarom heten de niveaus in de McGesund-code FN-DSA-512 en FN-DSA-1024, ook al wordt er in het spraakgebruik nog steeds over FALCON gesproken.
18. De belangrijkste intuïtie
De openbare sleutel is de volledige beschrijving van een doolhof. Iedereen mag haar bekijken.
De handtekening is het bewijs: „Ik heb voor precies deze beoordeling een zeer korte weg gevonden."
De private sleutel is de kennis van de sluiproutes.
De lezer hoeft de sluiproutes niet te kennen. Hij meet alleen na of de voorgelegde weg werkelijk kort is en werkelijk bij deze beoordeling hoort. Beide kan hij zonder ons.
Wie de tekst wijzigt, verschuift het punt — en de oude weg loopt dood.