Signaturverfahren
FALCON mathematisch erklärt
Wie eine McGesund-Bewertung mit FN-DSA (FALCON) unterschrieben wird — und warum ein geändertes Zeichen die Unterschrift bricht.
Stand: 2026-09-07
1. Worum es hier geht
Eine Bewertung bei McGesund ist kein Textfeld in einer Datenbank, dem man glauben muss. Sie wird beim Absenden digital signiert, und jeder Besucher kann diese Signatur später im eigenen Browser nachrechnen.
Für einen Teil dieser Signaturen verwenden wir FALCON — genauer FN-DSA-512 und FN-DSA-1024. Dieser Beitrag erklärt, was dabei mathematisch passiert.
Wichtig vorweg:
FALCON ist keine Verschlüsselung. Der Bewertungstext soll ja gelesen werden. FALCON beweist nicht Geheimhaltung, sondern Herkunft und Unversehrtheit.
2. Was genau unterschrieben wird
Signiert wird nicht der Fließtext, sondern ein kompaktes Datenobjekt, das den Text eindeutig festnagelt:
{
"v": 1,
"typ": "rev-comment",
"f": "<Firmen-ID>",
"c": "<Bewertungs-ID>",
"h": "<SHA-256 des Bewertungstexts>",
"rh": "<SHA-256 des ganzen Abgabe-Datensatzes>",
"rv": 1,
"qh": "<SHA-256 des QR-Envelopes, nur bei QR-Bewertungen>",
"iat": 1757203200
}
Das ist unsere Nachricht . Sie bindet zusammen:
- zu welchem Unternehmen die Bewertung gehört (
f), - um welche Bewertung es geht (
c), - welcher Text dahinterstand — als Hashwert (
h), - welcher Datensatz insgesamt abgegeben wurde (
rh): Text, Herzen, Geo-Status und Anlass-Angaben, kanonisch serialisiert und gehasht, in der Schema-Versionrv, - aus welchem QR-Code die Bewertung stammt (
qh) — bei einer Bewertung ohne QR entfällt das Feld, - wann signiert wurde (
iat).
Ein geändertes Zeichen im Bewertungstext bricht diese Kette. Genau das ist der Zweck — und seit rh gilt dasselbe für ein nachträglich verschobenes Herz oder einen geänderten Geo-Status.
3. Das Grundproblem
Ein Leser, der auf ein Unternehmensprofil kommt, steht vor zwei Fragen:
- Stammt diese Bewertung wirklich aus dem McGesund-System?
- Wurde sie nachträglich verändert?
Dafür gibt es ein Schlüsselpaar:
- einen privaten Schlüssel — bleibt im Signaturdienst
- einen öffentlichen Schlüssel — darf jeder haben
Signiert wird mit dem privaten, geprüft mit dem öffentlichen Schlüssel. Und zwar auf dem Gerät des Lesers, nicht auf unserem Server.
4. Warum FALCON?
Viele heutige Signaturverfahren beruhen auf Problemen, die für klassische Rechner schwer sind, für hinreichend große Quantencomputer aber deutlich leichter werden könnten.
Bei einer Bewertung ist das relevanter als bei einer flüchtigen Nachricht: Eine Bewertung soll in fünf oder zehn Jahren noch überprüfbar sein. Wer heute unterschreibt, unterschreibt für die gesamte Lebensdauer des Eintrags.
FALCON beruht deshalb auf Gitterkryptografie:
Man baut ein mathematisch einfach beschreibbares Gitter, in dem eine bestimmte Suchaufgabe extrem schwer ist.
5. Was ist ein mathematisches Gitter?
Zwei Vektoren:
Alle ganzzahligen Kombinationen
ergeben ein Gitter aus Punkten. Zum Beispiel:
Entscheidend ist:
Das Gitter selbst ist leicht zu beschreiben. Bestimmte Eigenschaften darin zu finden, ist sehr schwer.
6. Das Geheimnis sind kurze Vektoren
Die klassische schwere Aufgabe lautet:
Das ist das Shortest Vector Problem. In zwei Dimensionen kann man es durchprobieren. FALCON arbeitet in Dimension 512 oder 1024 — dort ist es aussichtslos.
FALCON braucht allerdings nicht den kürzesten Vektor schlechthin, sondern etwas Verwandtes: zu einem vorgegebenen Zielpunkt einen nahen Gitterpunkt zu finden. Auch das ist ohne die richtige Zusatzinformation schwer.
7. Polynome statt Zahlen
FALCON verwendet ein NTRU-Gitter und rechnet mit Polynomen. Statt einzelner Zahlen also mit Koeffizientenlisten:
Gerechnet wird im Ring
Das bedeutet:
- : Rechnen modulo . Bei etwa , denn .
- : hält die Polynome auf fester Länge.
FALCON verwendet konkret:
8. Der zentrale Trick
Der private Schlüssel besteht aus vier kleinen Polynomen
mit der NTRU-Gleichung
Diese vier bilden zusammen eine geheime, gutartige Gitterbasis — eine Beschreibung des Gitters aus kurzen Vektoren.
Der öffentliche Schlüssel ist im Wesentlichen ein einziges Polynom:
Aus ergibt sich dasselbe Gitter, aber in einer unhandlichen Basis aus langen Vektoren:
Das ist der ganze Kern von FALCON. Beide Basen beschreiben dasselbe Gitter. Nur ist die eine zum Rechnen brauchbar und die andere nicht.
Man kann sich das wie einen Stadtplan vorstellen: Öffentlich ist die vollständige Karte. Geheim ist die Kenntnis der Abkürzungen.
9. Die Bewertung wird zu einem Punkt
Bevor signiert wird, geht das Payload-Objekt durch eine Hash-Funktion. FALCON nutzt dafür Hash-to-Point: Aus der Nachricht wird kein Zahlenwert, sondern direkt ein Punkt im Ring.
Zusätzlich zieht der Signaturdienst ein zufälliges Salt (320 Bit) und hasht es mit:
Das Salt ist kein Beiwerk. Ohne es würde dieselbe Bewertung immer dieselbe Signatur ergeben, und aus vielen Signaturen ließe sich die geheime Basis rekonstruieren. Es wandert deshalb mit in die Signatur.
10. Was eine gültige Signatur ist
Gesucht ist ein Paar
mit zwei Eigenschaften:
Die erste Bedingung allein ist trivial zu erfüllen — man setzt und . Die zweite Bedingung macht die Aufgabe schwer.
11. Ein vollständig durchgerechnetes Mini-Beispiel
Wir schrumpfen alles auf Spielzeuggröße: Polynome mit nur einem Koeffizienten, also gewöhnliche Zahlen, und
Der geheime Schlüssel. Zwei kleine Zahlen:
Der öffentliche Schlüssel. Es ist , denn . Also:
Das Gitter. .
Die öffentliche Basis ergibt sich direkt aus :
Beide liegen in — und beide sind lang.
Die geheime Basis kennt nur der Signaturdienst:
denn und . Die Determinante ist
die NTRU-Gleichung geht also auf. Beide Vektoren sind kurz.
Schritt 1: Die Bewertung hashen
Nehmen wir an, das Payload-Objekt der Bewertung ergibt
Schritt 2: Eine erste, schlechte Lösung
erfüllt . Aber die Länge ist — viel zu lang.
Schritt 3: Mit der geheimen Basis kürzen
Der Signaturdienst drückt den Zielpunkt in seiner kurzen Basis aus:
Das führt auf und . Gerundet auf , ergibt sich der Gitterpunkt
Kontrolle: , also tatsächlich in . Abziehen:
Länge:
Das ist die Signatur.
Schritt 4: Dasselbe Verfahren mit der öffentlichen Basis
Wer nur kennt, hat die Basis . Dieselbe Rundungsrechnung liefert dort den Gitterpunkt und damit
Ebenfalls eine gültige Lösung der Gleichung — aber siebenmal länger. Wird die Annahmeschranke unterhalb von 26 gesetzt, ist sie wertlos.
Das ist die Falltür von FALCON in einer Zeile.
Schritt 5: Der Browser prüft
Der Browser bekommt die Bewertung, das Salt und . Er berechnet den Hash neu, erhält , rekonstruiert
und prüft die Länge:
Schritt 6: Jemand ändert den Bewertungstext
Wird der Text nachträglich geändert, ändert sich der Content-Hash und damit der Punkt, sagen wir
Die alte Signatur bleibt , aber
Wir können eine Bewertung löschen. Verändern können wir sie nicht, ohne dass es auffällt.
Ehrlichkeitshinweis zum Beispiel
In zwei Dimensionen kann ein Angreifer kurze Lösungen einfach durchprobieren — für etwa . Das Beispiel ist nicht sicher; es zeigt nur den Mechanismus. Bei FALCON-1024 hat der Vektor 2048 Koeffizienten, und dort führt Durchprobieren nirgendwohin.
12. Warum wird nicht einfach gerundet?
Das Verfahren aus Schritt 3 heißt Babai-Rundung. Für ein Lehrbeispiel genügt es — für ein echtes Signaturverfahren nicht.
Der Grund: Die gerundeten Signaturen liegen nicht gleichmäßig verteilt. Ihre Form hängt von der Geometrie der geheimen Basis ab. Aus genügend vielen Signaturen ließe sich diese Geometrie rekonstruieren — und damit der private Schlüssel. Genau daran sind frühere gitterbasierte Signaturverfahren gescheitert.
FALCON zieht die kurzen Vektoren deshalb aus einer diskreten Gaußverteilung über dem Gitter:
Werte nahe am Zielpunkt sind wahrscheinlicher, aber welcher genau gewählt wird, ist zufällig. Das Ergebnis ist eine Verteilung, die nichts über die verwendete Basis verrät — mathematisch: Sie ist nicht von einer Verteilung unterscheidbar, die nur vom Gitter selbst abhängt.
Dieser Sampler ist der anspruchsvollste Teil von FALCON. Er läuft rekursiv über eine Baumstruktur und arbeitet mit Fließkommazahlen — was die Implementierung heikel macht und der Hauptgrund dafür ist, dass FALCON schwerer korrekt umzusetzen ist als ML-DSA.
13. Was tatsächlich übertragen wird
Die Signatur besteht aus
Nur — nicht das Paar. rechnet der Prüfer selbst aus:
Da die Koeffizienten von klein sind und um null streuen, lassen sie sich stark komprimieren. Das ist der Grund für FALCONs auffällig kompakte Signaturen:
| öffentlicher Schlüssel | Signatur | |
|---|---|---|
| FALCON-512 | 897 B | ~666 B |
| FALCON-1024 | 1.793 B | ~1.280 B |
Zum Vergleich: ML-DSA-87 braucht 4.627 Byte. Bei McGesund steckt allerdings keine dieser Signaturen im QR-Code selbst — der Aufkleber trägt nur den Ed25519-Envelope; die PQ-Stempel liegen am Datensatz und werden beim Prüfen nachgeladen. Die Größe entscheidet hier also nicht über die Druckbarkeit, sondern über Speicher und Übertragung: Ein FALCON-Stempel ist gut ein Viertel so groß wie ein ML-DSA-Stempel.
14. Warum FALCON schnell prüft
Polynommultiplikation naiv kostet
Mit der schnellen Fourier-Transformation sinkt das auf ungefähr
Bei ist das der Unterschied zwischen einer Million und rund zehntausend Operationen. Deshalb läuft die Prüfung im Browser eines Besuchers in Millisekunden — und deshalb steckt das F im Namen:
FAst Fourier Lattice-based COmpact signatures over NTRU.
15. Der Ablauf im Bild
16. Warum ein Angreifer scheitert
Er kennt und damit das gesamte Gitter. Er kennt auch den Zielpunkt , sobald die Bewertung öffentlich ist. Was ihm fehlt, ist die kurze Basis.
Um eine Bewertung zu fälschen, müsste er zu einem selbst gewählten einen kurzen Vektor finden — allein aus der öffentlichen Beschreibung. Das ist die Aufgabe, die Schritt 4 des Beispiels illustriert hat: Ohne die guten Vektoren landet dieselbe Rechnung bei einer viel zu langen Lösung.
In Dimension 1024 sind die besten bekannten Verfahren — klassisch wie quantenbasiert — davon weit entfernt.
17. Was McGesund konkret damit macht
Der Envelope. Jede signierte Bewertung trägt eine Ed25519-Signatur. Das ist die Pflichtvariante — klassisch, sehr klein, in jedem Browser nativ prüfbar.
Die Post-Quanten-Stempel. Daneben liegen ein oder zwei quantenresistente Signaturen. Welche, hängt am Tarif:
| Tarif | verfügbare Signaturstufen |
|---|---|
| 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 |
Die parallele Variante ist bewusst redundant. FALCON steht auf NTRU-Gittern, ML-DSA auf Module-Gittern. Sollte eine der beiden Familien schwächer sein als heute angenommen, trägt die andere weiter.
Der Zeitanker. Der Fingerabdruck des Signaturschlüssels wird über OpenTimestamps in einem Bitcoin-Block verankert. Damit ist nicht nur belegt, dass die Signatur echt ist, sondern auch, dass sie zu einem bestimmten Zeitpunkt schon existierte — ohne dass jemand unserem Zeitstempel glauben müsste.
Gerechnet wird all das im Browser des Lesers, über ein WASM-Modul. Wir liefern die Daten; die Prüfung läuft auf dem Gerät des Besuchers. Gingen wir morgen vom Netz, bliebe eine einmal geladene Bewertung überprüfbar.
Zur Einordnung der Namen: FALCON wird derzeit als FN-DSA standardisiert; der Entwurf ist als FIPS 206 vorgesehen, aber noch nicht abgeschlossen. Deshalb heißen die Stufen im McGesund-Code FN-DSA-512 und FN-DSA-1024, auch wenn im Sprachgebrauch weiterhin von FALCON die Rede ist.
18. Die wichtigste Intuition
Der öffentliche Schlüssel ist die vollständige Beschreibung eines Labyrinths. Jeder darf sie ansehen.
Die Signatur ist der Nachweis: „Ich habe für genau diese Bewertung einen sehr kurzen Weg gefunden."
Der private Schlüssel ist die Kenntnis der Abkürzungen.
Der Leser muss die Abkürzungen nicht kennen. Er misst nur nach, ob der vorgelegte Weg tatsächlich kurz ist und tatsächlich zu dieser Bewertung gehört. Beides kann er ohne uns.
Wer den Text ändert, verschiebt den Punkt — und der alte Weg führt ins Leere.