Signaturverfahren
Ed25519 mathematisch erklärt
Die Unterschrift, die an jeder McGesund-Bewertung hängt — von der Kurve über den Schlüssel bis zu der Gleichung, die der Browser des Lesers nachrechnet.
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 diese Unterschrift verwenden wir Ed25519. Anders als FALCON und ML-DSA, die zusätzlich als Stempel danebengelegt werden können, ist Ed25519 keine Option: Jede signierte Bewertung trägt sie, unabhängig von Tarif und Abgabeweg.
Wichtig vorweg:
Ed25519 ist keine Verschlüsselung. Der Bewertungstext soll ja gelesen werden. Die Signatur 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 und alles Übrige 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>",
"kid": "<Schlüssel-ID>",
"iat": 1757203200
}
Dieses Objekt wird zu CBOR kodiert. Diese Bytefolge — nicht ihre hübsche Darstellung oben — ist unsere Nachricht . Signatur und Nachricht wandern zusammen in einen Umschlag:
Die ist die Formatversion. Mehr steht nicht darin — insbesondere keine Post-Quanten-Signatur: Die liegt, wenn es sie gibt, am Datensatz daneben und nicht im Umschlag.
3. Was die Signatur leisten soll
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, wird über die Schlüssel-ID (
kid) im Payload adressiert
Signiert wird mit dem privaten Schlüssel. Geprüft wird mit dem öffentlichen — und zwar im Browser des Lesers, nicht auf unserem Server. Das ist der Punkt: Eine Prüfung, die wir selbst durchführen und deren Ergebnis wir mitteilen, wäre keine Prüfung, sondern eine Behauptung.
4. Warum eine elliptische Kurve?
Jede Signatur braucht eine Rechnung, die in eine Richtung leicht und in die andere praktisch unmöglich ist. Bei Ed25519 ist das die Skalarmultiplikation auf einer elliptischen Kurve:
Aus der geheimen Zahl den öffentlichen Punkt zu berechnen, kostet Mikrosekunden. Aus zurück auf zu schließen, ist das diskrete Logarithmusproblem — dafür ist kein Verfahren bekannt, das bei dieser Größe in menschlichen Zeiträumen fertig wird.
Der praktische Gewinn gegenüber älteren Verfahren wie RSA ist die Größe:
| öffentlicher Schlüssel | Signatur | |
|---|---|---|
| RSA-3072 | 384 B | 384 B |
| Ed25519 | 32 B | 64 B |
Bei vergleichbarem Sicherheitsniveau. 64 Byte pro Bewertung sind auch bei Millionen Bewertungen keine Größe, über die man nachdenken muss.
5. Die Kurve edwards25519
Gerechnet wird modulo einer Primzahl:
Daher der Name. Die Kurve ist eine verdrehte Edwards-Kurve:
Ein „Punkt" ist ein Zahlenpaar aus , das diese Gleichung erfüllt. Es gibt keine Kurve zu sehen — die Zeichnung im nächsten Abschnitt ist eine Anschauungshilfe über den reellen Zahlen, kein Bild des tatsächlichen Rechenraums.
Zwei Größen kommen noch dazu:
- ein fest vereinbarter Basispunkt ,
- die Ordnung der von erzeugten Untergruppe:
ist prim. Das bedeutet: Rechnet man immer wieder zu sich selbst, durchläuft man genau verschiedene Punkte und landet dann wieder am Anfang. Alle Rechnungen mit Skalaren laufen deshalb modulo , alle Rechnungen mit Koordinaten modulo . Diese beiden Zahlen zu verwechseln, ist der klassische Anfängerfehler.
6. Punkte addieren
Zwei Punkte werden nach einer festen Formel zu einem dritten verrechnet:
Das neutrale Element ist — der Punkt, an dem das Rechnen anfängt.
Diese Formel hat eine Eigenschaft, die man ihr nicht ansieht und die für die Sicherheit wichtiger ist als jede Konstante: Sie ist vollständig. Sie funktioniert für alle Eingaben, ohne Sonderfälle für „beide Punkte gleich" oder „Ergebnis ist das neutrale Element". Bei den älteren Weierstraß-Kurven gibt es diese Sonderfälle, und jeder von ihnen ist ein Zweig im Programm — ein Zweig, dessen Laufzeit sich messen lässt. Wer misst, wie lange eine Signatur dauert, erfährt bei solchen Verfahren etwas über den geheimen Schlüssel.
Vollständige Formeln heißen: immer derselbe Rechenweg, immer dieselbe Zeit, nichts zu messen.
7. Skalarmultiplikation — die Einbahnstraße
heißt: genau -mal zu sich selbst addieren. Bei einem mit 253 Bit wäre das sinnlos viel Arbeit — deshalb wird verdoppelt:
und aus diesen Zwischenergebnissen das gewünschte zusammengesetzt. Rund 253 Verdopplungen genügen für jedes . Das ist der Weg vorwärts.
Rückwärts gibt es diese Abkürzung nicht. Aus dem Punkt die Zahl zu bestimmen, heißt das diskrete Logarithmusproblem zu lösen.
Im echten Verfahren wird modulo gerechnet. Dort gibt es kein „links", kein „rechts" und keine Nähe: Aus und werden zwei Zahlenpaare ohne jede erkennbare Verwandtschaft.
8. Das Schlüsselpaar des Signaturdienstes
Am Anfang stehen 32 zufällige Bytes, der Seed. Alles Weitere wird daraus abgeleitet:
Aus der ersten Hälfte entsteht der geheime Skalar , allerdings nicht unverändert. Drei Bits werden gesetzt beziehungsweise gelöscht — das sogenannte Clamping:
- die untersten drei Bits werden auf null gesetzt: wird dadurch ein Vielfaches von 8. Der Grund ist der Kofaktor 8 der Kurve — die volle Punktgruppe ist achtmal so groß wie die Untergruppe der Ordnung . Ein durch 8 teilbares landet garantiert in der richtigen Untergruppe und verrät über Punkte kleiner Ordnung nichts.
- das oberste Bit wird gelöscht, das zweitoberste gesetzt: hat damit immer dieselbe Bitlänge. Ein kürzeres bräuchte weniger Verdopplungen — und wieder wäre an der Laufzeit etwas abzulesen.
Der öffentliche Schlüssel ist dann schlicht
gespeichert als 32 Byte: die -Koordinate, und im höchsten Bit das Vorzeichen von . Das rechnet der Prüfer selbst aus der Kurvengleichung zurück — beide Lösungen unterscheiden sich nur im Vorzeichen, und welche gemeint ist, sagt dieses eine Bit.
Die zweite Hälfte des Hashwerts, das Präfix, wird nicht für den Schlüssel gebraucht. Sie kommt im nächsten Abschnitt zum Einsatz.
9. Warum der Zufall hier kein Zufall ist
Jede Signatur dieser Bauart braucht einen einmaligen Wert , oft Nonce genannt. Er darf sich niemals wiederholen: Wer zwei Signaturen mit demselben hat, kann den geheimen Schlüssel mit Schulalgebra herausrechnen.
Genau daran sind reale Systeme gescheitert. Der bekannteste Fall ist die Signaturprüfung einer Spielkonsole, deren Hersteller 2010 immer denselben Nonce verwendete — der private Schlüssel war damit öffentlich rekonstruierbar.
Ed25519 löst das, indem es gar keinen Zufall verwendet:
Der Nonce hängt am geheimen Präfix und an der Nachricht. Daraus folgt zweierlei:
- Zwei verschiedene Bewertungen ergeben mit überwältigender Wahrscheinlichkeit verschiedene — der Wiederholungsfall tritt nicht ein.
- Dieselbe Bewertung ergibt immer dieselbe Signatur. Ein Signiervorgang lässt sich damit nachvollziehen, und ein schlechter Zufallsgenerator auf dem Server kann nichts kaputt machen, weil keiner gebraucht wird.
Für ein Bewertungsportal mit vielen Signaturen pro Tag ist das kein akademischer Vorteil. Es ist der Unterschied zwischen „ein Fehler in der Zufallsquelle wäre fatal" und „es gibt keine Zufallsquelle, die ausfallen könnte".
10. Signieren
Drei Zeilen, mehr ist es nicht:
Die Signatur ist das Paar
32 Byte für den Punkt , 32 Byte für die Zahl — zusammen 64 Byte.
Beachtenswert ist die zweite Zeile: In gehen , der öffentliche Schlüssel und die Nachricht ein. Dass mitgehasht wird, ist kein Beiwerk — es verhindert Angriffe, bei denen eine Signatur auf einen anderen Schlüssel umgedeutet wird.
11. Prüfen
Der Browser des Lesers kennt: die Bewertung , die Signatur und den öffentlichen Schlüssel . Er rechnet neu aus und prüft eine einzige Gleichung:
Stimmt sie, ist die Signatur gültig. RFC 8032 erlaubt zusätzlich die mit dem Kofaktor multiplizierte Fassung , die einige Randfälle großzügiger behandelt.
Kein Server wird gefragt, kein Dienst muss verfügbar sein. Der öffentliche Schlüssel genügt.
12. Warum die Gleichung aufgeht
Einsetzen genügt:
Der ganze Trick steckt in der mittleren Umformung: Die Skalarmultiplikation verträgt sich mit der Addition. Wer kennt, kann ein ausrechnen, das die Gleichung erfüllt. Wer nicht kennt, müsste zu einem selbst gewählten ein passendes finden — und das heißt, den diskreten Logarithmus zu lösen.
13. Ein vollständig durchgerechnetes Mini-Beispiel
Mit den echten Zahlen ist nichts nachzurechnen — 253-Bit-Werte lassen sich nicht im Kopf prüfen. Deshalb dasselbe Verfahren in einer winzigen Gruppe, in der jeder Schritt mit dem Taschenrechner nachvollziehbar ist.
Schritt 1: Die Gruppe
Wir rechnen mit den Resten modulo und nehmen . Es gilt
erzeugt also eine Untergruppe der Ordnung . Die Potenzen sind:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | 4 | 8 | 16 | 9 | 18 | 13 | 3 | 6 | 12 | 1 |
übernimmt die Rolle des Basispunkts , die Multiplikation die der Punktaddition. Skalare rechnen modulo , Werte modulo .
Schritt 2: Das Schlüsselpaar
Geheim sei . Dann ist
darf jeder wissen.
Schritt 3: Nonce und Commitment
Aus Präfix und Bewertung ergebe sich . Daraus:
Schritt 4: Die Challenge
Der Hash über , und die Bewertung liefere
Schritt 5: Die Signatur
Die Signatur ist das Paar .
Schritt 6: Der Browser prüft
Er rechnet beide Seiten aus. Links:
Rechts, mit :
Beide Seiten ergeben :
Schritt 7: Jemand ändert den Bewertungstext
Der Text wandert in den Hash, also ändert sich die Challenge — sagen wir auf . Die Signatur bleibt unverändert bei , die rechte Seite aber nicht. Mit :
Wir können eine Bewertung löschen. Verändern können wir sie nicht, ohne dass es auffällt.
Ehrlichkeitshinweis zum Beispiel
Gerechnet wurde hier in der multiplikativen Gruppe modulo , nicht auf einer Kurve: steht für , das Produkt für die Punktaddition . Die Struktur ist dieselbe, und genau darum geht es. Verschieden sind die Größenordnungen: gegenüber , und dort ist der Schlüssel nicht durch Ausprobieren der elf Möglichkeiten zu finden.
14. Was passiert, wenn jemand die Bewertung ändert
Angenommen, jemand mit Datenbankzugriff — auch jemand bei uns — ändert den Bewertungstext oder eines der Herzen. Dann ändert sich der Datensatz und damit mindestens einer der beiden Hashwerte h und rh im Payload. Damit ändert sich , damit die Challenge , damit die rechte Seite der Prüfgleichung. Die alte Signatur passt nicht mehr.
Der entscheidende Satz dazu: Wir können eine Bewertung löschen, aber wir können sie nicht unbemerkt verändern. Bei McGesund läuft dieselbe Prüfung zusätzlich nächtlich serverseitig über den Bestand — eine Bewertung, die sie nicht besteht, fließt nicht mehr in den Schnitt des Unternehmens ein.
15. Warum ein Angreifer scheitert
Er kennt den öffentlichen Schlüssel , den Basispunkt , die Kurve und jede bisher ausgestellte Signatur. Was ihm fehlt, ist .
Der beste bekannte klassische Angriff auf das diskrete Logarithmusproblem in einer Gruppe der Ordnung braucht etwa Schritte. Bei sind das rund
Operationen. Zum Vergleich: Selbst eine Maschine, die eine Milliarde Milliarden () Schritte pro Sekunde schafft, bräuchte dafür ein Vielfaches des Alters des Universums.
Fälschen ohne den Schlüssel hieße, zu einem selbst gewählten ein passendes zu finden — dieselbe Aufgabe in anderer Verkleidung.
16. Warum Ed25519 und nicht ECDSA
Beide beruhen auf demselben Problem. Der Unterschied liegt in allem, was drumherum passiert:
| ECDSA (NIST-Kurven) | Ed25519 | |
|---|---|---|
| Nonce | frischer Zufall nötig | deterministisch aus Präfix und Nachricht |
| Formeln | Sonderfälle, datenabhängige Zweige | vollständig, ein Rechenweg |
| Kurvenparameter | Herkunft der Konstanten nie vollständig erklärt | aus nachvollziehbaren Kriterien gewählt |
| Signaturgröße | 64–72 B, variable Kodierung | fest 64 B |
| Im Browser | seit langem verfügbar | seit 2023/2024 nativ, sonst als JS-Bibliothek |
Für uns war der Nonce das Ausschlagargument. Ein Bewertungsportal signiert oft und automatisiert; ein Verfahren, bei dem ein einziger schwacher Zufallswert den Schlüssel preisgibt, ist dafür die falsche Wahl.
17. Was Ed25519 nicht leistet
Ed25519 beruht auf dem diskreten Logarithmus — und genau dieses Problem löst ein hinreichend großer Quantencomputer mit dem Algorithmus von Shor effizient. Ob und wann es solche Maschinen gibt, ist offen. Für eine Bewertung, die in zehn Jahren noch nachprüfbar sein soll, ist das trotzdem eine Frage, die man heute beantworten muss.
Deshalb kann neben die Ed25519-Signatur ein quantenresistenter Stempel treten:
- FALCON (FN-DSA) — kompakte Signaturen aus NTRU-Gittern
- ML-DSA-87 (FIPS 204) — der abgeschlossene NIST-Standard
Beide ersetzen Ed25519 nicht, sie legen sich daneben. Bricht eines der Verfahren, trägt das andere weiter.
18. Der Ablauf im Bild
19. Was McGesund konkret damit macht
Der Envelope. Jede signierte Bewertung trägt einen MCG1:-Umschlag mit Formatversion, Payload und Ed25519-Signatur. Die kid im Payload sagt, welcher Schlüssel gemeint ist; den zugehörigen öffentlichen Schlüssel liefert der Server auf Anfrage aus — er ist öffentlich, es gibt daran nichts zu schützen.
Die Prüfung im Browser. Chrome und Firefox können Ed25519 seit 2023/2024 nativ über die WebCrypto-Schnittstelle. Safari nicht — dort wirft der Aufruf, statt zu prüfen. Deshalb fällt unser Prüfcode auf eine reine JavaScript-Implementierung zurück, die nur dort nachgeladen wird, wo sie gebraucht wird. Die Signaturprüfung läuft damit in jedem Browser durch, und zwar auf dem Gerät des Lesers.
Der Zeitanker. Der Fingerabdruck des Signaturschlüssels wird über OpenTimestamps in einem Bitcoin-Block verankert. Damit lässt sich nicht nur belegen, dass die Signatur echt ist, sondern auch, dass der Schlüssel zu einem bestimmten Zeitpunkt bereits existierte — ohne dass jemand unserem Zeitstempel glauben müsste.
Die Inhaltsbindung. Der Payload trägt rh, den Hash über den gesamten Abgabe-Datensatz: Text, Herzen, Geo-Status, Anlass-Angaben und Herkunft. Die Ed25519-Signatur bindet damit nicht nur den Text, sondern alles, was neben der Bewertung angezeigt wird.
20. Ein Satz zum Mitnehmen
Wer den geheimen Skalar besitzt, unterschreibt in Mikrosekunden. Wer ihn nicht besitzt, müsste einen diskreten Logarithmus in einer Gruppe mit rund Elementen lösen.
Für den Leser einer Bewertung heißt das schlicht: Er muss uns nicht glauben. Er kann nachrechnen.